rapidoddsapi-mcp
OfficialServer Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each tool has a distinct purpose: one lists coverage, one fetches live scores, one fetches odds, and two analyze odds for arbitrage/value. There is no overlap that could cause an agent to select the wrong tool.
Naming Consistency5/5All tool names follow a consistent verb_noun pattern: get_results, list_sports, get_odds, find_arbitrage, find_value_bets. The verbs 'get' and 'find' are both action-oriented and the style is uniform.
Tool Count5/5Five tools is an appropriate scope for a betting odds API: it covers the core data access (sports, results, odds) and the two main analytical use cases (arbitrage and value betting) without unnecessary bloat.
Completeness5/5The tool set covers the full lifecycle of the domain: discovering coverage, retrieving live results, pulling current odds, and calculating betting opportunities. There are no obvious missing operations for a read-only odds service.
Average 4.8/5 across 5 of 5 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 4 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
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 cost behavior ('fetches odds first', credit formula), defaults, and that a named devig book is automatically included. It also explains min_edge's statistical rationale. However, it does not mention pagination, error handling, or return structure, though an output schema exists to cover returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary, followed by logically grouped details (devig, cost, markets, min_edge). Every sentence adds relevant value without fluff. The formatting with code blocks and bullet-like indentation enhances readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters and an output schema. The description explains the purpose, costing, devig choices, market scope, and min_edge semantics, making it nearly self-sufficient. It does not explicitly state which sports are supported or how to pass bookmakers, but those may be inferred from the schema and sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 0% description coverage, so the description compensates by explaining devig (with distinct modes), min_edge, and bookmakers default. It also lists supported markets, which adds meaning to the market parameter. The sport parameter remains unexplained, but the description covers the other four params effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Find prices that beat fair value') and distinguishes this tool from siblings like get_odds and find_arbitrage by clarifying its focus on positive expected value. It also details the devig methods, which further solidifies its unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the 'all' vs. a specific book name for devig, explaining trade-offs and constraints (e.g., a named book cannot appear in results). It mentions same markets as find_arbitrage, but does not explicitly contrast when to use this tool over find_arbitrage or get_odds, so it lacks a direct exclusion clause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so excellently. It discloses credit costs, default bookmaker count, why three-way markets are rejected, how lines are paired (e.g., Over 8.5 never with Under 9.5), and the meaning of min_profit including negative values. This goes far beyond typical descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then cost, market compatibility, line behavior, and parameter specifics. Every sentence adds value with no fluff or repetition. It is appropriately sized for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 5 parameters, no schema descriptions, and no annotations, the description covers all critical behavioral aspects: cost, defaults, market edge cases, and parameter nuances. The existence of an output schema means return values need not be explained, and the description still achieves high completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It fully explains min_profit (percentage, default, negative behavior), clarifies the market parameter by listing compatible types, and implicitly covers bookmakers default. However, stake and sport are not elaborated, leaving some ambiguity for those parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: 'Find bets where backing both sides at different bookmakers locks in profit.' This clearly defines the tool's function and scope, distinguishing it from siblings like get_odds or find_value_bets by focusing on arbitrage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (arbitrage detection), explains cost implications relative to get_odds, and details which markets are supported. It lacks an explicit 'when-not-to-use' statement or direct alternative comparison, but the context is strong enough for an agent to make an informed choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses costs ('Cost: number of market types x ceil(number of bookmakers / 5) credits'), default behavior ('market_types defaults to head_to_head'), failure modes ('an unknown one returns no prices rather than an error'), and feed semantics ('Names are odds feeds, not brands'). This goes well beyond basic descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured in short, information-dense paragraphs, each covering a distinct aspect (purpose, usage, cost, parameters, naming). No sentence is filler; the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all critical aspects: live data source, parameter semantics, defaults, costs, error behavior, and feed-vs-brand distinction. With an output schema present and no annotations, the description bears full responsibility for usage and side effects, and it fulfills that responsibility comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description thoroughly explains all three parameters: sport must come from list_sports; market_types defaults to head_to_head with sport-specific variants; bookmakers default to five regional feeds and warns against guessing names. Concrete examples like 'Ladbrokes is the feed that also carries Neds' add significant meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Current bookmaker odds for one sport, live from RapidOddsAPI,' clearly stating the verb (get) and resource (current odds for one sport). It distinguishes from siblings by focusing on live odds and comparing bookmakers, not results, sports list, arbitrage, or value bets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use this for any question about what a bookmaker is paying right now, or for comparing prices across bookmakers, rather than answering from memory.' It also gives operational guidance like 'sport is required and must be an id from list_sports' and cost warnings. However, it does not explicitly name sibling tools as alternatives or provide when-not conditions (e.g., historical odds), so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses cost (1 credit, charged only when games come back), error behavior (typo in include is rejected), empty results for unsupported sports, and semantics of named totals (null until complete, sum by_period for running total). This is rich behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place. The description is compact yet covers purpose, usage, cost, coverage, parameters, and result semantics. It is well-structured with clear line breaks and no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description need not explain return values in detail. It covers essential operational context: cost, coverage limits, parameter semantics, and the meaning of live totals. This is fully sufficient for an agent to correctly select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains status values ('all (default), live, concluded or upcoming') and include ('scores, players, or both (default)') with typo behavior. It references list_sports for valid sport values, though it doesn't enumerate them. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Live scores and player stats for one sport.' It clearly distinguishes itself from sibling tools like get_odds by noting coverage differences and referencing list_sports for sports that have results. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this for current scores, whether a game has finished, and player statistics, rather than answering from memory or searching.' Also provides exclusion context by mentioning that results cover fewer sports than odds and that list_sports marks which ones have them, implying when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses that the list is live, costs 0 credits, can return empty results out of season, and that a sport being listed only means the id is accepted—not that games are currently available.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds unique value: coverage semantics, cost, use-before-get_odds guidance, bookmaker probing caveats, and seasonality. It is front-loaded with the core purpose and then expands logically into usage and edge cases without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's one optional parameter and the absence of annotations, the description covers everything: what the tool returns in both argument modes, how it interacts with sibling get_odds, cost implications, empty-result behavior, and common failure modes. An output schema is not present, but the narrative return structure is sufficiently detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description fully explains the only parameter 'sport': no argument returns all sports, while a sport value returns market types grouped into game/team/player_props and valid bookmaker names. It also clarifies how these returned values relate to get_odds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the sports RapidOddsAPI covers, or one sport's market types.' It clearly distinguishes the tool from siblings by framing it as the live coverage list, explicitly separating it from memory/web lookups and get_odds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: 'Use it before get_odds whenever the sport id or the market type is not certain' and 'Call this before naming bookmakers.' It also explains when not to rely on memory/web and warns that probing unrecognized bookmaker names costs credits, making usage boundaries clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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