OddsRelay

io.github.oddsrelayPublished by GitHub account oddsrelayv0.1.2Updated Nov 3, 2026

Read-only MCP server for OddsRelay odds data, with a token cap on every call that spends tokens.

VerifiedSTDIODesktop onlyFinanceData & Analytics

Overview

AI-generated overview

Read-only MCP server for OddsRelay betting odds: lists sports, events, bookmakers and coverage, and reads matched boards or event prices with a per-call token…

What you can do
  • Look up sport and competition keys, and the events of one sport, with paging
  • List bookmaker and exchange keys, and see which bookmakers carry which sports on a product along with its market keys
  • Read a matched board of bookmaker back prices and exchange lay prices for one sport at named bookmakers
  • Read one event's prices at each bookmaker and exchange carrying it, narrowed by bookmakers and markets
  • Check the key's plan, token balance, reset time and scope
When to use it
Useful when an assistant should answer questions about bookmaker odds, coverage or event prices from OddsRelay data, with spending kept under a per-call token limit. The free lookups (sports, events, bookmakers, coverage, usage) cost nothing, so it is easy to try before paying for odds calls.
Requirements
A local stdio process started via npx (Node 18 or later) or the Claude Desktop bundle, which uses Claude Desktop's built-in Node. Needs an OddsRelay account and API key supplied in the ODDSRELAY_KEY environment variable; the key is sent only to the OddsRelay API. Free tier gives 50,000 tokens for 14 days, then a paid plan is needed.
Before you install
The odds and event_odds tools spend tokens from the user's account; each call is priced first and refused above max_tokens, and the assistant is told to ask before raising it. Paid plans are for personal use, and businesses or products serving others need Enterprise. The key sits in plain text in client config files, so keep those out of version control. event_odds requires a key that can read raw odds.

Installation

In SourceWeft

  1. Open OddsRelay in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

oddsrelay-mcp

An MCP server that gives an AI assistant read access to OddsRelay: matched boards, the prices for one event, and the sport, event, bookmaker and coverage lists behind them. It is read-only, and every call that spends tokens is priced first and refused above a per-call cap (max_tokens). The assistant is told to ask you before raising it.

It works with Claude Desktop, Claude Code, Cursor and any other client that starts MCP servers over stdio, and it is built on the oddsrelay TypeScript client.

API docs: https://oddsrelay.io/docs

Get a key

Sign up at app.oddsrelay.io/signup and copy your key from the dashboard. Free gives you 50,000 tokens for 14 days from sign-up, with no card, then no tokens until you choose a plan, on the same key. Plans and token prices. Paid plans are for personal use. Any business, even one using the data only in-house, and any product that serves other people runs on Enterprise; a business can try the data on Free first.

Set up

You need an OddsRelay API key (Get a key, above). The server reads the key from ODDSRELAY_KEY. The bundle and the Gemini CLI extension set it for you; the other routes set it in your MCP client's config and need Node 18 or later.

Claude Desktop (one-click bundle)

Download oddsrelay-mcp.mcpb from the latest release and double-click it to install it in Claude Desktop, which asks for one setting: your API key. The setting is marked sensitive, so Claude Desktop masks it, and it passes the key to the server as ODDSRELAY_KEY. The bundle carries everything the server needs and runs on the Node built into Claude Desktop, so you need no Node of your own.

Claude Code

sh
claude mcp add --transport stdio oddsrelay --env ODDSRELAY_KEY=your_key_here -- npx -y oddsrelay-mcp

Claude Desktop (config file)

Settings, Developer, Edit Config opens claude_desktop_config.json. Add the server, then restart Claude Desktop:

json
{  "mcpServers": {    "oddsrelay": {      "command": "npx",      "args": ["-y", "oddsrelay-mcp"],      "env": { "ODDSRELAY_KEY": "your_key_here" }    }  }}

Cursor

Add the same mcpServers block to ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project).

The key sits in that config file as plain text, so keep the file out of anything you commit.

Gemini CLI

sh
gemini extensions install https://github.com/oddsrelay/oddsrelay-mcp

Gemini CLI installs the extension from the latest release, then asks for your API key, keeps it in your system keychain and passes it to the server as ODDSRELAY_KEY. The extension also loads the Agent Skill below.

First questions

Ask your assistant:

Using OddsRelay, which bookmakers carry tennis on the standard board?

That calls coverage, which costs no tokens. Then:

Show the OddsRelay standard board for soccer at Ladbrokes and William Hill, first five events.

The assistant finds the bookmaker keys with bookmakers, then calls odds, which is priced before it runs.

Agent Skill

skills/oddsrelay/SKILL.md is an Agent Skill for assistants that load skills (Claude Code, Claude.ai and other skill-aware clients): when to reach for OddsRelay, how to quote a call before it spends tokens, and how to read the boards. It works with this server or with plain HTTPS.

Tools

ToolWhat it readsTokens
sportsSport and competition keys, pagednone
eventsThe events of one sport, with their ids, pagednone
bookmakersBookmaker and exchange keysnone
coverageWhich bookmakers carry which sports on one product, and the product's market keysnone
oddsA matched board (standard, 2up, dutching, each-way, extra-place or bog) for one sport at the bookmakers you namepriced first, capped
event_oddsOne event's prices at each bookmaker and exchange carrying it, narrowed to the bookmakers and markets you namepriced first, capped
usageYour plan, token balance, reset time and key scopenone

The token cap

odds and event_odds take a max_tokens argument with a small default. Before each call the server asks the API what the call would cost (a quote, which spends nothing). If it would cost more than max_tokens, the server makes no call, spends nothing and tells the assistant the price, so the assistant can narrow the filters or ask you before it tries again with a higher max_tokens.

odds always takes one sport and the bookmakers you name, so each call stays narrow. The cost is set by the filters you send; cutting the reply to limit rows does not change it. Every reply from these two tools carries tokens: what the call cost and what is left.

Both tools only read, but their MCP annotations mark them as calls with a cost rather than read-only, so a client that asks before such calls will ask you each time. event_odds reads the raw board, so it needs a key that can read raw odds.

Replies

Replies are compact JSON. Long lists are cut to limit rows (each tool has its own default) and to a size an assistant can read in one go, with a more note saying how many rows were left out and what to change to see them. Paged tools return next_cursor, which the assistant passes back as cursor; a page cut short goes on from the first row not shown.

Errors come back as tool errors with the API's error code and, where the API sends them, the values it accepts: ask for an unknown bookmaker and the error lists the keys it accepts.

Your key

The server reads the key only from ODDSRELAY_KEY and sends it only to https://api.oddsrelay.io, in the Authorization header. It never puts the key in a tool reply or an error: if an error ever echoed it, it would be replaced with [hidden]. The server logs nothing.

What it does not do

No tool writes anything, reads or writes files, or calls any host but the OddsRelay API.

Develop

sh
npm cinpm test

The tests run the server against a stubbed fetch and make no network calls. npm run bundle builds oddsrelay-mcp.mcpb from dist and the installed dependencies: manifest.json describes the bundle, and .mcpbignore keeps sources, tests and development packages out of it. To try the built server by hand, npx @modelcontextprotocol/inspector node dist/cli.js opens it in the MCP Inspector.

More from OddsRelay

License

MIT

Source: README.md at commit 4988034

Tools

7

sports

Sports

Lists sport and competition keys (such as soccer or soccer_epl) for the sport filter of odds and events. Costs no tokens. Paged: pass next_cursor back as cursor.

Parameterslimitcursorregion

events

Events

Lists the events of one sport with their ids, for event_odds. Costs no tokens. Paged: pass next_cursor back as cursor.

Parameterslimitsportrequiredcursorregioncommence_tocommence_from

bookmakers

Bookmakers

Lists the bookmaker and exchange keys that odds, event_odds and coverage take. Costs no tokens.

Takes no parameters.

coverage

Coverage

Shows which bookmakers carry which sports on one product, and that product's market keys (the values odds takes as markets). Filter by bookmaker or sport. Costs no tokens and sends no key.

Parameterslimitsportregionproductbookmaker

odds

Odds

Reads a matched board (bookmaker back prices with exchange lay prices) for one sport at the bookmakers you name. Spends tokens: priced first, and refused when it would cost more than max_tokens.

Parameterstyperequiredlimitsportrequiredregionmarketsexchangesbookmakersrequiredmax_tokenscommence_tocommence_from

event_odds

Event odds

Reads one event's prices (id from events or odds) at each bookmaker and exchange carrying it, narrowed to the bookmakers and markets you name. Needs a key that can read raw odds. Spends tokens: priced first, and refused when it would cost more than max_tokens.

Parametersidrequiredlimitregionmarketsbookmakersmax_tokens

usage

Usage

Shows this key's plan, token balance, reset time and scope. Costs no tokens.

Takes no parameters.

Version history

3
  1. v0.1.2LatestOct 29, 2026
  2. v0.1.1Oct 13, 2026
  3. v0.1.0Oct 9, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts