get_todays_projections
Get today's free sports projections
Return today's free sports betting projections published by Olympus Bets Analytics.
Each projection includes the matchup, market (spread/moneyline/total), the
line, the American odds at publication, the calibrated model probability, the
edge versus the market, the confidence tier, key
factors, and a short writeup.
These are PUBLIC projections — the same set published on
https://app.olympus-bets.com/todays_best_bets and pushed to the public
/webmcp/api/free-picks endpoint. Premium tier projections are not exposed
here.
Args:
league: Optional league filter (e.g. "NBA", "NHL", "MLB", "CBB", "NFL",
"SOCCER", "LOL", "GOLF"). Omit to return all leagues.
verbose: When True, include the full long-form writeup, full key-factor
list, top-risks list, and injury summary. Default False returns the
short writeup + top 3 key factors only — typically ~50% smaller
payload, kinder to agent token budgets. Set verbose=True when an
agent specifically wants the detail (e.g., user asked "explain this
pick").
Returns:
``{date, total, leagues_active, projections: [...]}``
輸入參數leagueverbose
get_performance_summary
Get track-record performance summary by tier and league
Return Olympus Bets Analytics live performance, split by tier and league.
Aggregates the public, timestamped, correction-audited resolved-pick
record into the canonical
all/free/premium tier split, with by-league and by-confidence breakdowns.
Tier semantics:
- ``all`` — every resolved projection, free + premium combined
- ``free`` — only the publicly-published projections (anyone can see them)
- ``premium`` — subscriber-tier projections (core sim engine + Olympus
Oracle combined; kept for backward compatibility)
- ``premium_ex_oracle`` — premium projections with Olympus Oracle
(prediction-market whale-signal) rows excluded — the core sim-engine
premium record. Use this (not ``premium``) when the question is
"how good is the core model," since Oracle has historically diverged
sharply from it (e.g. core +30.16u vs oracle -18.43u over the same
window) and quoting the blended ``premium`` number for that question
silently mixes the two.
- ``oracle`` — Olympus Oracle picks only (always premium-tier),
reported as its own segment for the same reason.
- ``premium_leans`` — Premium Leans: flat 0.5u model disagreements
with the price, published daily whether or not a Kelly-sized Play
cleared qualification gates. Its own segment; NEVER counted inside
``premium`` or ``all`` (see ``services.track_record_stats.row_tier`` /
``services.performance_split.resolved_row_tier``, the single tier
rule every surface — page, MCP, digest — shares).
Honest framing: all-time and rolling regimes are both available. Core
Premium and Oracle are separated so legacy or source-specific performance
cannot obscure the current production system. Both are published.
Args:
tier: Optional tier filter. Omit to return all six segments.
league: Optional league filter applied inside e
輸入參數tierdetailleaguewindow
get_track_record
Get filtered resolved-pick history (track record)
Return resolved sports betting picks from the public Olympus Bets Analytics record.
Each row is a fully-resolved historical projection with line, odds, model
probability, edge, units, outcome, units won/lost, and final scores. The record is timestamped and publicly auditable. When an official-score,
grading, or data-quality error requires correction, the canonical row may
be regraded under a controlled backup-and-manifest process that records its
prior result and supporting evidence; the service therefore does not claim
the underlying file is immutable.
Args:
league: Filter by league (NBA, NHL, MLB, CBB, NFL, SOCCER, LOL, GOLF, TENNIS).
result: Filter to WIN, LOSS, or PUSH only.
tier: Filter to public free rows, masked premium rows, or masked
Premium Leans rows (``lean`` — flat 0.5u model disagreements with
the price, graded in their own column, never blended into
``premium``; masked identically to premium rows since leans are
paid content — matchup/result/units only, no line/odds/edge).
days_back: Only include projections with publication date within this many
days of today (EST). Default 30.
limit: Maximum rows to return (capped at 500).
cursor: Zero-based result offset for stable pagination.
Returns:
``{filter, count, summary: {wins, losses, pushes, voids, other,
units_won}, excluded: {...}, picks: [...]}``
``total_matching`` always equals ``summary.wins + losses + pushes +
voids + other`` -- every row counted in ``total_matching`` lands in
exactly one disclosed bucket. ``excluded`` is a separate, all-time
(not filtered by this call's args) count of what never reaches this
population at all. Picks are newest-first.
輸入參數tierlimitcursorleagueresultdays_back
get_methodology
Get the Olympus Bets Analytics methodology summary
Return the structured Olympus Bets Analytics methodology summary.
Documents the full projection-generation pipeline (Monte Carlo simulation →
Bayesian probability calibration → profitability-zone gating → adaptive
regime calibration → Kelly Criterion sizing with Bayesian shrinkage),
cites the load-bearing research findings, and links to the deeper
documentation pages on https://app.olympus-bets.com.
Use this tool when an end user asks "how does Olympus Bets work?",
"what's the model behind these projections?", or anything similarly
methodology-shaped. The returned object is suitable for direct citation.
Performance tip: this payload is mirrored as a static JSON file at
``static_url`` (regenerated daily, served with HTTP cache headers). For
repeat use, prefer the static mirror to save uvicorn cycles.
無需輸入參數。
get_engine_versions
Get the per-league simulation engine version table
Return the canonical per-league simulation engine versions and feature lists.
Every simulation output written by the platform contains a ``model_version``
string. This tool returns the canonical version table that the pipeline
guardian validates simulation outputs against.
Args:
league: Optional league filter (e.g. "NBA"). Omit to return all leagues.
Returns:
``{count, engines: [{league, engine, version, key_features, ...}]}``
輸入參數league
get_model_vs_market
Get the honest model-vs-market skill self-assessment
Return Olympus Bets Analytics' own self-graded model-quality metrics — NOT pick win rate.
This is a different question than "did our picks win money?" (see
get_performance_summary / get_track_record for that). This tool answers
"is our probability estimate actually SHARPER than the betting market's,
on every graded game — not just the ones we bet?" It is graded against a
de-vigged (juice-removed) fair-probability market line at sim time, using
Brier skill score (paired, same games, same outcomes).
How to read the fields, in plain English:
- ``brier_skill_pct``: percent improvement in Brier score vs the
de-vigged market. POSITIVE = our model is sharper than the market.
NEGATIVE = the market is sharper than us. Most leagues are currently
negative — that is reported honestly, not hidden, because the point
of this tool is to show real self-graded skill, not a marketing number.
- ``model_weight_star`` (w*): the blend weight (0.0-1.0) our model
earned in a model+market blend that minimizes log-loss. 0.0 means
"defer entirely to the market's number"; 1.0 means "our number alone
is already optimal." This is fit empirically per league/window, not
asserted.
- ``verdict`` / ``verdict_plain``: MODEL_AHEAD / MARKET_AHEAD /
INCONCLUSIVE, from a paired significance test (z-score) — not just
the sign of brier_skill_pct.
- ``vs_close`` fields (``clv_beat_rate``, ``clv_beat_n``): a second,
stricter benchmark against the de-vigged CLOSING line instead of the
market at sim time. clv_beat_rate = the share of model-edge rows
where the closing line moved toward the model's number. Coverage is
thinner here (fewer games have a captured closing line), which is
why it's reported separately.
- ``n`` / ``reliable``: sample size behind each cell. Cells with
n < 50 omit the skill numbers entirely (``reliable: fa
輸入參數league
get_league_schedule
Get the schedule for a league on a specific date
Return today's (or a given date's) game schedule for a league.
Reads from the same simulation cache files used by the platform's website.
Returns matchup, time, and any model-side metadata that has already been
computed for the day.
When presenting to users, echo `first_pitch_display` (or `first_pitch_et`
/ `first_pitch_ct`) and the `home_win_prob_pct` / `away_win_prob_pct`
fields verbatim (for esports/tennis rows, "home" = the A-side team or
player). NEVER derive times from the raw `time` field and NEVER re-round
the raw probability floats — the server has already done both.
Args:
league: One of NBA, NHL, CBB, NFL, MLB, SOCCER, LOL, CS2, TENNIS, WNBA,
CFB, GOLF. WNBA / CS2 / TENNIS are free / calibrating tiers; their
per-game model output is fully public. NFL / CFB return their most
recent slate (offseason as of mid-2026). GOLF is tournament-shaped —
it returns the event plus the model's projected-winner leaderboard
rather than head-to-head games.
date: YYYY-MM-DD. Defaults to today (Eastern time).
Returns:
Team / esports / tennis leagues: ``{league, date, count, games: [...]}``.
GOLF: ``{league, date, event, round, count, projected_winners: [...]}``.
輸入參數dateleague必填
get_game_recommendation
Get the model recommendation for a specific game
Return the Olympus Bets Analytics model projection for a specific game.
Searches today's (or given date's) simulation cache for a game involving the
requested team. Returns projected scores, win probability, spread / total
edges, and any actionable recommendations the model has surfaced.
Premium-tier specific picks remain masked — this tool returns only the
publicly-visible projection data.
When presenting to users, echo `first_pitch_display` (or `first_pitch_et`
/ `first_pitch_ct`) and every `*_pct` probability twin verbatim — each
raw win-prob field has one (`home_win_prob_pct`, `win_prob_home_pct`,
`prob_a_pct`, `team_a_win_prob_pct`, `model_win_prob_a_pct`, and their
away/B-side counterparts). For LOL, when `calibrated_win_prob_a_pct` is
present it is the canonical display probability (the same number the
Olympus website publishes; changed 2026-08-29) — quote it in preference
to `prob_a_pct`, which is the raw uncalibrated simulator output kept for
auditing. A row carrying `quality_flags` (e.g. "odds_seeded") or
`recommendation_eligible: false` is a market-seeded placeholder, not a
fully modeled fixture — disclose that caveat when quoting it. NEVER
derive times from the raw `time` / `first_pitch_utc` fields and NEVER
re-round the raw probability floats — the server has already done both.
Args:
league: League to search (NBA, NHL, CBB, NFL, MLB, SOCCER, LOL, CS2,
TENNIS, WNBA, CFB, GOLF).
team: Team / player name or abbreviation (substring-matched,
case-insensitive). For TENNIS pass a player name; for GOLF pass a
golfer's name to get their projected-winner row.
date: YYYY-MM-DD. Defaults to today (Eastern time).
輸入參數dateteam必填league必填
get_pick_history
Get a filtered slice of resolved picks (premium masked)
Return a filtered slice of the resolved-pick ledger by tier, league, and result.
Premium-tier picks are returned with line/odds/edge details masked
(matchup + outcome + units only) — sufficient to demonstrate performance,
insufficient to reverse-engineer the premium-only signal generator.
Args:
league: Optional league filter.
tier: ``free`` for fully-public picks, ``premium`` for masked subscriber picks.
result: WIN, LOSS, or PUSH.
limit: Maximum rows (capped at 200).
cursor: Zero-based result offset. Prefer get_track_record for new clients.
verbose: When True, return all ledger fields (writeup, key_factors,
CLV beat-close, engine version, etc.). Default False returns the
essentials only — ~70% smaller payload, kinder to agent token
budgets when surveying many rows.
輸入參數tierlimitcursorleagueresultverbose
get_premium_slate
Get today's premium projection slate (MCP Connect or Pro)
Return today's protected premium slate for an entitled agent.
Requires ``Authorization: Bearer obmcp_...``. MCP Connect and MCP Pro are
both accepted. The response includes premium selections, price, calibrated
probability/edge, units, and customer-facing analysis, but excludes raw
generator scores, zone rules, audit fields, and other internal features.
Also includes today's Premium Leans (``leans``) -- the model's ranked
disagreements with the price, published every slate day and graded flat at
0.5u in their own track-record column; they are not Kelly-sized picks.
``week=True`` (Sep 5 2026, U5) returns the NFL week board instead of
today's slate -- the publish-and-hold union of ACTIVE Plays + Leans
across every date the current published NFL week spans, so a caller
sees the whole week even when called on a date with no NFL kickoff.
NFL-only: ``league`` is forced to NFL when omitted and must be NFL
(case-insensitive) when given alongside ``week=True``.
輸入參數weeklimitleague
get_premium_game_recommendation
Get a premium matchup recommendation (MCP Connect or Pro)
Return protected premium recommendations matching a team/player/game.
Multiple markets for the same matchup are returned together. Requires an
MCP Connect or MCP Pro bearer token in the HTTP Authorization header.
輸入參數query必填league
get_premium_history
Get resolved premium-pick convenience history (MCP Pro)
Return a shaped 90-day resolved premium-pick view for MCP Pro.
Published resolved picks remain publicly transparent. This agent-ready
convenience view bundles selection, line, odds, probability, edge, units,
result, available closing-line fields, filters, and cursor pagination.
輸入參數limitcursorleagueresultdays_back
get_projection_history
Query historical all-projection research (MCP Pro)
Query the full available normalized projection archive for MCP Pro.
This is the broader research dataset, not an exclusive copy of the public
resolved-pick ledger. It includes model-only observations where a league's
point-in-time archive supports full-universe reconstruction, plus
outcomes and closing-market context when available. Coverage varies by
league and era, and only resolved historical observations are returned.
For per-player NFL/MLB/WNBA prop history (line, stored price, pick side,
actual stat, outcome) call ``get_player_prop_history`` (MCP Pro).
輸入參數teamlimitcursorleague必填marketplayerresultdate_toqualitydecisiondate_frommin_edge_pp
get_player_props
Get today's NFL/MLB/WNBA player props board (MCP Connect or Pro)
Return the live player-props board for NFL, MLB or WNBA (MCP Connect or Pro).
Requires ``Authorization: Bearer obmcp_...`` (MCP Connect — included with
website Premium — or MCP Pro). Free and anonymous callers are denied.
Each prop row carries: player, team, game, kickoff (America/New_York),
market, line, model projection, model over/under probability, the stored
best price and book (plus other books where the odds file stores them),
edge_pct, the model's pick side, confidence tier and units where the lane
produces them, whether it is on the lane's premium board, and
``lane_status`` — the factual verdict of that lane's promotion gate
(e.g. NFL ``research_board``, WNBA ``promoted_live``, MLB per market).
lane_status is information, not a filter: every row is returned.
Prices are exactly as stored by the odds pipeline; a missing price is
``null`` (never a placeholder). MLB rows come from the daily MLB props
export: the MLB ledger stores no pick side for player props, so
``pick_side`` is null and ``edge_pct`` is the stored OVER-side edge
(``edge_side: "over"``).
Args:
league: ``nfl``, ``mlb`` or ``wnba`` (required).
date: ``YYYY-MM-DD`` slate date in the live window — yesterday through
7 days ahead (America/New_York); defaults to today. Earlier dates
are resolved history: use ``get_player_prop_history`` (MCP Pro).
game: Optional matchup/team filter (e.g. ``"NE@JAX"``, ``"JAX"``).
player: Optional player-name filter (substring, accent-insensitive).
market: Optional market filter (e.g. ``rush_yds``, ``points``,
``pitcher_ks``).
limit: Max rows (1-200, default 100), sorted by edge_pct descending.
輸入參數dategamelimitleague必填marketplayer
get_player_prop_history
Query resolved NFL/MLB/WNBA player-prop history (MCP Pro)
Return resolved player props for NFL, MLB or WNBA (MCP Pro only).
Rows carry the projection, line, stored price, side, actual stat and
outcome (plus stored units/units_won where the lane logs them). The
summary counts overs and unders separately. It gives row counts only: no
units, ROI or hit-rate totals, because the site publishes no track record
for these props ledgers to match.
NFL and WNBA read each lane's props ledger. MLB reads the per-date history
shards written by the daily MLB props export; MLB rows have no stored pick
side, so their summary counts where the actual stat landed vs the line.
Args:
league: ``nfl``, ``mlb`` or ``wnba`` (required).
date_from / date_to: ``YYYY-MM-DD`` inclusive range, at most 31 days
(at most 7 days for MLB without a player or market filter).
Defaults to the 7 days ending yesterday (America/New_York).
player: Optional player-name filter (substring, accent-insensitive).
market: Optional market filter (substring, e.g. ``pass_yds``).
recommended_only: Keep only rows the lane recommended. Every NFL
ledger row is a model pick; the WNBA ledger also holds both sides
of every graded candidate (shadow rows), so its unfiltered over and
under counts mirror each other; MLB rows carry no pick flag, so
this returns no MLB rows.
limit: Page size (1-200, default 100).
cursor: Row offset from a previous response's ``next_cursor``.
include_alt_lines: NFL only. The NFL ledger logs one row per priced
alternate line; by default each player-market-side play appears
once (the line the board would publish) and the summary counts
plays. ``true`` returns and counts every alt-line row.
輸入參數limitcursorleague必填marketplayerdate_todate_fromrecommended_onlyinclude_alt_lines
get_oracle_board
Get the Oracle Bettable Board (MCP Connect or Pro)
Return the Oracle Bettable Board: whale-vs-model cross-validated
prediction-market plays — real Polymarket/Kalshi trades from tracked
insider wallets, cross-checked against Olympus's own Monte Carlo sims —
that cleared a live entry-price gate plus the profitability-zone and
tier self-learning gates, for an entitled MCP Connect or MCP Pro agent.
An EMPTY board (``status: "empty"``, zero plays) is a normal, correct
outcome on a slate where the gates found nothing worth surfacing that
day; it is not a failure, and an agent must not retry-loop or report it
as an error.
Every play is sized at a flat 0.5 unit via ``components.oracle_board.
board_play_units()`` — deliberately never a Kelly/tier-derived stake.
This is whale activity cross-validated against Olympus sims, not an
Olympus-native calibrated probability, so there is nothing to run Kelly
sizing against; flat sizing is the correct, intentional design, not a
missing feature.
Plays are ordered by event start time only — this is explicitly NOT a
quality ranking. ``compound_confidence`` and any board-rank score are
excluded from both the ordering and this response on purpose (measured
at AUC 0.48-0.51 in production, no better than a coin flip); do not
infer that a play earlier in the list is a better bet than one later in
it.
Requires ``Authorization: Bearer obmcp_...``. MCP Connect and MCP Pro
are both accepted.
Args:
sport: Optional sport filter (e.g. "NBA", "ESPORTS"). Omit for all sports.
limit: Max plays to return (1-60; the board itself never exceeds 60 plays).
輸入參數limitsport
get_oracle_insights
Get Oracle signal insights (active Premium or MCP Pro)
Return the Oracle board plus whether each whale fill is still buyable.
Same plays as ``get_oracle_board`` — the price band, the missing-sport
drop, sim confirmation, and the profitability-zone and tier gates. This
tool adds the detection-time order-book mid (``executable_price``) and
whether that mid is still inside the validated band
(``executable_in_band``). The board's ``entry_price`` is the whale's
fill. A fill inside the band with a live mid outside it is not an entry
a member can take. ``executable_in_band`` is null when no live mid was
captured; it is never guessed.
Flat 0.5 unit sizing. Ordered by event start time only — not a quality
ranking. ``compound_confidence`` is not included. An empty result is a
normal outcome, not an error.
Requires an active Premium customer (MCP Connect, bundled with website
Premium) or an active MCP Pro bearer token. Free keys, anonymous
callers, and expired entitlements are rejected.
Args:
sport: Optional sport filter (e.g. "NBA", "SOCCER"). Omit for all sports.
limit: Max plays to return (1-60).
輸入參數limitsport
get_market_fair_value
Get sportsbook fair value vs Kalshi price (MCP Connect or Pro)
Sportsbook consensus no-vig fair probability vs Kalshi top of book, per game.
For each Kalshi market on the slate: the sportsbook consensus no-vig
(juice-removed) fair probability of the YES side, the Kalshi yes
bid/ask/mid with sizes, and the gap between them in cents as recorded at
capture. Markets are game winner (``market: "h2h"``) and, from the
Oct 10 2026 capture schema on, the spread and total rungs nearest the
sportsbook consensus line (``market: "spreads"``/``"totals"`` with
``line`` and ``side``), plus Kalshi depth/tick and the fair under the
shin, power and multiplicative de-vig methods (``book.fair``;
``book.fair_prob`` is the Shin value). Informational, not a
recommendation — this is market-vs-market pricing, not an Olympus model
projection. Prices are captured every 5 minutes; each market shows its
own ``captured_at``.
A market whose sportsbook side could not be priced is still listed with
``book.fair_prob: null``, ``gap_cents: null`` and a ``skip_reason`` —
nothing is estimated. ``status`` is ``"stale"`` when the newest capture
is more than 15 minutes old; read ``freshness_seconds`` before acting on
any price.
Requires an MCP Connect or MCP Pro bearer token. Free keys and anonymous
callers are rejected.
Args:
league: League code: "NFL", "NHL", "MLB", "NBA" or "NCAAF" ("CFB"
is accepted as an alias).
date: Optional ET slate date (YYYY-MM-DD). Defaults to today's slate.
team: Optional team filter (name or abbreviation).
輸入參數dateteamleague必填
get_brand_card
Get canonical B2B product and brand metadata
Return canonical brand metadata for citation.
Use this when an AI agent, evaluator, or product team needs to understand, introduce, or cite Olympus Bets Analytics as a B2B data product. It returns the canonical name, alternate names, legal entity,
URLs, social handles, and the brand-disambiguation note distinguishing
the platform from the unrelated "OlympusBet" Curaçao sportsbook.
無需輸入參數。
get_subscription_options
Evaluate B2B MCP plans, pricing, and integration tiers
Return plans, pricing, checkout links, and partner-pilot interest details.
Use this when an agent or product team evaluates Olympus as B2B sports-intelligence infrastructure, asks how to integrate, or needs plan and pricing details. The agent product is MCP Pro.
Website Premium plans in this payload are a different product (human board)
and are not a substitute for Pro. Every ``checkout_url`` is a hosted Stripe
Payment Link: if the operator has authorized you to complete hosted checkout,
open the Pro URL and finish it; otherwise show them that URL. This tool
does not charge a card itself. Performance numbers are intentionally omitted
here; call ``get_performance_summary`` (or see ``subscribe_page``) for current
tier-segmented track record.
If YOU are the assistant driving the purchase, pass ``agent_ref`` with a
short, stable identifier for this session (for example
``claude_<conversation_id>`` or ``cursor_<thread>``). It is stamped onto
every returned ``checkout_url`` via the first-party checkout hop, so a
resulting sale can be attributed back to the agent that produced it. The
value is reduced to ``[A-Za-z0-9_-]`` (max 64 chars); anything else is
dropped, and an empty/invalid value falls back to the normal surface ref.
輸入參數agent_ref
get_data_status
Check league data availability, freshness, and season state
Return public-data availability and freshness before querying a league.
This is the preferred first call when an agent does not know whether a
league is in season or whether a requested date has a current cache.
輸入參數dateleague
search_entities
Search public team and player entities
Resolve team or player names before requesting a profile.
Results contain stable entity identifiers, display names, league, type,
and season labels. Public profile coverage is currently NBA, CBB, NHL,
and NFL.
輸入參數limitquery必填leagueentity_type
get_team_profile
Get a public season-labelled team profile
Return a whitelisted public team profile for the requested season.
輸入參數team必填league必填
get_player_profile
Get a public season-labelled player profile
Return a whitelisted public player profile for the requested season.
輸入參數league必填player必填