oddsrelay — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited oddsrelay (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
OddsRelay is a pre-match odds feed for the UK and Ireland: every bookmaker's own prices (the raw board), and matched boards where each bookmaker back price sits beside the best exchange lay price and the liquidity at that lay. The API is documented at https://oddsrelay.io/docs and described by its OpenAPI file, https://api.oddsrelay.io/v2/openapi.json (no key needed to read it). Read that file before using a parameter this skill does not name.
npx -y oddsrelay-mcp, with ODDSRELAY_KEY set. Itstools (sports, events, bookmakers, coverage, odds, event_odds, usage) price every call before it runs and refuse a call above a per-call cap. See this repository's README. It does not wrap the historical routes yet: use HTTPS for those.
ODDSRELAY_KEY as a bearer token in the Authorization header, basehttps://api.oddsrelay.io. Ask for Accept-Encoding: gzip. Never print the key, write it to a file or paste it into a message.
GET /v2/sports, GET /v2/events?sport=<key>, GET /v2/bookmakers, GET /v2/coverage,GET /v2/usage (your plan, balance and key scope), GET /v2/pricing (the price table), GET /v2/historical/files (the list of bulk history files).
GET /v2/odds/raw, GET /v2/odds/event/{id}, GET /v2/odds/{type} where type is oneof the matched boards the coverage route lists (standard, 2up, dutching, each-way, extra-place, bog).
GET /v2/historical/odds/raw (the raw board as of an instant; date and sportsrequired, gzip only, paged by cursor), GET /v2/historical/events/{id}/odds (one event's price changes; from required), GET /v2/historical/closing (a day's closing lines; date as YYYY-MM-DD and sports required) and GET /v2/historical/files/{tier}/{sport}/{file} (one bulk file, gzip CSV bytes: save them as they come). Their prices are in GET /v2/pricing under regions.uk.historical.
quote=true to any data call: it returns {cost, remaining, rate_card} and spends nothing.Tell the user the cost and ask before any call that costs more than they have agreed to.
sports (a sport key or prefix such as soccer or horse_racing), bookmakers, markets(such as h2h or totals), commenceTimeFrom and commenceTimeTo. A narrow call costs a fraction of a whole board.
meta.next_cursor (pass it back as cursor) until it is absent. A cursor expiressoon after it is issued (the OpenAPI file gives how soon), so page straight through.
bookmakers, each with its markets and their outcomes(name, price), named the way that bookmaker names them.
lay, on the same fixture, market and line.
meta carries when the board was produced (processed_at) and, on matched boards, eachbookmaker's last read (last_seen): say how old the data is from those, never guess.
/v2/historical/*) are bookmakers only: no exchange history (an exchanges parameter orexchangesOnly=true is 403 exchange_history_unavailable) and no starting prices. They are recorded from 17 October 2026 and released a UTC day at a time, the night after the day, so today's prices come from the live routes.
files_need_whole_scope. Only so many downloads run at once, per account and in all: one more is 429 too_many_downloads, so retry after its Retry-After seconds. A download is charged in full before its first byte, so one cut off keeps its charge.
Enterprise (https://oddsrelay.io/pricing).
Sign up at https://app.oddsrelay.io/signup and copy the key from the dashboard. Plans and token prices: https://oddsrelay.io/pricing.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.