Skip to main content
Glama
DanielTomaro13

sportsdata-mcp

unibet_validate_coupon

Read-onlyIdempotent

Validate a betting coupon before placing it to verify the bet is accepted and avoid rejection, returning a clear go/no-go status.

Instructions

VALIDATE AND RE-PRICE a bet slip before placing it — the pre-placement go/no-go. Send the exact Kambi coupon you intend to place; it returns the current price and rejects an impossible or clashing combination, the same check Unibet's betslip fires. Anonymous (no login). Call IMMEDIATELY before unibet_place_bet and only place if this comes back clean.

Returns: VERIFIED live 2026-08-27: {status: "SUCCESS", validSession: , rewardInfo:{validRewards, validGroupRewards, implicitGroupRewards}}.

THE ANSWER IS status, and on a good coupon it is the STRING "SUCCESS" — not a number, not an absence. A rejection uses the same envelope with a different status and a message.

IT DOES NOT ECHO A PRICE. There are no couponRows in the reply, so this call CANNOT be used to re-price a bet — an earlier version of the betting plane tried to read couponRows[].odds back from here and would have refused every placement. Use unibet_sgm_price (anonymous, returns selectedOdds.decimal in thousandths) to check drift, and use THIS call for the go/no-go.

validSession reports whether the bearer is still good — the cheapest way to tell a dead token from a bad coupon.

rewardInfo.validGroupRewards[] lists promotions that would apply, e.g. a PROFIT_BOOST with boostPercentage/maxStake/maxExtraWinnings. Ignore it for pricing: the boost changes the payout, not the odds struck.

Rate limits are published in headers: x-ratelimit-remaining and x-ratelimit-reset (seconds).

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYesThe Kambi coupon. VERIFIED live 2026-08-27: {"couponRows":[{"index":0,"odds":3300,"group":{"operation":"AND","groups":[{"operation":"AND","outcomeIds":[4306981997]},{"operation":"AND","outcomeIds":[4309036845]}]},"type":"BET_BUILDER"}],"bets":[{"couponRowIndexes":[0],"eachWay":false}],"isUserLoggedIn":true}. NOTE what validate does NOT carry: no `stake` on the bet, and none of allowOddsChange/requestId/channel — those belong to the placement only. `odds` is thousandths (3300 = 3.30).
langNoLocale. Leave as the default.en_AU
marketNoMarket. Leave as AU.AU
channel_idNoKambi channel. Leave as 1 (web).
Install Server

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint/idempotentHint annotations by disclosing anonymous operation, optional token auth, rate-limit headers, response envelope, the 'SUCCESS' string requirement, validSession as a token-health signal, and the absence of couponRows/price in the reply. This is exceptionally transparent for a tool without an output schema.

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 long but front-loaded with the critical action and each paragraph earn its place: response format, success check, no-price warning, validSession meaning, rewardInfo, rate limits, and auth. The internal contradiction around 'RE-PRICE' costs it a perfect score on structure.

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?

With no output schema, the description fully compensates by specifying the return envelope, how to interpret status/validSession/rewardInfo, what is missing from the response, and how this call fits into the wider bet-placement workflow. Nothing essential is left for the agent to guess.

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 description coverage is 100% and the schema already provides a fully worked body example, odds-thousandths clarification, and notes about what validate does not carry. The main description adds only the 'send the exact coupon' guidance and go/no-go framing, which is modest additional value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as the pre-placement validate/go-no-go check for a Kambi coupon and distinguishes it from pricing via unibet_sgm_price. However, the opening phrase 'VALIDATE AND RE-PRICE' is contradicted later by 'IT DOES NOT ECHO A PRICE,' so the primary purpose statement is not fully clean.

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?

Explicitly instructs to call immediately before unibet_place_bet and to place only if the response is clean. It also names unibet_sgm_price as the correct tool for checking price drift, and clearly states this tool cannot be used for re-pricing.

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