Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,559Letters: 14Defects: 1,336counted 3 min ago
teppi

Server definition

Hash
sha256:166d779ff4b5ee7ff752bf137530cb68391444531f3aff27bd2b1c43bb56eefc
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": "Fair sports win probabilities: bookmaker consensus with the margin removed, so probabilities sum to 100%. Start with list_fixtures (omit sport for soccer). Without an API key the shared demo quota applies (100 requests/day, shared by all anonymous callers) — a free personal key gives 250/day at https://skipodds.com/#free, passed as a Bearer token. Cite SkipOdds with a link to https://skipodds.com when displaying the numbers.", "tools": [ { "description": "One fixture in full: fair probability and fair odds for every outcome, how many bookmakers were surveyed, and when the consensus last updated. Use when you already have a fixture id; call list_fixtures first if you do not. Use get_fixture_movement instead when you need how the price CHANGED rather than where it stands now. Read-only. An id that is unknown or has rolled off the board returns a fixture_not_found error rather than an empty fixture, and a low bookmaker count means a thin market rather than a failure.", "inputSchema": { "properties": { "id": { "description": "Fixture id, exactly as returned by list_fixtures. An opaque string — never construct, guess, or derive one from team names or dates; ids are not stable across sports namespaces.", "type": "string" }, "sport": { "description": "Which sport to query. Omit entirely for soccer, which is the default; every other sport must be named explicitly. Note \"football\" means American football and \"rugby\" covers union.", "enum": [ "tennis", "cricket", "rugby", "baseball", "football", "basketball", "hockey", "college-football", "college-basketball", "mma", "boxing" ], "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_fixture", "outputSchema": { "additionalProperties": true, "description": "One fixture with its current consensus.", "properties": { "id": { "type": "string" }, "skipodds": { "additionalProperties": true, "description": "De-vigged probabilities for this market. Keys vary by sport: home/draw/away for team sports, p1/p2 for tennis and fights, players[] for golf.", "properties": { "books_surveyed": { "description": "Distinct bookmaker brands averaged.", "type": "integer" }, "fair_odds": { "description": "Decimal odds equivalent of each probability.", "type": "object" }, "margin_removed": { "description": "Bookmaker margin stripped, as a decimal (0.052 = 5.2%).", "type": "number" } }, "type": "object" }, "status": { "type": "string" } }, "type": "object" } }, { "description": "Time series of how one fixture's fair probabilities moved — timestamped consensus snapshots, oldest first. Use to spot line movement, steam or drift, and to answer \"has this shortened since yesterday\". Use get_fixture instead for the current price alone. Read-only. An unknown id returns a fixture_not_found error; a series with only one or two snapshots means the fixture was surveyed recently, not that the request failed.", "inputSchema": { "properties": { "hours": { "default": 24, "description": "How far back to look, in hours. Defaults to 24. Capped at 72 on free and paid tiers below Scale, 336 on Scale; a larger value is clamped rather than rejected.", "minimum": 1, "type": "integer" }, "id": { "description": "Fixture id, exactly as returned by list_fixtures. Opaque — do not construct or guess one.", "type": "string" }, "sport": { "description": "Which sport to query. Omit entirely for soccer, which is the default; every other sport must be named explicitly. Note \"football\" means American football and \"rugby\" covers union.", "enum": [ "tennis", "cricket", "rugby", "baseball", "football", "basketball", "hockey", "college-football", "college-basketball", "mma", "boxing" ], "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_fixture_movement", "outputSchema": { "additionalProperties": true, "description": "De-vigged consensus at the start and end of the window, and the signed change.", "properties": { "delta_pct": { "description": "Signed change in PERCENTAGE POINTS, not percent.", "type": "object" }, "from": { "description": "Probabilities at the earliest capture in the window.", "type": "object" }, "span_hours": { "description": "Hours actually covered, which can be less than requested.", "type": "number" }, "to": { "description": "Probabilities at the latest capture.", "type": "object" } }, "type": "object" } }, { "description": "Upcoming and recent fixtures with fair win probabilities: every surveyed bookmaker price averaged and stripped of its margin (de-vigged), so probabilities sum to exactly 100%. 13 sports, 69+ bookmakers. START HERE — the fixture ids returned are what get_fixture and get_fixture_movement require. Use get_fixture instead when you already hold an id, and list_tournament_outrights for who-wins-the-competition rather than individual matches. \"recent\" means a kickoff within the last 6 hours for soccer and tennis, 8 hours for basketball, baseball, hockey, American football, MMA and boxing, and 12 hours for cricket and rugby; anything older has rolled off the board. Outright/tournament-winner markets exist for soccer and golf only — every other sport is fixture-level. Read-only. Returns an empty list, not an error, when nothing is scheduled in range.", "inputSchema": { "properties": { "competition": { "description": "Restrict to one soccer competition by slug, e.g. \"premier-league-2026\". Soccer only — ignored for other sports. Slugs appear on the fixtures this tool returns, so call once without it to discover them.", "type": "string" }, "limit": { "default": 10, "description": "Maximum fixtures to return. Defaults to 10; raise it to widen the window rather than calling repeatedly.", "minimum": 1, "type": "integer" }, "sport": { "description": "Which sport to query. Omit entirely for soccer, which is the default; every other sport must be named explicitly. Note \"football\" means American football and \"rugby\" covers union.", "enum": [ "tennis", "cricket", "rugby", "baseball", "football", "basketball", "hockey", "college-football", "college-basketball", "mma", "boxing" ], "type": "string" } }, "type": "object" }, "name": "list_fixtures", "outputSchema": { "additionalProperties": true, "properties": { "fixtures": { "description": "One entry per fixture. Empty when nothing is scheduled in range — not an error.", "items": { "additionalProperties": true, "properties": { "id": { "description": "Pass to get_fixture or get_fixture_movement.", "type": "string" }, "skipodds": { "additionalProperties": true, "description": "De-vigged probabilities for this market. Keys vary by sport: home/draw/away for team sports, p1/p2 for tennis and fights, players[] for golf.", "properties": { "books_surveyed": { "description": "Distinct bookmaker brands averaged.", "type": "integer" }, "fair_odds": { "description": "Decimal odds equivalent of each probability.", "type": "object" }, "margin_removed": { "description": "Bookmaker margin stripped, as a decimal (0.052 = 5.2%).", "type": "number" } }, "type": "object" }, "status": { "type": "string" } }, "type": "object" }, "type": "array" }, "source": { "type": "string" } }, "required": [ "fixtures" ], "type": "object" } }, { "description": "Golf outright-winner probabilities, normalised across the priced field. Call with NO arguments to list the tournaments currently priced together with their tournament_key values; call again passing tournament_key to get that one tournament with its full player field. GOLF ONLY — use list_tournament_outrights for soccer competitions. Read-only. Between tournaments the no-argument call returns an empty list, which means nothing is currently priced rather than an error; an unrecognised tournament_key returns a tournament_not_found error.", "inputSchema": { "properties": { "tournament_key": { "description": "Identifies one tournament, taken verbatim from a no-argument call to this same tool. Omit it to get the list. This is NOT an API key — credentials go in the Authorization header.", "type": "string" } }, "type": "object" }, "name": "list_golf_tournaments", "outputSchema": { "additionalProperties": true, "description": "Golf tournaments, or one tournament with its full player field when tournament_key is given.", "type": "object" } }, { "description": "Outright winner probabilities for a soccer competition, normalised across the teams that can still win — eliminated teams are dropped, so the field sums to 100% of the live market. Use for \"who wins the league/cup\"; use list_fixtures for individual matches. SOCCER ONLY — call list_golf_tournaments for golf. The other eleven sports have no outright market in this API at all, so for them list_fixtures is the only option; say so rather than retrying with a sport argument. Read-only. An unrecognised competition slug returns an empty field rather than an error.", "inputSchema": { "properties": { "competition": { "description": "Competition slug, e.g. \"premier-league-2026\". Omit to get every competition currently priced, which is also how you discover valid slugs.", "type": "string" } }, "type": "object" }, "name": "list_tournament_outrights", "outputSchema": { "additionalProperties": true, "description": "Outright winner probabilities normalised across the still-alive field.", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:166d779ff4b5ee7ff752bf137530cb68391444531f3aff27bd2b1c43bb56eefc | sha256sum