sharpapi-mcp
OfficialQuery live sports betting odds data from SharpAPI — discovering sports/books/events, comparing odds, and finding +EV, arbitrage and middle opportunities.
List sports (
list_sports) with live/upcoming event counts to discover valid sport ids.List sportsbooks (
list_sportsbooks) with ids (free tier covers only DraftKings and FanDuel).List events (
list_events) with ids, start times and teams, filterable by sport, league, date, live status, limit.Get odds (
get_odds) normalized across books — American and decimal prices plus implied probability, one row per book/market/selection.Get best odds (
get_best_odds) — the line-shopping view: best price per selection across all books.Find arbitrage (
get_arbitrage) — cross-book sets with combined implied probability under 100% (Hobby+ plan).Find +EV bets (
get_ev) — prices beating fair probability, including the de-viggedfairProbability(Pro+ plan).Find middles (
get_middles) — two-sided gaps where both bets can win, sorted by quality/EV/probability/size.
Requires a SHARPAPI_KEY environment variable; errors are returned with isError for rate limits and plan requirements.
Provides tools for querying live sports betting data from SharpAPI: listing covered sports, sportsbooks and events, fetching normalized odds across books (American/decimal/implied probability), finding the best price per selection, and surfacing cross-book arbitrage, +EV bets and middles opportunities.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sharpapi-mcpfind arbitrage opportunities in NBA games"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SharpAPI MCP Server
MCP server for SharpAPI. Exposes live sports betting odds, +EV, arbitrage and middles as Model Context Protocol tools, for compatible AI applications to query sports betting data.
Uses the official TypeScript SDK, @sharp-api/client, for HTTP requests.
Install
Install from GitHub:
npx github:Sharp-API/SharpAPI-MCPThe npm package is not published yet. Once it is:
npm install -g @sharp-api/mcp-serverRelated MCP server: MCP Prediction Markets
Configure
Set SHARPAPI_KEY in the environment. Get a free key at https://sharpapi.io; the free tier serves DraftKings and FanDuel at 12 requests/min with no card.
The key is read from the environment only. There is deliberately no way to pass it as a tool argument: tool arguments are model-generated and end up in transcripts and logs.
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"sharpapi": {
"command": "sharpapi-mcp",
"env": { "SHARPAPI_KEY": "sk_your_key_here" }
}
}
}Tools
tool | what it does | plan |
| Sports covered, with live/upcoming counts. Start here to find valid sport ids. | any |
| Book ids for the | any |
| Events with ids, start times, teams. | any |
| Normalized odds across books: American, decimal, implied probability. | any |
| Best price per selection across books. The line-shopping view. | any |
| Cross-book arbitrage: combined implied probability under 100%. | Hobby+ |
| +EV bets against fair probability. Carries | Pro+ |
| Two-sided gaps where both bets can win. | any |
The API enforces plan requirements. The server returns API errors unchanged, including details about the required tier.
There is no separate no-vig tool. SharpAPI does not expose de-vigged odds as its own endpoint; the fair number arrives as fairProbability on each get_ev opportunity.
Notes
Tool errors are returned with
isErrorso clients can handle rate limits and plan requirements.Diagnostics are written to stderr; stdout is reserved for the MCP protocol.
License
MIT
Available Tools
8 toolsget_arbitrageB
Find cross-book arbitrage opportunities: sets of prices whose combined implied probability is under 100%, so backing every outcome locks a margin. Requires a Hobby plan or above.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sport | No | ||
| league | No | ||
| min_profit | No | Minimum profit percent, e.g. 1.5 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the plan requirement and the core calculation, but does not mention side effects, read-only status, rate limits, or behavior when no arbitrage exists. This is partial but not comprehensive.
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 sentences, no filler: the first defines the tool's core behavior and the second adds the plan requirement. Information is front-loaded with the verb and resource.
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?
The tool has no output schema and no annotations, and the description omits parameter descriptions and return format. It gives enough concept but not enough operational detail for an agent to call it correctly with filters and interpret results.
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 only 25%, and the description adds no parameter-level meaning. 'limit', 'sport', and 'league' are left undocumented in both schema and description, so the description fails to compensate for the low coverage.
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 uses a specific verb ('Find') and a clear resource ('cross-book arbitrage opportunities'), and defines the concept precisely with the combined implied probability under 100%, distinguishing it from sibling tools like get_ev and get_middles which target different edge concepts.
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?
Implicitly indicates use when arbitrage is sought, but does not contrast with sibling tools or state exclusions. The only explicit usage guidance is the plan requirement ('Requires a Hobby plan or above'), which is a constraint, not an alternative-selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_best_oddsA
Get the best available price per selection across all covered books. This is the line shopping view: one row per selection rather than one per book.
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | ||
| limit | No | ||
| sport | No | ||
| league | No | ||
| market | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that the tool aggregates across all covered books, but it does not mention side effects, data freshness, pagination behavior, or whether it is a read-only operation. The basic query nature is implied but not explicit.
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?
The description is two concise sentences. It delivers the core functionality and the key differentiator without any redundant or filler content.
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?
While the purpose is clear, the description lacks any explanation of parameter usage or expected return format beyond the single-row-per-selection hint. There is no output schema, so the description must compensate, but it does not provide enough detail for an agent to confidently use the tool without additional context.
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?
All five parameters (event, limit, sport, league, market) have no descriptions in the schema. The tool description provides no explanation of what these parameters mean or how they affect the query. With 0% schema description coverage and no compensatory text, the parameters are entirely opaque.
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 clearly states the tool's function: retrieving the best available price per selection across all covered books. It explicitly distinguishes itself from a per-book view, which sets it apart from sibling tools like get_odds.
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 description effectively contrasts this tool with the alternative per-book view ('one row per selection rather than one per book'), making it clear when to use this over get_odds. However, it does not explicitly state 'use this when you need best odds' or mention other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evB
Find positive expected value (+EV) bets: prices that beat the fair probability implied by the wider market. Each opportunity carries a fairProbability field, which is the de-vigged number. Requires a Pro plan or above.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sport | No | ||
| league | No | ||
| min_ev | No | Minimum EV percent, e.g. 2 | |
| sportsbook | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It adds useful context: opportunities include a de-vigged fairProbability field and the tool requires a Pro plan. However, it omits other behavioral details such as output shape, pagination, defaults, or whether filtering is required, so it is only partially transparent.
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?
The definition is tight and front-loaded: the main purpose is in the first sentence, followed by a clarifying field explanation and the access requirement. No sentence is wasted, and the length is appropriate for the tool's complexity.
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?
Despite having five optional parameters, no output schema, no annotations, and several siblings, the description only explains the core concept and the fairProbability field. It does not specify how the filter parameters behave, what the response looks like, or how this tool relates to alternatives, leaving too much for the agent to infer.
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 only 20%, and the description adds virtually no parameter-level meaning. The tool description does not explain limit, sport, league, sportsbook, or min_ev beyond what the schema already provides for one parameter. Since the description must compensate for poor schema coverage and does not, this is a significant gap.
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 clearly identifies the tool's job: finding +EV bets, with a specific definition ('prices that beat the fair probability implied by the wider market'). It is more specific than a tautology and the +EV concept separates it from siblings like get_arbitrage or get_best_odds, though it does not explicitly name any sibling.
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-related note is the Pro plan requirement, which is a prerequisite rather than guidance on when to choose this tool over alternatives. It does not mention when to use this tool versus get_odds, get_best_odds, or get_arbitrage, and provides no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_middlesA
Find middle opportunities: two prices on opposite sides with a gap where both bets can win. Sorted by quality unless told otherwise.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | ||
| sport | No | ||
| league | No | ||
| market | No | ||
| min_size | No | Minimum middle width in points |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It adds useful default-sort behavior ('Sorted by quality unless told otherwise') and clarifies the win condition for a middle. It does not disclose output shape, pagination, or data availability, but for a read-only 'get' tool this is not severely deficient.
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 concise sentences: the first states the operation with a definition, and the second states the default ordering. There is no redundant detail or repetition of 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?
The tool has six optional parameters and no output schema, and most parameters receive no semantic explanation. The description defines the domain and default sort but does not cover filter usage, limit behavior, or what result shape to expect, so an agent cannot fully judge output without guessing.
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 only 17%, so the description must compensate. It only explains the default sort behavior, mapping to the sort parameter, and leaves limit, sport, league, market, and min_size semantically unexplained by either the schema or the description.
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 uses a specific verb ('Find') and resource ('middle opportunities') and defines the concept precisely as two prices on opposite sides with a gap where both bets can win. This clearly distinguishes middles from sibling tools like get_arbitrage or get_odds, even without naming them.
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 intended use is implied: call this tool when you want middle opportunities. However, it gives no explicit when-to-use versus alternatives such as get_arbitrage or get_ev, and no conditions that disfavor this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_oddsA
Get normalized odds across sportsbooks. Returns American and decimal prices plus implied probability, one row per book/market/selection, so prices are directly comparable between books.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | Only in-play markets | |
| event | No | Event id from list_events | |
| limit | No | ||
| sport | No | Sport id from list_sports | |
| league | No | ||
| market | No | e.g. "moneyline", "spread", "total" | |
| sportsbook | No | Restrict to one book id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry behavioral disclosure. It does reveal the normalization behavior and the output row structure, which is useful. But it does not disclose defaults, edge cases, staleness, pagination, or how filters like live/limit/sportsbook actually affect results.
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?
The description is two sentences with no filler. The first sentence states the core action and scope; the second explains the output format and its value. Every word contributes to an agent's ability to understand and invoke the tool.
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?
The description gives a solid overview of what is returned, which matters because there is no output schema. However, with 7 optional filter parameters and no annotations, it does not explain default behavior (e.g., if no sportsbook or event is specified), nor why an agent would choose this over sibling odds-focused tools. More usage or filter-relationship guidance would make 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?
Schema description coverage is 71%, so most parameters already have descriptions in the schema. The tool description adds little parameter-specific meaning; it only clarifies that results are row-per-book, which is output semantics rather than parameter guidance. The baseline of 3 is appropriate given the high schema coverage.
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 uses a specific verb and resource: 'Get normalized odds across sportsbooks.' It further clarifies the output granularity ('one row per book/market/selection'), which distinguishes it from sibling tools like get_best_odds without needing to open their schemas.
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 phrasing 'so prices are directly comparable between books' implies the tool is meant for comparing odds across sportsbooks, which gives some usage context. However, it does not explicitly state when to use this tool over get_best_odds, get_arbitrage, or other siblings, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsA
List events (games) with ids, start times and teams. Use this to find an event id before fetching odds for it.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ISO date, e.g. "2026-09-08" | |
| live | No | Only events currently in play | |
| limit | No | ||
| sport | No | Sport id from list_sports, e.g. "baseball" | |
| league | No | League id, e.g. "mlb" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral disclosure burden. It reveals that the tool returns ids, start times, and teams, which is useful. However, it does not describe default date behavior, filtering semantics, response shape, pagination, or sorting, leaving notable behavioral gaps for a list 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?
The description is two sentences with no filler. The first sentence states the operation and outputs; the second gives the practical use case. Every word earns its place.
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 read-only listing tool with five optional parameters and no output schema, the description names purpose, usage, and returned fields, which covers most of what an agent needs. It does not mention defaults for date/limit or whether the response is an array, but the schema supplies parameter details and the tool is low complexity.
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 80%, so the baseline is 3. The description adds no parameter-level meaning beyond the schema; it only frames the overall use case. The limit parameter lacks a schema description and the description does not compensate for it, but the min/max constraints in the schema provide some guidance.
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 uses a specific verb and resource ('List events (games)') and names the key returned fields: ids, start times, teams. It also states the main use case (finding an event id before fetching odds). It doesn't explicitly contrast with sibling list tools like list_sports or list_sportsbooks, so it misses the top score.
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 description gives clear usage context: 'Use this to find an event id before fetching odds for it.' This tells an agent when to reach for this tool and how it fits into the odds workflow. It does not mention alternatives or exclusion conditions, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sportsA
List the sports SharpAPI covers, with live and upcoming event counts for each. Call this first to discover valid sport ids 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 of behavioral disclosure. The 'list' verb implies a read-only operation, and the description discloses that output includes live and upcoming event counts. However, it does not explicitly state that no data is modified or describe any edge-case behavior, though these gaps are minor for a simple list 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?
The description is exactly two sentences with no wasted words. The core function and output content are front-loaded in the first sentence, and the usage directive is placed in the second, making it immediately actionable for an agent.
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?
Given the tool's simplicity, zero parameters, and no output schema, the description provides enough detail about what the tool returns (sports with live/upcoming counts) and how to use it (call first for valid ids). Nothing critical is missing for an agent to invoke 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?
The tool has zero parameters, so the input schema trivially covers semantics. The description adds value by explaining that the output provides valid sport ids for use in other tools, which implicitly clarifies why no parameters are needed for this discovery call.
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 clearly states the tool's verb ('List'), resource ('sports SharpAPI covers'), and distinguishing output (live and upcoming event counts). It also frames the tool's role as the discovery entry point for valid sport ids, distinguishing it from sibling tools like list_events or list_sportsbooks.
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 guidance 'Call this first to discover valid sport ids for the other tools' explicitly tells the agent when to use this tool and positions it before the sibling tools. It does not name specific alternatives, but for a zero-parameter discovery tool, the sequencing instruction provides sufficient usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sportsbooksA
List the sportsbooks SharpAPI normalizes, with their ids. Use the returned ids for the sportsbook argument elsewhere. Which books a key can actually read depends on its plan: the free tier serves DraftKings and FanDuel only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that availability is plan-dependent and mentions the free-tier limitation, which is a behavioral trait not otherwise visible. The verb 'List' implies a read-only operation, though it doesn't explicitly state side-effect-free behavior.
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 concise sentences: the first states what the tool does, the second supplies usage guidance and plan caveats. No filler, front-loaded with the primary purpose.
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 list tool with no output schema, the description is complete: it explains what is listed, what the ids are for, and how plan restrictions affect results. An agent can call this tool correctly and understand its role within the sibling ecosystem.
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 has zero parameters, so the schema fully covers parameter meaning by having none. The description adds value by explaining how the resulting ids feed into another argument, which is relevant even though this tool takes no inputs.
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'), a specific resource ('sportsbooks SharpAPI normalizes'), and the key detail that ids are included. It clearly differentiates from siblings like list_sports and list_events by naming the domain object.
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 description gives clear operational context: returned ids should be used for the 'sportsbook' argument elsewhere, and plan-based access limits are explained. It doesn't mention explicit alternatives or when-not-to-use, but the guidance is concrete and useful.
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.
8 tool updates
v0.1.0- First observed
get_arbitrage - First observed
get_best_odds - First observed
get_ev - First observed
get_middles - First observed
get_odds - First observed
list_events - First observed
list_sports - First observed
list_sportsbooks
TDQS
Scored across 8 tools
The list_* tools are clearly distinct, and get_arbitrage, get_ev, and get_middles each target a unique betting opportunity type. However, get_odds and get_best_odds have similar names and both return odds, so an agent could initially confuse raw normalized odds with the line-shopping view.
Tool names follow a clean and predictable pattern: list_* for discovery endpoints and get_* for odds/opportunity lookups. Even the abbreviated get_ev fits the naming scheme, and all names use consistent snake_case formatting.
Eight tools is well-scoped for a sports betting odds API. The set covers discovery, odds retrieval, and specialized betting opportunity searches without unnecessary bloat or missing critical endpoints.
The toolkit covers the core workflow: discover sports and sportsbooks, find events, fetch normalized odds, and analyze opportunities. Minor gaps exist, such as no dedicated event-detail endpoint or historical odds endpoint, but these are not severe for the stated purpose.
Maintenance
Related MCP Connectors
Sports odds, player props and source coverage for AI assistants. Connect with your own API key.
Grounded sports predictions plus European soccer and tennis arbitrage data for AI agents.
Live odds, cross-book +EV and graded player-prop results across 27 books. Hosted endpoint included.
Real-time sports betting data: odds, player props, edges and arbitrage from 35+ books and DFS apps.
Related MCP Servers
AlicenseAqualityAmaintenanceEnables AI assistants to access sports betting odds data from 265+ bookmakers across 34 sports, including events, odds, historical data, arbitrage, and value bets.22257 npm1MIT- AlicenseAqualityDmaintenanceProvides search, trending, odds, arbitrage, and category browsing for prediction markets (Polymarket & Kalshi) via the Model Context Protocol, enabling AI agents to access live market data without API keys.51MIT
- AlicenseNot gradedqualityBmaintenanceEnables fetching sportsbook odds, live scores, and event information across 70+ books and 30+ leagues, with tools to list sports, get scores, and discover events.191 npmMIT
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with professional-grade tools for expected value calculation, Monte Carlo predictions, historical backtesting, and portfolio risk management in sports betting.-