HoopsAPI basketball odds
Server Details
Live basketball odds from 6 bookmakers: NBA, EuroLeague and 100+ competitions, plus closing lines
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 6 tools
Each tool targets a distinct resource or view: competitions, upcoming games, single-game detail, price history, cross-book discrepancies, and providers. get_game vs list_games and get_game_history vs get_game have mild surface overlap, but the descriptions (by id vs by competition; current vs price changes) make the boundaries clear.
All six names follow a consistent snake_case verb_noun pattern using get_ for single-entity retrieval and list_ for collections. No mixed conventions or vague verbs.
Six tools is well within the sweet spot and each maps to a clear need in an odds API: discovery, listing, detail, history, discrepancies, and provider metadata. Nothing feels redundant or padded.
The surface covers the core odds lifecycle: find competitions, list games with odds, fetch full period detail, inspect line movement, and see cross-book differences. Minor gaps exist (e.g., no date-range or team-based filtering, no direct per-game bookmaker comparison beyond discrepancies), but agents can work around them.
Available Tools
6 toolsget_gameAInspect
One game by id with every bookmaker's main lines for every period. Works for finished games too, returning their closing odds.
| Name | Required | Description | Default |
|---|---|---|---|
| game_id | Yes | ||
| include_alternate_lines | No | Also return every alternate handicap and total line (larger response) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does a reasonable job describing the response shape: main lines only by default, closing odds for completed games. It says nothing about behavior on an unknown game_id (error vs empty), authentication, or rate limits, which leaves real gaps for a lookup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose and then the useful edge case. No filler or restated title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter lookup with no annotations and no output schema, the description adequately conveys what is returned and the finished-game case. The remaining shortfall is the undocumented game_id origin/format, which an agent may need to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: include_alternate_lines is documented in the schema, and the description's contrast between 'main lines' and alternates reinforces it. The required game_id has no schema description and the description only says 'by id' — not that it is an integer or where to obtain it (presumably list_games) — so the gap is only partly filled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One game by id') plus the scope of what comes back: every bookmaker's main lines for every period. That implicitly separates it from list_games, but no sibling is named, so an agent has to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage cue is conditional coverage — 'Works for finished games too, returning their closing odds' — which tells the agent not to avoid finished games. There is no explicit guidance on when to call this versus list_games or get_game_history, and no prerequisite about where game_id comes from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_historyBInspect
Every price change for a game, newest first (Data plan). Use it for line movement and closing odds.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| market | No | ||
| period | No | ||
| game_id | Yes | ||
| provider | No | Only this bookmaker, e.g. pinnacle (see list_providers) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does add two useful facts: results are ordered newest-first and the endpoint requires a 'Data plan' entitlement. But it says nothing about default window size, whether an unfiltered call returns all five markets across all periods, or how large history sets behave relative to the limit cap of 5000.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler; the resource and ordering come first, the use case second. Nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter read tool with no output schema and no annotations, the description leaves meaningful gaps: what a history record contains, whether the plan requirement means failures for non-entitled callers, and how to page through results via limit. It is workable but not sufficient on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% — only 'provider' carries its own description. The description does not explain game_id, the 1–5000 limit with its default of 100, or what selecting a market/period does to the returned series. Enum values for market and period are self-explanatory, but the intent behind filtering by period (e.g. to isolate halves for line-movement analysis) is left to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('every price change for a game') with an ordering guarantee ('newest first'), which clearly separates it from get_game (current snapshot) and list_games. It doesn't explicitly name a sibling, but the verb+resource is concrete enough that an agent won't confuse it with the listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it for line movement and closing odds' gives a positive use case, which is more than nothing. However there are no exclusions and no routing to alternatives — e.g. it never says to use get_game when only the current price is needed, or that a market/period filter should be passed to narrow results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_competitionsAInspect
Basketball competitions that have upcoming games with odds, with the number of games in each. Use it to find the exact competition name for the other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose meaningful behavior: results are limited to competitions with upcoming games carrying odds, and each row includes a game count. It does not state read-only nature, ordering, or whether competitions without odds are excluded entirely, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste, front-loading the returned resource and following with the routing purpose. Nothing redundant or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, annotation-free lookup tool with no output schema, the description conveys enough: what entities are returned, the odds/upcoming-game filter, and the presence of game counts. A brief note on result ordering or whether names are unique would have made it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate at the argument level. Baseline 4 applies; the description adds value only by clarifying the implicit server-side filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (list) and resource (basketball competitions), and adds scope qualifiers: only competitions with upcoming games that have odds, plus a per-competition game count. This clearly separates it from siblings like list_games and get_game, which operate at the game level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly gives the calling context: 'Use it to find the exact competition name for the other tools,' which tells the agent this is a discovery/lookup step before invoking other tools. It does not name an alternative or state when not to use it, so a 5 is not warranted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discrepanciesBInspect
The biggest cross-bookmaker differences on main lines for upcoming games: moneyline prices, handicap lines and totals (Pro and Data plans).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| period | No | ft | |
| competition | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does add real context by disclosing the plan gating ('Pro and Data plans'), which an agent needs to know before calling. However, it does not state how 'biggest' is ranked, whether results are sorted, or how 'main lines' are selected, leaving key behavioral traits undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the market types and plan restriction are packed in efficiently. It is a sentence fragment rather than a full statement, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and no parameter documentation, yet the description omits the ranking criterion, default result count, and allowed values for period and competition. An agent could call it, but not confidently predict or shape the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, and the description says nothing about limit, period (ft/h1/h2/q1-q4), or competition. Only 'upcoming games' loosely hints at the time dimension, so the description fails to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (cross-bookmaker differences on main lines for upcoming games) and enumerates the market types returned (moneyline, handicap, totals), which clearly separates it from get_game and list_games. It is a noun phrase without a leading verb, but the resource and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'biggest cross-bookmaker differences' signals a discovery/comparison use case, and 'upcoming games' narrows the scope. There is no explicit when-to-use, when-not-to-use, or routing to any of the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gamesAInspect
Upcoming games in one competition with each bookmaker's main moneyline, handicap (spread, line = home team's handicap) and total, in decimal odds. Full game only unless include_periods is true.
| Name | Required | Description | Default |
|---|---|---|---|
| competition | Yes | Competition name, case-insensitive, e.g. "NBA" or "Europe - Euroleague" (see list_competitions) | |
| include_periods | No | Also return halves and quarters (larger response) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses output shape and constraints: only each bookmaker's MAIN line (not all lines), decimal odds, upcoming games only, full game by default. It omits response size expectation beyond 'larger response', ordering, and any limits on how many bookmakers/games come back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, no filler; the payload description comes first and the period-scope caveat second. Efficient, though the first sentence is packed enough that it takes a second read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters and no output schema, the description does the heavy lifting by explaining what fields come back and in what odds format. Reasonably complete for a listing tool; pagination/volume behavior is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented and the baseline is 3. The description adds little parameter-level detail beyond restating the include_periods behavior; the useful 'line = home team's handicap' clarification describes output semantics rather than an argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource and scope – upcoming games within a single competition – and enumerates the exact payload (moneyline, handicap/spread, total in decimal odds). It implicitly distinguishes itself from get_game (single game) and list_competitions, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Full game only unless include_periods is true' tells the agent when to flip the flag, and the schema points to list_competitions for the competition name. There is no explicit guidance on when to prefer this over get_game or get_game_history, nor any stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_providersBInspect
The bookmakers covered and when each was last collected.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does useful work by revealing the return contents (provider list plus last-collected timestamp, which signals data freshness), but it says nothing about ordering, pagination, or whether this is a pure read of a static roster.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause with no filler, and the resource identity leads. It is a noun phrase rather than a sentence, which costs it a point, but nothing unnecessary is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description should explain what a returned entry looks like; it gestures at this (bookmaker + last collected) but leaves the shape and any staleness caveats implicit. Adequate but thin given nothing else documents the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description correctly implies no filtering input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource concretely: bookmakers covered, plus the per-entry last-collected timestamp. Combined with the list_providers name, an agent knows exactly what comes back, and the sibling tools (games, competitions, discrepancies) cover visibly different resources, so no explicit differentiation is needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives, no prerequisites, and no note on whether the result is filterable or cached. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
get_game - First observed
get_game_history - First observed
list_competitions - First observed
list_discrepancies - First observed
list_games - First observed
list_providers
Related MCP Connectors
Sharp Asian odds + opening-line (初盘) movement for agents: 6 Asian books + Pinnacle. Read-only.
Live odds, cross-book +EV and graded player-prop results across 37 books. Hosted endpoint included.
Live sportsbook odds, line movement and +EV and arbitrage signals from 14 US and Ontario books.
NBA/WNBA betting analytics: live odds, sharp fair prices, injuries, and prop verification.
Related MCP Servers
AlicenseAqualityAmaintenanceLive sports betting odds, cross-book +EV, and graded player-prop resolution across 13 books.11387 npm1MIT- AlicenseNot gradedqualityCmaintenanceEnables retrieval of live odds from 24 Kambi-powered sportsbooks in a single call, with one row per game showing each book's price and the best price per outcome.1MIT

sportapi-mcpofficial
AlicenseAqualityBmaintenanceLive and prematch sports odds, scores, live statistics and match search from SportAPI (football, basketball, tennis, esports and more). Works with demo data without an API key.1134 PyPIMIT
Odds-API MCP Serverofficial
AlicenseAqualityAmaintenanceEnables AI assistants to access sports betting odds data from 265+ bookmakers across 34 sports, including events, odds, historical data, arbitrage, and value bets.2594 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.