Skip to main content
Glama

olympus-bets-analytics

get_model_vs_market

Read-onlyIdempotent

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: false``) — below
    that floor, the rate is noise, not signal.

Windows: ``30d`` (most current, smallest sample) and ``90d`` (steadier,
larger sample). Use 90d as the primary read; use 30d to see if something
is actively shifting.

Freshness: the underlying file rebuilds daily (~12:50 UTC). If it is
stale (>36h old), this tool returns ``{"status": "updating", ...}``
instead of presenting old numbers as current — never treat a missing
``windows`` key as "no skill data," check ``status`` first.

Args:
    league: Optional league filter (e.g. "MLB", "NHL"). Omit for all
        leagues covered by the scoreboard (NBA, NHL, MLB, SOCCER, WNBA,
        TENNIS, LOL, CS2, GOLF, WC — CFB/NFL/CBB not yet in-season/covered).

Returns:
    ``{status, generated_at, benchmark, close_benchmark, sample_floor_n,
    windows: {"30d": {...}, "90d": {...}}}`` where each window has
    ``overall`` (blended-across-leagues cell) and ``by_league`` (list of
    per-league cells, each carrying its own ``league`` code).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
leagueNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and idempotentHint, but the description adds significant behavioral detail: the tool returns 'status: updating' if stale data is detected, explains how to interpret missing windows, and clarifies that negative scores are reported honestly. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but well-organized with clear sections, plain English explanations, and a front-loaded purpose statement. Every sentence adds value given the complexity of the metrics. Slightly verbose but justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single optional parameter, output schema, and annotations, the description comprehensively covers the return structure, all fields, windows, freshness behavior, and league options. No gaps remain for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has one optional 'league' parameter with 0% description coverage. The description compensates by listing valid league values (MLB, NHL, etc.) and explaining that omitting it returns all leagues. Provides meaningful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns 'Olympus Bets Analytics' own self-graded model-quality metrics — NOT pick win rate.' It distinguishes itself from sibling tools like get_performance_summary and get_track_record by specifying what this tool does differently.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use this (to assess model sharpness vs market) and when not to (for pick win rate), and directs to alternatives. Also advises using '90d as the primary read' and '30d to see if something is actively shifting.' Includes freshness check instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, but some overlap exists (e.g., get_todays_projections vs get_game_recommendation and get_track_record vs get_pick_history vs get_performance_summary). However, the detailed descriptions help differentiate them.

Naming Consistency5/5

All tools follow a consistent 'get_*' or 'search_*' verb_noun pattern with snake_case. The only deviation is 'search_entities', which is a natural fit for a search operation.

Tool Count5/5

19 tools is well-scoped for a sports betting analytics server, covering metadata, data status, schedules, projections, performance, subscriptions, and profiles without being excessive.

Completeness4/5

The tool surface covers core analytics workflows (projections, track record, performance, methodology) plus supporting operations (brand, status, subscriptions, search). Minor gaps like league standings or team statistics are outside the primary scope.