Predixsport | AI-sport-platform

Probability-calibrated sports predictions (NBA, EuroLeague, Football, ATP/WTA tennis) with full distributions, model transparency and published accuracy —…

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноМожет изменять данные

Что умеет

  • Get Upcoming Predictions: Fetch matches scheduled in the next ``days`` days for one sport, with the AI win probability, expected total / spread (where applicable), and key contextual fields (teams, le
  • Search Predictions: Search HISTORICAL match predictions with filters. Use this to discover ``match_id`` values for ``get_match_detail``, or to retrieve past predictions for analysis. Unlike ``get_upco
  • Get Match Detail: Fetch the FULL prediction payload for one match by id. Includes everything: win probabilities, expected score / spread / total points, full Poisson distributions and CDFs (when avail

Какие данные видит

Нужен ли аккаунт

Не нужен: сервер работает без входа

Probability-calibrated sports predictions (NBA, EuroLeague, Football, ATP/WTA tennis) with full distributions, model transparency and published accuracy — read-only MCP over a documented REST API.

YouTube tutorial: https://www.youtube.com/watch?v=8Yolscq8yOk&feature=youtu.be

Free tier: 200 requests/month.

Список инструментов сервера (10)

Технические названия из tools/list. Нужны только разработчикам.

get_upcoming_predictionsFetch matches scheduled in the next ``days`` days for one sport, with the AI win probability, expected total / spread (where applicable), and key contextual fields (teams, league, surface, tournament). Use this when the user asks 'what's happening today/this week'. The window is inclusive on today's date in UTC. Returns an empty list with HTTP 200 when no matches fall in the window — that's a legitimate state during off-season, NOT an error. TENNIS DATE SEMANTICS — IMPORTANT (applies to BOTH ``tennis`` = ATP men's tennis AND ``wta`` = WTA women's tennis): the ``date`` field on tennis-family upcoming responses is the TOURNAMENT-SCHEDULED START DAY, NOT the day of the specific match. A Masters 1000 spans 7–14 days; every match across all rounds shares the same ``date``. Do NOT interpret a ``date`` in the past as 'match already played' — a quarterfinal of Rome 2026 (tournament start 2026-05-06) genuinely plays around 2026-05-13, but the response will still show ``date: 2026-05-06``. The ``days`` parameter is kept for API symmetry but NOT applied to tennis or wta (the tours reschedule frequently, filtering on the stale ``date`` would drop legitimate upcoming matches); the endpoint instead returns the freshest inference snapshot in full. PREDICTION HORIZON — IMPORTANT (NBA): NBA predictions are GATED on the expected starting five AND injury reports, which are only published a FEW HOURS before tip-off — not days. Therefore NBA predictions for a given match appear in the upcoming endpoint ONLY on game day, typically a few hours before the scheduled start. An NBA call with ``days=14`` or ``days=60`` returning ZERO matches is the STEADY STATE, NOT a pipeline failure — even mid-playoffs, tomorrow's game has no prediction yet because the lineup is not yet known. To get today's NBA card use ``days=1``; if even ``days=1`` is empty, either there is no NBA game today or the daily inference job has not yet run (it fires once the lineup is published). Before concluding 'the pipeline is broken' confirm there is an NBA game scheduled for today on a third-party source, and only then escalate. MODEL INDEPENDENCE: each predicted metric in the response comes from a SEPARATE, INDEPENDENTLY-TRAINED model — football 1X2 / over-under / BTTS are three distinct classifiers; tennis and wta winner / total_games / spread / aces / double_faults / tiebreak / exact_score are seven distinct models per tour; NBA winner / spread / total_points and the per-player props are independent. Small numerical inconsistencies between them on the same match (e.g. 1X2 marginal not equalling the sum of exact-score outcomes) are EXPECTED BY DESIGN and not bugs. To audit any single model's reliability call ``get_model_calibration(sport, model_id)`` — discover model_id values via ``list_models``.
search_predictionsSearch HISTORICAL match predictions with filters. Use this to discover ``match_id`` values for ``get_match_detail``, or to retrieve past predictions for analysis. Unlike ``get_upcoming_predictions`` this does NOT filter by date automatically — you can pass ``from_date``/``to_date`` explicitly to bound the search. Tennis-family player names (both ``tennis`` = ATP men and ``wta`` = WTA women) are alias-resolved (``djokovic`` → ``Novak Djokovic``) and passing two ``players`` is bidirectional (matches regardless of which side of the match each player is on). Same model-independence caveat as ``get_upcoming_predictions``: each predicted metric is its own model. Cross-metric inconsistencies are by design; verify per-model quality via ``get_model_calibration``.
get_match_detailFetch the FULL prediction payload for one match by id. Includes everything: win probabilities, expected score / spread / total points, full Poisson distributions and CDFs (when available), tennis-family (ATP ``tennis`` and WTA ``wta``) tiebreak probability and exact-score distribution, NBA per-player projections (points / rebounds / assists / 3-pointers). This is the richest single endpoint — prefer it over multiple narrower calls when the user asks for analysis of a specific game. MODEL INDEPENDENCE: every probabilistic field in this payload (1X2, over/under, BTTS, winner, spread, total, tiebreak, exact_score, aces, double_faults, each player prop) is the output of a SEPARATE model trained independently. Cross-metric inconsistencies on the same match — e.g. a 79% home win paired with a 49% over-2.5, or a winner-classifier marginal that differs from the exact-score sum — are EXPECTED, not bugs: the models do not share a joint likelihood. When a user flags an apparent inconsistency, the right follow-up is ``get_model_calibration(sport, model_id)`` on each model involved to inspect ECE and reliability bins. KEY FACTORS (explainability): ``key_factors`` carries a concept-level attribution of the winner prediction — WHY the model favours one side, computed with gradient-based attribution on the production network (not editorial opinion). Each factor has a ``label`` (e.g. 'Surface fit', 'Starting five', 'Chance creation (xG data)'), ``prob_points`` (signed win-probability percentage points; positive favours player_one / the home team) and a ``stable`` flag — only quote stable factors as decisive. Factors approximately sum to the gap between the served win probability and an even matchup; the fixed home-advantage term is marked ``synthetic``. For football the factors compare the two sides directly (the draw is priced separately). ``key_factors`` is null for matches predicted before June 2026. Use it to answer 'why does the model favour X?' WITHOUT guessing from the raw stats. Football additionally carries ``key_factors_under_over`` — the same attribution applied to the independent under/over 2.5 goals model: directions are 'under'/'over' and per-team factors have a ``side`` ('home'/'away') naming the team responsible. Use it for 'why under/over 2.5?' questions.
get_player_propsFetch per-player projections for one BASKETBALL match — NBA or EuroLeague. Returns the same player array that's nested inside ``get_match_detail`` — exposed as a standalone tool for fantasy / props use cases that don't need the team-level fields. Each player carries expected points, rebounds, assists and 3-pointers, plus the underlying distribution for confidence. EuroLeague additionally projects PIR (Performance Index Rating), the league's signature box-score summary stat. Football, tennis and wta have no player-prop models, so this tool is basketball-only (``sport`` is nba or euroleague). MODEL INDEPENDENCE: each prop family (points / rebounds / assists / 3-pointers / PIR) is its own regressor, trained separately. The metrics for a single player are NOT constrained to be jointly consistent. Per-model calibration is available via ``get_model_calibration``.
get_tournament_simulationsTitle forecasts from Monte Carlo simulation, for five sports. TENNIS (default): live and just-finished ATP (men's) tournaments — the remaining bracket is played out 20,000 times on calibrated player ratings; each player carries `p_title` (share of simulated tournaments won) and `p_reach` per round (e.g. 'Quarterfinals': 0.61; 1.0 = already there, 0.0 = eliminated), plus `expected_wins`. WTA (`sport: 'wta'`): the same tournament forecasts for the WTA women's tour, read from the WTA forecast table — identical response shape to tennis (players carry `wta_id` instead of `atp_id`); an empty list simply means no WTA forecast snapshot is live yet. NBA (`sport: 'nba'`): the remaining season — regular season, play-in and best-of-7 playoff brackets — is simulated 10,000 times on team Elo ratings; each team carries `p_champion` and `p_reach` per stage (play_in, playoffs, conf_semifinals, conf_finals, finals, champion), and the response includes a predicted playoff `bracket`: per series, the probability of each matchup, each side's series win probability, and the series-score distribution (e.g. wins 4-1 in 32% of simulations). EUROLEAGUE (`sport: 'euroleague'`): the remaining European club basketball season — regular season, Play-In, best-of-5 quarterfinals and the single-game neutral-site Final Four — simulated 10,000 times on club Elo/Glicko ratings; each club carries `p_champion` and `p_reach` per stage (play_in, playoffs, final_four, finals, champion), and the response includes a predicted `bracket` keyed by slot (Play-In games, the four best-of-5 quarterfinals with 3-0…3-2 score distributions, and the Final Four semifinals + final). FOOTBALL (`sport: 'football'`): the remaining fixtures of each domestic league season (Serie A, Premier League, La Liga, Bundesliga, Ligue 1) are sampled as full scorelines 10,000 times on team Elo ratings — draws and goal difference are modelled; each club carries `p_champion`, expected final points/position (`expected_points`, `mean_rank`) and `p_reach` per TABLE BAND (champions_league, europa_league, relegation, plus relegation_playoff where the league has the slot; band sizes in the league-level `structure`). No bracket — the final league table IS the outcome. Narrow with `league`; omitted = all five. Forecasts refresh on every prediction run — completed games are locked in, so probabilities sharpen continuously; `run_date` tells you which day's snapshot you're reading. Use this for 'who will win Wimbledon?', 'who wins the NBA title?', 'who wins the EuroLeague?', 'who wins Serie A?', 'who gets relegated from the Premier League?', 'most likely NBA Finals score?'. Tennis and wta can be narrowed with `tournament` (slug like 'wimbledon', 'stuttgart'). An empty list means nothing is in play within the freshness window (off week / off-season) — NOT an error. For single upcoming-match predictions use get_upcoming_predictions instead.
get_current_ratingsFetch the latest power-rankings snapshot for a sport. NBA + football + EuroLeague return per-team ratings with rank ordering — NBA: ELO; football: ELO + Glicko2 (attack / defense splits); EuroLeague: ELO (season-relative) + Glicko-2 with rating-deviation, plus each club's current-season win / loss record. Tennis (ATP men) and wta (WTA women) return per-player ratings including surface-specific ELO (hard / clay / grass), form_index, and race ranking. The snapshot reflects the most recent ratings-pipeline run for the relevant season — it's typically updated daily during in-season periods. An empty player list for wta means its ratings pipeline has not published a snapshot yet — not an error.
get_model_performanceFetch aggregate accuracy / Brier-score / log-loss metrics for the AI models behind a given sport. Use this when the user asks 'how accurate is your NBA model?' or wants to compare expected vs realised outcomes. Production source is the in-season performance table (rolling, refreshed as matches resolve).
get_model_calibrationFetch a model's reliability diagram data — the empirical frequency of outcomes in each predicted-probability bucket. A well-calibrated model has empirical frequency ~ predicted probability across all buckets. Returns the underlying bin data plus summary metrics. Useful when the user wants to assess whether a 70% prediction actually wins ~70% of the time historically. PRIMARY USE CASE — APPARENT INCONSISTENCIES BETWEEN MODELS: the prediction endpoints expose multiple independently-trained models per match. When a user challenges a discrepancy ('how can 80% home win coexist with 49% over-2.5?'), fetch the calibration of EACH model involved and compare reliability — not assume one prediction is wrong. Call this tool with each relevant ``model_id`` from ``list_models``. HOW TO READ THE RESPONSE — IMPORTANT, do NOT binarize: • The summary contains TWO INDEPENDENT FAMILIES of metrics. Don't conflate them: (a) CALIBRATION metrics — measure whether stated probabilities match observed frequencies: ``ece`` (binary), ``calibration_mae`` (avg gap between expected and observed quantile proportion), ``calibration_max_error`` (worst single bin gap), ``coverage_90`` (fraction of labels inside the model's 90% predictive interval — well-calibrated value is ~0.90). (b) ACCURACY metrics — measure how close the POINT estimate is to the truth: ``correlation``, ``mae``, ``rmse``, ``brier_score``, ``accuracy``. These are NOT calibration. A regressor can be perfectly calibrated AND have low correlation when the target has high irreducible variance (which is the norm for tennis stat regressors — intra-match noise dominates). • There is INTENTIONALLY NO binary 'calibrated / not calibrated' flag in this payload. Binary verdicts mislead on noisy sport-stat domains where modest deviations from a research-grade threshold do not make a model unusable. For Poisson regressors a coverage_90 in 0.78–0.85 with calibration_mae 0.05–0.10 is OPERATIONALLY ACCEPTABLE (slight under-coverage = intervals a bit narrow, point estimates still useful). NEVER report a model as 'broken' or 'low quality' from these metrics alone — quote the underlying number and frame the deviation in context (e.g. 'coverage is 0.78 vs nominal 0.90 → intervals moderately under-covered, point estimates fine').
list_sportsList the supported sports and leagues. NBA covers regular season + playoffs. Football covers Serie A, Premier League, La Liga, Bundesliga, Ligue 1 (5 leagues). Tennis covers the ATP men's tour; wta covers the WTA women's tour. Always call this first if you're unsure what's available.
list_modelsList all AI models with their target variable and family (classifier / Poisson regressor / softmax / etc). Use this to discover ``model_id`` values for ``get_model_calibration``. Optionally filter by sport. Predixsport trains a SEPARATE, INDEPENDENT model per target (football: 1X2, over/under, BTTS, goal spread, corners, shots; tennis and wta, each per tour: winner, total_games, spread, aces, double_faults, tiebreak, exact_score; NBA: winner, spread, total_points, plus a per-prop Poisson per player metric). Use ``list_models`` as the audit entry point: each row maps a model_id to the target it predicts, so callers know which model to interrogate via ``get_model_calibration`` for any given metric in a prediction payload.
Predixsport | AI-sport-platform: подключить к Claude, ChatGPT, Cursor · Connectors.fun