Skip to main content
Glama
DanielTomaro13

sportsdata-mcp

unibet_sgm_price

Read-onlyIdempotent

Price a same-game multi or bet builder by supplying two or more outcome IDs from one Unibet/Kambi event, and receive the correlation-adjusted price plus eligible outcomes.

Instructions

PRICE A SAME GAME MULTI you choose — give it two or more outcome ids from one Unibet/Kambi event and get the correlation-adjusted Bet Builder price, plus the list of outcomes eligible to join it. Prices combinations Unibet has not pre-built (for those, see unibet_kambi_call operation='event_prepack').

Returns: {eventId, selectedOutcomeIds:[…], selectedOdds:{decimal: 3400, american, fractional}, combinableOutcomeIds:[…]} — VERIFIED live 2026-08-27 against AFL Western Bulldogs v Collingwood (event 1028856020), unauthenticated.

ODDS ARE IN THOUSANDTHS. decimal: 3400 MEANS 3.40, not 3400. Kambi does this everywhere — the odds and line on every outcome in the betoffer feed are scaled the same way (1920 = 1.92, line 1500 = +1.5) — and a price reported 1000x too large is the loudest wrong answer available. Divide by 1000.

THE PRICE IS NOT THE PRODUCT OF THE LEGS. Bulldogs head-to-head (1.92) with Over 170.5 (1.88) prices 3.40, against a naive 3.6096.

1001.0 IS A CEILING, NOT A PRICE. Long multis stop moving at decimal: 1001000 — six, eight, ten, twelve and fourteen legs all returned exactly that on the verified event while the naive product kept climbing. Treat 1001.0 as capped, never as a quote and never as an edge.

selectedOutcomeIds IS THE ECHO, AND IT IS WHY THIS IS THE SAFE ONE. Unibet is the only book of the five that says exactly what it priced. Duplicate ids are deduplicated SILENTLY, so compare this list against what you sent before reporting anything.

A SINGLE LEG RETURNS NO PRICE AT ALL — selectedOdds is simply ABSENT rather than an error, and the same happens when duplicates collapse to one leg. A missing key here means not priced, not zero.

combinableOutcomeIds IS ELIGIBILITY, NOT COMPATIBILITY. It lists what can EVER appear in a bet builder on this event — 940 of the event's 1137 outcomes on the verified fixture — and does NOT drop what clashes with your current picks: both the opposite head-to-head side and the line the head-to-head already implies stayed listed, and both then failed with a 400. Its real use is separating a leg that is INELIGIBLE from one that merely CONFLICTS, which the error message does not do.

REFUSALS ARE REAL HTTP STATUS CODES WITH A TYPED BODY — the only book of the five that uses them properly, so no error signal is needed here. Four seen live, and they mean different things: 400 'Combination is not supported by the selected strategy' for legs that clash or imply one another; 400 'Invalid outcomes' with an invalidOutcomes list naming ids that are not BET-BUILDER ELIGIBLE (an ordinary outcome from the betoffer feed can be rejected this way — check it against combinableOutcomeIds first); 409 'Impossible outcome selection', with invalidOutcomes EMPTY, when the combination cannot happen at all (Bulldogs to win with Collingwood by 1-39); and 400 'Unknown event'. The empty list on the 409 is not a bug to route around — the impossibility is in the COMBINATION, so no single id is at fault.

The upstream body also repeats the event's ENTIRE bet-offer book — 626 offers, 647 KB of a 610 KB response — which unibet_kambi_call(operation='event_betoffer') already returns. It is projected away here.

Example: Price Bulldogs to win with over 170.5 points {"eventId": 1028856020, "outcomeIds": "4306981996,4309057043"}

Auth: works without a key; UNIBET_ACCESS_TOKEN unlocks more if set.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
langNoLocale. Leave as the default.en_AU
marketNoMarket. Leave as AU — Bet Builder availability and pricing are per market.AU
eventIdYesKambi event id, e.g. 1028856020 — from unibet_kambi_call(operation="sport_matches") or any Kambi event feed. Required — part of the URL path.
channel_idNoKambi channel. Leave as 1 (web).1
outcomeIdsYesThe legs, as outcome ids joined by COMMAS in one string: "4306981996,4309057043". Ids come from unibet_kambi_call(operation="event_betoffer") — `betOffers[].outcomes[].id` — and all must belong to THIS event. Give two or more: a single id returns the combinable list with NO price. Order does not matter and is not preserved in the echo. Required — part of the URL path.
Install Server

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, and open-world hints, but the description adds substantial behavioral detail beyond them: odds are in thousandths, prices cap at 1001.0, selectedOdds can be absent rather than zero, duplicate IDs are silently deduplicated, and refusal status codes have distinct meanings. It also clearly explains that combinableOutcomeIds signals eligibility, not compatibility, which would be very hard to discover safely otherwise. No contradiction with annotations.

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 definition is front-loaded with purpose and return shape, then organized into clearly labeled behavioral warnings with an example near the end. It is long, but nearly every section addresses a distinct trap that would otherwise lead to a wrong value or misunderstanding. A slight deduction for verbosity and some redundancy around scaling and eligibility; otherwise it earns its length.

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?

There is no output schema, so the description carries the full burden of explaining return values and failure modes. It covers selectedOdds formats, selectedOutcomeIds as an echo, combinableOutcomeIds semantics, missing-key behavior, four different HTTP refusal cases, auth requirements, and the upstream body projection. This is complete enough for an agent to call the tool correctly and interpret results confidently.

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 input schema already covers 100% of parameters with detailed descriptions including default values, comma-joined outcomeIds, single-leg no-price behavior, and ID provenance. The description adds value with a concrete worked example, the silent-deduplication warning, and emphasis that all outcome IDs must belong to one event. Most of the extra value is behavioral rather than purely parameter syntax, so a 4 is appropriate rather than a 5.

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 opening sentence names the action (price), the object (a same-game multi built from two or more outcome IDs in one Unibet/Kambi event), and the key scope: it prices combinations Unibet has not pre-built. It also distinguishes itself from unibet_kambi_call operation='event_prepack', which covers pre-built combos. This is clear, specific, and differentiates from sibling SGM tools.

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

Usage Guidelines5/5

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

The description explicitly says when to use it: for user-chosen combos that Unibet has not pre-built, and directs the agent to unibet_kambi_call operation='event_prepack' for the alternative. It also states the core precondition — two or more outcome IDs from one event — and warns that a single leg produces no price, which is critical usage guidance.

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

Other Tools

Latest Blog Posts

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/DanielTomaro13/sportsdata-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server