Skip to main content
Glama

PropLine — Sports Betting Odds & Prop Resolution

Get best line

propline_get_best_line
Read-onlyIdempotent

Cross-book line shopping (Hobby+ for prices; free tier gets the full structure with book identities + best-first ranking but prices nulled and redacted:true). For every (market, player, line) tuple on an event, returns the single best American price across all comparable books, plus an all_prices array sorted best-first (one row per book, each with last_update). Companion to propline_get_event_ev: /ev says whether a price beats the no-vig fair line; best-line says which book pays the most. DFS pick'em books (PrizePicks, Sleeper, Dabble) are excluded; Underdog only at clean two-way lines. Optional bookmakers filter to shop only the books the user holds accounts at.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
marketsNoComma-separated market keys (e.g. 'pitcher_strikeouts,h2h').
event_idYes
sport_keyYes
bookmakersNoComma-separated book keys (e.g. 'draftkings,fanduel') to shop only those books.
include_linksNoWhen true, every price row carries a link — that book's public event-page URL, the click-out for 'go bet this'. Books without a verified URL template return null. Also adds app_link — a mobile app-open deep link (ProphetX only today, null elsewhere).

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • changedInput schema / properties / include_links / description
      Previous value: -"When true, every price row carries a link — that book's public event-page URL, the click-out for 'go bet this'. Books without a verified URL template return null."New value: +"When true, every price row carries a link — that book's public event-page URL, the click-out for 'go bet this'. Books without a verified URL template return null. Also adds app_link — a mobile app-open deep link (ProphetX only today, null elsewhere)."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. Beyond this, the description adds rich behavioral context: tier-dependent behavior ('Hobby+ for prices; free tier gets the full structure... but prices nulled and redacted:true'), return-structure details (all_prices array sorted best-first, one row per book with last_update), and book-coverage quirks (DFS exclusions, Underdog two-way limitation). 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?

Five information-dense sentences with zero filler — every sentence carries distinct value (tiering, return contract, sibling differentiation, exclusions, filter intent). Slightly front-loaded with a parenthetical-heavy first sentence ('Hobby+ for prices; free tier gets the full structure...'), which takes effort to parse, but nothing is wasted.

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?

For a complex tool with tiered access, no output schema, and 22 siblings, the description covers the critical gaps: it documents the return contract (best-first all_prices, per-row last_update, redacted pricing flag) where no output schema exists, explains conditional availability (DFS exclusions, Underdog limitation), and positions this tool among its get_* siblings. This is complete enough for an agent to know exactly what to expect.

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

Parameters3/5

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

Schema description coverage is 60% (markets, bookmakers, include_links documented; sport_key and event_id bare). The description reinforces the bookmakers parameter's intent ('to shop only the books the user holds accounts at'), which mostly restates the schema's own 'to shop only those books.' It adds tier context that affects observable output behavior but no new per-parameter syntax or format guidance beyond the schema, so it neither compensates for the gap nor adds much incremental value.

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?

Clear verb+resource+scope: 'returns the single best American price across all comparable books' for each (market, player, line) tuple. Explicitly distinguishes from siblings by naming propline_get_event_ev as a companion and contrasting: '/ev says whether a price beats the no-vig fair line; best-line says which book pays the most.' Also details exclusions (DFS pick'em books) that separate it from generic odds tools.

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?

Provides explicit when-to-use and when-not-to-use guidance: it names the alternative (propline_get_event_ev) and articulates the decision rule for choosing between them. Also covers behavioral exclusions ('DFS pick'em books... are excluded; Underdog only at clean two-way lines') and usage intent for the filter ('to shop only the books the user holds accounts at').

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

A4.1/5.0
Disambiguation3/5

The tools are mostly distinct by purpose, but several overlap in areas like odds retrieval (get_odds vs get_best_line vs get_event_ev) and historical data (get_odds_history vs get_odds_closing vs export_odds_history). Descriptions are detailed and clarify distinctions, but the close functional relationships (e.g., get_event_movement vs get_odds_history) may cause selection ambiguity for an agent.

Naming Consistency4/5

The naming pattern is largely consistent: propline_<verb>_<noun> with verbs like get, list, export. Most tools follow this structure (e.g., get_event_results, list_events, list_sports). Deviations include 'propline_export_odds_history' (export instead of get) and a few longer names like 'propline_get_mlb_grand_salami' and 'propline_get_nhl_daily_goals_total' that break the simple verb_noun pattern but are still readable. Overall, the naming is predictable with minor exceptions.

Tool Count4/5

With 23 tools for a sports betting odds and prop resolution server, the count is on the higher side but still within a reasonable range given the domain's complexity (odds, EV, movement, results, player trends, webhooks, exports). Each tool serves a distinct function, though some could be consolidated (e.g., grand salami and NHL daily totals could be one). Slightly heavy but not excessive.

Completeness4/5

The tool set covers the core lifecycle: discover sports and events (list_sports, list_events), retrieve odds and markets (get_odds, list_event_markets), analyze EV and lines (get_event_ev, get_best_line, get_event_movement), track results and player stats (get_event_results, get_event_stats, get_player_history, get_player_trends), and backfill via exports. Missing features include webhook management (deliberately omitted) and possibly batch operations, but the surface is comprehensive for the stated purpose.