Skip to main content
Glama

olympus-bets-analytics

get_market_fair_value

Read-onlyIdempotent

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).

Input Schema

NameRequiredDescriptionDefault
dateNo
teamNo
leagueYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare read-only and idempotent; the description goes far beyond by disclosing the 5-minute capture cadence, the 15-minute staleness threshold tied to a status field, the freshness_seconds field to check before acting, and null/skip_reason handling for unpriceable markets. The auth tier requirement and the schema-evolution note (spreads/totals only from the Oct 10 2026 capture) are context an agent could not get from annotations or schema.

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?

Purpose is front-loaded in the first sentence and each paragraph covers a distinct concern (payload, null handling/staleness, auth, args). It is dense and some output-level detail (shin/power/multiplicative de-vig method names, book.fair_prob aliasing) borders on restating the output schema, but no sentence is pure filler.

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?

An output schema exists, yet the description still supplies the operational facts an agent needs: pricing semantics, staleness semantics, null behavior, auth requirements, and complete argument documentation. Nothing needed to call this correctly or interpret a response is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the full burden, and it does: league enumerates the accepted codes plus the 'CFB' alias, date specifies ET slate date format and the default of today's slate, and team specifies name or abbreviation. Each parameter's accepted form and default is stated, leaving nothing to guess.

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 opening sentence names the exact comparison and unit of analysis: sportsbook consensus no-vig fair probability vs Kalshi top of book, per game. It then enumerates the market types (h2h, spreads, totals) and explicitly frames itself as market-vs-market pricing rather than a model projection, which separates it from get_model_vs_market and get_game_recommendation without opening either schema.

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

Usage Guidelines4/5

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

It clearly says what this is not ('Informational, not a recommendation... not an Olympus model projection') and gives the prerequisite for use (MCP Connect or Pro bearer token; free keys and anonymous callers rejected). It stops short of naming a specific sibling to use instead when the agent wants a projection or recommendation, so routing is implied rather than explicit.

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.