com.olympus-bets/olympus-bets-analytics
REMOTE · APP.OLYMPUS-BETS.COM · SCANNED AUG 3
Quant sports analytics: 19 read-only tools across 12 leagues, projections, methods, track record.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 19 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability59
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 4340 tokens (~228/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · app.olympus-bets.com
claude mcp add --transport http com-olympus-bets-olympus-bets-analytics https://app.olympus-bets.com/mcp
[mcp_servers.com-olympus-bets-olympus-bets-analytics] url = "https://app.olympus-bets.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-olympus-bets-olympus-bets-analytics": {
"type": "remote",
"url": "https://app.olympus-bets.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-olympus-bets-olympus-bets-analytics --url https://app.olympus-bets.com/mcp --transport streamable-http
mcp_servers:
com-olympus-bets-olympus-bets-analytics:
url: "https://app.olympus-bets.com/mcp" {
"mcpServers": {
"com-olympus-bets-olympus-bets-analytics": {
"type": "http",
"url": "https://app.olympus-bets.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes. Other categories moved too: Schema Quality & AI Usability fell 1.
- 31 Jul 26 +3
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 55
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://app.olympus-bets.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=app.olympus-bets.com | CN=YE1,O=Let's Encrypt,C=US | 22 Jun 2026 | 20 Sept 2026 | ECDSA 256 | ECDSA-SHA384 | 587a3d23496dbcdfe8558f6ef5a14a835d8 |
| SANs: app.olympus-bets.com, app.retirementgambling.com | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
DNSSEC insecure
Validation of app.olympus-bets.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| olympus-bets.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://app.olympus-bets.com/mcp | Verified | 200 | |
| http (plaintext) | http://app.olympus-bets.com/mcp | HTTPS enforced | 301 | https://app.olympus-bets.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
get_brand_card ~91
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.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_data_status ~62
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.
| Name | Type | Req | Description |
|---|---|---|---|
| date | — | — | — |
| league | — | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_engine_versions ~111
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, ...}]}``
| Name | Type | Req | Description |
|---|---|---|---|
| league | — | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_game_recommendation ~334
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). 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).
| Name | Type | Req | Description |
|---|---|---|---|
| date | — | — | — |
| league | string | yes | — |
| team | string | yes | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_league_schedule ~348
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: [...]}``.
| Name | Type | Req | Description |
|---|---|---|---|
| date | — | — | — |
| league | string | yes | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_methodology ~172
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.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_model_vs_market ~798
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: f…
| Name | Type | Req | Description |
|---|---|---|---|
| league | — | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_performance_summary ~412
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. Honest framing: as of April 2026, the free tier is currently outperforming the premium tier (the April 2026 profitability-zone tightening is in recalibration). Both numbers are published transparently. Args: tier: Optional tier filter. Omit to return all five segments. league: Optional league filter applied inside each requested tier. detail: ``summary`` omits breakdowns; ``full`` includes all breakdowns. Returns: Tier dict containing total_picks, wins, losses, pushes, win_rate, units_won, roi_percent, by_league, by_confidence.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | — | — |
| league | — | — | — |
| tier | — | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_pick_history ~231
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | integer | — | — |
| league | — | — | — |
| limit | integer | — | — |
| result | — | — | — |
| tier | — | — | — |
| verbose | boolean | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_player_profile ~35
Return a whitelisted public player profile for the requested season.
| Name | Type | Req | Description |
|---|---|---|---|
| league | string | yes | — |
| player | string | yes | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_premium_game_recommendation ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| league | — | — | — |
| query | string | yes | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_premium_history ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | integer | — | — |
| days_back | integer | — | — |
| league | — | — | — |
| limit | integer | — | — |
| result | — | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_premium_slate ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| league | — | — | — |
| limit | integer | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_projection_history ~174
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 supported player-prop markets, outcomes, and closing-market context when available. Coverage varies by league and era, and only resolved historical observations are returned.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | integer | — | — |
| date_from | — | — | — |
| date_to | — | — | — |
| decision | string | — | — |
| league | string | yes | — |
| limit | integer | — | — |
| market | — | — | — |
| min_edge_pp | — | — | — |
| player | — | — | — |
| quality | string | — | — |
| result | — | — | — |
| team | — | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_subscription_options ~137
Return subscription plans, pricing, the $1 trial terms, and checkout links. 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. Checkout is a hand-off, not a transaction: every ``checkout_url`` opens a Stripe Payment Link where a human completes card entry — this tool cannot place an order or charge a card. Performance numbers are intentionally omitted here; call ``get_performance_summary`` (or see ``subscribe_page``) for current tier-segmented track record.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_team_profile ~35
Return a whitelisted public team profile for the requested season.
| Name | Type | Req | Description |
|---|---|---|---|
| league | string | yes | — |
| team | string | yes | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_todays_projections ~310
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 Kelly-sized units, 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: [...]}``
| Name | Type | Req | Description |
|---|---|---|---|
| league | — | — | — |
| verbose | boolean | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
get_track_record ~387
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 or masked premium rows. 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | integer | — | — |
| days_back | integer | — | — |
| league | — | — | — |
| limit | integer | — | — |
| result | — | — | — |
| tier | — | — | — |
Structured output declared, but exposes no named fields.
No examples provided.
search_entities ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_type | string | — | — |
| league | — | — | — |
| limit | integer | — | — |
| query | string | yes | — |
Structured output declared, but exposes no named fields.
No examples provided.