Skip to main content
Glama
qtexuk

racing-alpha-mcp

Racing Alpha MCP server

qtexuk/racing-alpha-mcp MCP server

GB & Irish horse racing signals for AI agents — the official Model Context Protocol server from Racing Alpha.

Remote server (Streamable HTTP, no install):

https://racingalpha.co.uk/api/mcp

Listed on the official MCP Registry as uk.co.racingalpha/signals.

Connect

Claude Code:

claude mcp add --transport http racing-alpha https://racingalpha.co.uk/api/mcp

Generic MCP client config:

{
  "mcpServers": {
    "racing-alpha": {
      "type": "http",
      "url": "https://racingalpha.co.uk/api/mcp"
    }
  }
}

Works keyless (50 requests/day per IP). A free key raises that to 1,000/day — get one at racingalpha.co.uk/developers and pass it as Authorization: Bearer ra_live_….

Stdio-only client? Use the bundled zero-dependency bridge:

npx github:qtexuk/racing-alpha-mcp
# or with a key:
RACING_ALPHA_API_KEY=ra_live_… npx github:qtexuk/racing-alpha-mcp

Or via Docker:

docker build -t racing-alpha-mcp . && docker run -i racing-alpha-mcp

Related MCP server: crypto-quant-signal-mcp

Tools

Tool

What it returns

get_today_races

Today's GB & IRE races with Racing Alpha's published model picks (advised prices database-frozen at publication)

get_race_signals

Per-runner AI scores (0–100), de-overrounded fair prices, value vs fair, plus the race's draw-bias verdict

get_tips_ledger

The public tips ledger — every pick frozen at publication with result, level-stakes P/L, and closing-line-value summary. Losses included; that is the point.

get_draw_bias

3-year draw-bias aggregates (IV / A–E / PRB) by course, surface, and distance band

get_combo_stats

Trainer×jockey strike rates over settled races

What this is (and isn't)

Everything served is a Racing Alpha computation — model scores, de-overrounded consensus prices, statistical aggregates, and our own published tips record. It is not a raw racecards/odds/ratings feed.

The differentiator: every prediction Racing Alpha publishes is database-frozen at publication with a public audit table. Agents can verify the full track record — including losing runs — before trusting a single signal, via get_tips_ledger or racingalpha.co.uk/performance.

Fair use

  • Attribution required on the free tier: "Signals by Racing Alpha" linked to racingalpha.co.uk.

  • Not for betting operators or sportsbooks.

  • Don't present the signals as guaranteed winners — the public ledger exists precisely so nobody has to take our word for anything.

  • 18+ audiences · BeGambleAware.org

REST equivalent + OpenAPI spec: racingalpha.co.uk/developers

Available Tools

5 tools
get_combo_statsB

Trainer×jockey combination strike rates over settled GB & IRE races in Racing Alpha's archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax combos (default 100)
min_runsNoMinimum runs together (default 5)

TDQS

B3.3/5.0
Behavior2/5

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

The description adds the context of 'settled GB & IRE races' and 'archive', which clarifies data scope. However, with no annotations provided, the description carries the full burden for behavioral disclosure. It does not state whether the tool is read-only, how results are ordered, or any limitations like pagination, defaults, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, highly focused sentence that front-loads the core purpose. It avoids redundancy and is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives the essential scope but lacks context about the return format, default sort order, or what 'strike rates' precisely means (e.g., win percentage). With no output schema or annotations, it is minimally adequate for a simple query tool, but leaves some ambiguity about the exact response structure.

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?

Both parameters (limit and min_runs) are fully described in the input schema, including defaults. The description adds no additional parameter meaning beyond the schema. Since schema coverage is 100%, the baseline score of 3 is appropriate.

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?

The description clearly states the tool's purpose: retrieving trainer×jockey combination strike rates. It names the specific resource (combination strike rates) and the data scope (settled GB & IRE races), which distinguishes it from sibling tools like get_today_races or get_draw_bias.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not mention when to use this tool over alternatives, nor does it name any sibling tools or exclusions. An agent would have to infer from the name that this is for combo stats, but there is no explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_draw_biasA

3-year draw-bias aggregates for GB & IRE flat courses: impact value (IV), actual/expected (A-E) and percentage-of-rivals-beaten (PRB) by stall third, per course, surface and distance band.

ParametersJSON Schema
NameRequiredDescriptionDefault
courseNoOptional course name filter, e.g. 'lingfield'

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full transparency burden. It discloses the aggregation period (3 years), scope (GB & IRE flat courses), metrics, and grouping by stall third, course, surface, and distance band. It does not, however, describe the output format or default behavior when no course parameter is supplied, which is covered only in 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence that front-loads the tool's purpose and immediately lists the metrics and grouping dimensions. No wasted words; every element adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter, no annotations, and no output schema, the description provides substantial context: time range, geography, race type, and metrics. It lacks explicit return-structure details, but given the simplicity of a single-parameter query, the description is almost complete. Would be a 5 with clarity on what is returned when the course filter is omitted.

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?

The schema fully covers the single optional 'course' parameter with an example ('lingfield'), giving 100% schema coverage. The description does not add information about parameters beyond what the schema already provides, so a baseline of 3 is appropriate.

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?

The description clearly states it provides 3-year draw-bias aggregates for GB & IRE flat courses, listing the specific metrics (IV, A-E, PRB) and grouping dimensions. This distinguishes it from sibling tools like get_today_races and get_race_signals, which focus on different data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for accessing historical draw-bias statistics on flat courses, but offers no explicit guidance on when to use this tool versus alternatives like get_combo_stats or get_race_signals. No 'when to use' or 'when not to use' is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_race_signalsA

Racing Alpha's derived signals for one race: per-runner AI score (0-100), de-overrounded fair price, value vs fair, plus race-level draw-bias verdict and the frozen model pick if the race made the public card.

ParametersJSON Schema
NameRequiredDescriptionDefault
race_idYesRace id from get_today_races, e.g. rac_32294027584

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It discloses the 'frozen model pick' and the conditional 'if the race made the public card', hinting at statefulness. However, it does not explain caching, error handling, or prerequisites, leaving some transparency gaps.

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?

The description is a single sentence that front-loads the core purpose and enumerates all key outputs. It is efficient, though slightly dense with specialized terms like 'de-overrounded', which is acceptable for the domain.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description lists the available signals, which compensates reasonably. It falls short of describing the response structure or edge cases (e.g., invalid race_id, race not on the public card), leaving some completeness gaps.

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?

The input schema covers the single 'race_id' parameter with a clear description and example. The tool description adds no additional parameter semantics, so the baseline score of 3 applies.

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?

The description clearly identifies the tool as returning derived signals for a single race, listing specific outputs like AI score, fair price, and value. It distinguishes this from sibling tools like get_today_races (list) and get_draw_bias (race-level verdict).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for one race' implies usage for specific race analysis, but there is no explicit guidance on when to choose this over get_draw_bias or get_combo_stats. No alternatives or exclusions are mentioned, leaving usage to implication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tips_ledgerA

Racing Alpha's public tips ledger — every pick database-frozen at publication with result, level-stakes P/L, and closing-line-value summary. Includes losses; that is the point.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPicks to return (default 50, newest first)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses that picks are database-frozen at publication, includes losses intentionally, and provides specific metrics. This adds meaningful behavioral context beyond the name, though it omits details like default ordering or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tight, front-loaded, and every phrase adds value. It communicates essence, content, and a key nuance (losses) in just two sentences without waste.

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 simple one-parameter tool with no output schema, the description fully covers what the tool returns and its key characteristics. No further context seems necessary for an agent to use it correctly.

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 coverage is 100% for the single limit parameter, which already includes a clear description (default 50, newest first). The tool description adds no additional parameter information, so the baseline of 3 applies.

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?

The description clearly identifies the tool as Racing Alpha's public tips ledger, with specific details on content (picks, results, P/L, CLV). This distinguishes it from sibling tools like get_today_races or get_race_signals, which focus on different data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the description but not explicitly stated. It does not explain when to choose this over siblings or when not to use it, but the ledger-specific language provides reasonable inference for a tips history tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_today_racesA

Today's GB & IRE horse races with Racing Alpha's published model picks (advised prices are database-frozen at publication). Returns race ids usable with get_race_signals.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the transparency burden. It discloses a non-obvious behavioral trait: advised prices are database-frozen at publication, and it also states the return type (race ids). This is adequate context for a read-only getter, though it could mention timezone or what other fields are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with the first sentence front-loading the core purpose. The parenthetical adds critical pricing nuance without bloat, and the second sentence provides a useful workflow pointer. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless getter with no output schema, the description specifies the scope (today, GB & IRE), the special pricing behavior, and the downstream use of race ids. It could mention what other race data is returned, but this is sufficient given the tool's simplicity.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is trivially 100%. The description adds no parameter meaning, but none is needed; the baseline for 0-param tools is 4, and the description correctly focuses on output semantics instead.

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?

The description clearly states a specific verb+resource: it retrieves today's GB & IRE horse races with Racing Alpha's model picks. It also distinguishes from siblings by specifying the output is race ids usable with get_race_signals, making its role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for obtaining today's race list and provides a clear follow-up action ('usable with get_race_signals'), establishing context. It does not explicitly contrast with alternatives like get_tips_ledger or get_draw_bias, so it lacks explicit 'when not to use' guidance.

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.

  1. 5 tool updatesv0.1.0
    • First observedget_combo_stats
    • First observedget_draw_bias
    • First observedget_race_signals
    • First observedget_tips_ledger
    • First observedget_today_races

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct question: race lists, per-race signals, tips ledger, draw bias stats, and trainer-jockey combos. There is no functional overlap, making selection unambiguous.

Naming Consistency5/5

All tools follow the same get_<object> pattern (e.g., get_today_races, get_race_signals). The naming is predictable and consistent.

Tool Count5/5

Five tools is a well-scoped size for a horse racing tips-and-stats server. Each tool fills a clear role without redundancy or bloat.

Completeness4/5

The core workflow is covered: browse today's races, drill into signals, check historical tips, and consult statistical context. Minor gaps exist like historical racecards or non-today races, but they don't undermine the primary purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Martingale Intelligence for AI trading agents. Provides proprietary scores and sequence parameters for 250+ crypto and stock instruments to evaluate martingale strategy suitability.
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP server that brings live Australian racing and sports odds from 12 bookmaker/exchange sources into AI assistants, with per-price age data and tools for next races, best odds, results, and movers.
    9
    MIT