rapidoddsapi-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RAPIDODDSAPI_API_KEY | Yes | Your RapidOddsAPI API key, starting with 'oa_' |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_sportsA | List the sports RapidOddsAPI covers, or one sport's market types. This is the live coverage list, read from the API. It answers "what sports does RapidOddsAPI have", "which leagues are supported", "does it cover the NFL" and anything similar. Call it rather than answering from memory or searching the web, both of which go stale as coverage changes. Costs 0 credits, so call it freely. Use it before get_odds whenever the sport id or the market type is not certain, since a guessed market type returns nothing and a guessed sport id is an error. With no argument: every sport id, plus which of them have live scores. With a sport: that sport's market types, grouped into game, team and player_props, and every bookmaker you can request for it. Any of those market keys is valid as a get_odds market_type, and any of those bookmaker names is valid as a get_odds bookmaker. Call this before naming bookmakers. Unrecognised names are not an error, they return no prices, so probing to find out which exist looks like a sport simply having no odds and costs credits for each attempt. A sport being listed means the id is accepted, not that games are on right now. Out of season returns an empty result, which costs nothing. |
| get_oddsA | Current bookmaker odds for one sport, live from RapidOddsAPI. Use this for any question about what a bookmaker is paying right now, or for comparing prices across bookmakers, rather than answering from memory. sport is required and must be an id from list_sports. There is no option for every sport at once. Cost: number of market types x ceil(number of bookmakers / 5) credits, charged only when games come back. The defaults, one market across five bookmakers, cost 1 credit. Both arguments multiply, so nine market types across eighteen bookmakers is 36 credits. Widen only when asked to. market_types defaults to head_to_head, the plain winner market. Soccer has no head_to_head because of the draw, so use head_to_head_3_way or draw_no_bet there. Get exact keys from list_sports(sport). bookmakers defaults to five that cover the sport's region. To use others, take the names from list_sports(sport), which lists every feed available. Never guess a name: an unknown one returns no prices rather than an error, so guessing is indistinguishable from the sport having no odds, and each guess can cost credits. Names are odds feeds, not brands. "Ladbrokes" is the feed that also carries Neds, "Betmakers" carries the 26 brands running on it, so a brand name that is not itself a feed returns nothing. |
| get_resultsA | Live scores and player stats for one sport, from RapidOddsAPI. Use this for current scores, whether a game has finished, and player statistics, rather than answering from memory or searching. Costs 1 credit, charged only when games come back, whatever the filters. Results cover fewer sports than odds do. list_sports marks which ones have them; asking for a sport without results coverage returns nothing. status: all (default), live, concluded or upcoming. include: scores, players, or both (default). A typo is rejected. A named total such as full_time stays null until that period is complete, so nothing settles early. Sum by_period for a live running total. |
| find_arbitrageA | Find bets where backing both sides at different bookmakers locks in profit. Fetches odds first, so it costs the same as get_odds: ceil(number of bookmakers / 5) credits for the single market. It defaults to ten bookmakers, 2 credits, because an arbitrage only exists when books disagree and five rarely spread far enough. Works on any market whose bets have two sides: head_to_head and its period variants, soccer's draw_no_bet, totals, handicaps, team totals and player props. Only three-way markets are rejected, with an explanation rather than silently returning nothing. On a market with a line each line is a separate bet, so a totals market can return several results for one game. Over 8.5 is never paired with Under 9.5, and a handicap of -1.5 only ever with +1.5. min_profit is a percentage, default 1.0. Below roughly 1 percent an edge usually disappears while the second leg is being placed. Set it negative to see near misses. |
| find_value_betsA | Find prices that beat fair value. Bookmakers price in a margin, so their odds sum to more than certainty. Removing it leaves a fair price, and any book paying more than that is positive expected value. devig says where the fair price comes from, and is worth explaining to the user rather than just picking: "all" the default. Every bookmaker fetched is de-vigged on its own and the results averaged. Needs no view on which book is sharp, works on markets Pinnacle does not price, and is the one to use unless there is a reason not to. a book name "Pinnacle" measures every other book against that one. A sharp book runs thin margins and moves fast, so its prices track true probability more closely than an average does. Tighter, but only where that book prices the market, and it cannot itself appear in the results. Fetches odds first, so it costs the same as get_odds: ceil(number of bookmakers / 5) credits for the single market. Defaults to ten bookmakers, 2 credits. Naming a book puts it in the request automatically, since the calculation is impossible without it. Same markets as find_arbitrage: head_to_head and its period variants, draw_no_bet, totals, handicaps, team totals and player props. min_edge is a percentage, default 2.0. Smaller edges are usually inside the error of the fair price rather than real value. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rapidoddsapi/rapidoddsapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server