Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the OddsRelay API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Foddsrelay.io%2Foddsrelay" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Foddsrelay.io%2Foddsrelay" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with OddsRelay API.
Fetch a matched board such as 2up, each-way, extra-place, or dutching, filtered by sports, bookmakers, exchanges, markets, and kick-off window
Page the raw board of every venue's prices per event, with updatedSince for incremental pulls and includeLiquidity for exchange depth
Look up one event by its or_evt_ id and read every venue's prices for it
Discover the sports, competitions, events, bookmakers, exchanges, and regions a key can query
GET STARTED
Price any data request for free with quote=true before spending tokens, and read the full price table
Check board freshness, odds age, and per-venue coverage before relying on the prices
Patterns agents use OddsRelay API for, with concrete tasks.
★ Matched-betting research agent
A matched bettor's agent compares each bookmaker's back price against the exchange lay price for upcoming events and surfaces the closest matches. Through Jentic the agent searches for 'get a matched betting board', loads the OddsRelay getMatchedBoard operation, and calls it with the board type and filters such as sports and bookmakers, with the key attached at call time. The agent returns the events where back and lay prices sit closest without the developer wiring the API by hand.
Call GET /v2/odds/standard with region 'uk', sports 'soccer', and markets 'h2h', then rank events by the gap between bookmaker back price and exchange lay price
Each-way and extra-place offers
Horse racing offers like extra places and each-way terms need the bookmaker's terms read against both win and place lays on the exchange. OddsRelay serves dedicated each-way and extra-place boards that carry those terms beside the lays, so a tool can rank races where an each-way bet is close to break-even before the race starts.
Call GET /v2/odds/extra-place with region 'uk' and sports 'horse_racing', and list races in the next three hours where the bookmaker pays an extra place
Incremental raw odds ingestion
A data pipeline keeps a local odds store current without re-downloading the whole board. It pages GET /v2/odds/raw with a cursor and limit, and on later runs passes updatedSince so only changed events come back. The raw board names bookmakers with a single price and exchanges with back price, lay price, and available liquidity when includeLiquidity is set.
Page GET /v2/odds/raw with region 'uk', rawSports 'tennis', and includeLiquidity true using the cursor until it is exhausted, then store each event keyed by its id
Cost-aware polling
Every OddsRelay data call is priced from the request, not the size of the reply, and spends from one monthly token pool. An agent can send quote=true on any data request to get its cost and remaining balance for free, read GET /v2/pricing for the table, and check GET /v2/usage for the balance and account scope, then decide how often it can afford to poll.
Call GET /v2/odds/raw with quote true for the planned filters, compare the returned cost against remaining from GET /v2/usage, and pick a polling interval that fits the balance
14 endpoints — the oddsrelay api serves sports betting odds that line up bookmaker back prices against exchange lay prices for each event, across six matched boards: standard, 2up, dutching, each-way, extra-place, and bog.
METHOD
PATH
DESCRIPTION
/v2/odds/{type}
Get a matched board
/v2/odds/raw
Page the raw board
/v2/odds/event/{id}
Get one raw event by id
/v2/events
List events of a sport
/v2/sports
List sports and competitions
/v2/bookmakers
List bookmakers and exchanges
/v2/usage
Read plan, balance, and scope
/v2/health
Check board freshness
/v2/odds/{type}
Get a matched board
/v2/odds/raw
Page the raw board
/v2/odds/event/{id}
Get one raw event by id
/v2/events
List events of a sport
/v2/sports
List sports and competitions
/v2/bookmakers
List bookmakers and exchanges
/v2/usage
Read plan, balance, and scope
/v2/health
Check board freshness
What agents get from Jentic-routed access to this vendor.
Setup
Wiring OddsRelay by hand means choosing between bearer and x-api-key auth, sending gzip for the raw board, tracking a monthly token pool, and respecting a per-account flood cap. Through Jentic you install once, import OddsRelay from the API Directory, store the key once, and your agent calls it.
Permission scoping
OddsRelay puts the board type in the URL path (/v2/odds/{type}), so a rule can pin your agent to one board such as each-way and the other operations you pick. Every route is a GET, so the choice is about which data the agent spends tokens on, not about writes.
Credential isolation
Your OddsRelay key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'get a matched betting board' or 'list bookmakers', and Jentic returns the matching OddsRelay operation with its input schema, including the board type and filter parameters, so the agent calls the right route directly.
Alternatives and complements available in the Jentic catalogue.
Specific to using OddsRelay API through Jentic.
What authentication does the OddsRelay API use?
Per its OpenAPI spec, the OddsRelay API takes the same key either as a bearer token in the Authorization header or in the x-api-key header, never in the query string. Server keys start with or_live_. A few routes are keyless: /healthz, /v2/status, /v2/openapi.json, and /v2/coverage when no key header is sent. Through Jentic the key is stored by your own instance and attached at call time, so the agent never handles it.
Which matched boards can I fetch with the OddsRelay API?
GET /v2/odds/{type} serves six boards: standard, 2up, dutching, each-way, extra-place, and bog, and also accepts the aliases two-up, each_way, and extra_place. Each board can be filtered by sports, bookmakers, exchanges, markets, and a kick-off window with commenceTimeFrom and commenceTimeTo. The standard and dutching boards serve decimal odds only.
What are the rate limits for the OddsRelay API?
The spec describes a flood cap per account over a short window and per minute, plus a cap on requests in flight. Replies to a valid key carry X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset, and going over returns too_many_requests with a Retry-After header. Spending is separate: calls draw from a monthly token pool shown by GET /v2/usage.
Is there an OddsRelay MCP server?
You don't need an MCP server to give your agent OddsRelay. Jentic connects it directly from the API Directory: import it, store your key once, and your agent calls the board and discovery operations on demand without another server's tool definitions sitting in its context.
How do I pull the each-way board through Jentic?
Search Jentic for 'get a matched betting board', load the getMatchedBoard operation, and execute it with type set to each-way plus a region and sports filter such as horse_racing. Jentic attaches your key and returns the board. To run it on your own infrastructure, install Jentic One from its GitHub repo.
Can I check what a request costs before spending tokens?
Yes. Add quote=true to any data request and OddsRelay returns its cost, your remaining balance, and the rate card without serving the data, and the quote itself is free. GET /v2/pricing publishes the full price table, and discovery routes, usage, pricing, and every refusal are free.
Can I limit what my agent is allowed to do with the OddsRelay API?
Yes. Write a rule that allows only GET /v2/odds/each-way and GET /v2/usage, and the agent can read the each-way board and check its balance but cannot page the raw board or other board types, and every call it makes is logged.
For Agents
Read matched betting boards that pair bookmaker back prices with exchange lay prices, pull raw per-event odds from every venue, and check token cost, coverage, and board freshness before calling.
Use for: Get the each-way board for today's horse racing in the uk region, Find matched 2up prices for soccer from selected bookmakers, List all bookmakers and exchanges OddsRelay serves, Retrieve every venue's prices for one event id
Not supported: Does not place bets, hold betting accounts, or move funds at any bookmaker or exchange. Use for reading matched and raw sports betting odds only.
The OddsRelay API serves sports betting odds that line up bookmaker back prices against exchange lay prices for each event, across six matched boards: standard, 2up, dutching, each-way, extra-place, and bog. It also returns a raw board of every venue's prices per event, paged by cursor, with optional liquidity and deep links, plus a single-event lookup by id. Discovery routes list sports and competitions, events, bookmakers and exchanges, and the regions a key covers, while usage, pricing, health, and coverage routes report token balance, the price table, and board freshness.
This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.
Base layer of spec validity and structural soundness.
Aggregated quality score from linter diagnostics, weighted by severity.
Percentage of `$ref` references that resolve successfully.
Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).
Structural correctness score based on schema issues using logarithmic dampening.
Clarity, completeness, and ingestion readiness for developers and tooling.
How richly the API is illustrated with examples.
Percentage of examples that conform to their schemas.
Percentage of operations with complete response definitions (success, client error, server error).
Health of API ingestion, bundling, and resolution within Jentic pipelines.
Semantic breadth, depth, and agent comprehension for AI systems.
Coverage of descriptions across API elements.
Coverage of RFC 9457 Problem Details for error responses.
Coverage, uniqueness, and casing consistency of operationIds for AI inference.
Coverage of summaries across operations/tags/info.
Functional utility, complexity comfort, and AI orchestration readiness.
Agent comfort level based on API operational and structural complexity.
Trust, risk posture, and security compliance.
Average quality of security schemes based on authentication method strength (weakest link for OAuth2).
Findability, semantic richness, and reasoning readiness.
Clarity and depth of descriptions across API elements.
Score it yourself
Every API in the directory is allowlisted, so you can re-score it with no key required.
npx @jentic/api-scorecard-cli score <openapi-url>