Calibrated, sourced football predictions: odds, tournament sims, standings, brackets, model card.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Footdigest: a competition's knockout bracket, matches grouped by round (round of 32 through the final) with teams, scores, shootouts, status, and winners. Give the competition slug.
Competition slug, e.g. world-cup-2026.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Footdigest: a competition's knockout bracket, matches grouped by round (round of 32 through the final) with teams, scores, shootouts, status, and winners. Give the competition slug.
| Argument | Type | Description |
|---|---|---|
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition"
],
"properties": {
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}Footdigest: a competition's defining moments, the results that moved teams across the qualification line, most consequential first, with the group table crossings. Give the competition slug; optional `limit`.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max moments to return (default 5, max 20). |
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition"
],
"properties": {
"limit": {
"type": "integer",
"description": "Max moments to return (default 5, max 20)."
},
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}Footdigest: the all-time head-to-head record between two men's national teams from the historical results dataset, wins, draws, goals, recent meetings, and penalty shootouts. Ask by team names.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Recent meetings to include (default 5, max 20). |
| team1* | string | First team name, e.g. France. |
| team2* | string | Second team name, e.g. Spain. |
{
"type": "object",
"required": [
"team1",
"team2"
],
"properties": {
"limit": {
"type": "integer",
"description": "Recent meetings to include (default 5, max 20)."
},
"team1": {
"type": "string",
"description": "First team name, e.g. France."
},
"team2": {
"type": "string",
"description": "Second team name, e.g. Spain."
}
}
}Footdigest: one fixture in detail, teams, status, kickoff, score, stage, venue, and the event timeline (goals, cards, subs). Ask by `match_id` (from get_schedule).
| Argument | Type | Description |
|---|---|---|
| match_id* | integer | Fixture id, e.g. from get_schedule. |
{
"type": "object",
"required": [
"match_id"
],
"properties": {
"match_id": {
"type": "integer",
"description": "Fixture id, e.g. from get_schedule."
}
}
}Footdigest: the AI-generated brief for a match, the pre-match five-lens brief, the post-match recap, and event impacts, sourced from Footdigest's engine. Ask by `match_id`; optional `locale` (en or fr).
| Argument | Type | Description |
|---|---|---|
| locale | string | Language: en (default) or fr. |
| match_id* | integer | Fixture id (from get_schedule). |
{
"type": "object",
"required": [
"match_id"
],
"properties": {
"locale": {
"type": "string",
"description": "Language: en (default) or fr."
},
"match_id": {
"type": "integer",
"description": "Fixture id (from get_schedule)."
}
}
}Footdigest: calibrated home/draw/away probabilities and expected goals for a football matchup, from the backtested Dixon-Coles + Elo engine. Ask by `match_id`, or by `home_team` and `away_team` names for any matchup. Every answer is sourced and timestamped; see get_model_card for the methodology.
| Argument | Type | Description |
|---|---|---|
| match_id | integer | Scheduled fixture id. |
| away_team | string | Away (or second) team name. |
| home_team | string | Home (or first) team name. |
{
"type": "object",
"required": [],
"properties": {
"match_id": {
"type": "integer",
"description": "Scheduled fixture id."
},
"away_team": {
"type": "string",
"description": "Away (or second) team name."
},
"home_team": {
"type": "string",
"description": "Home (or first) team name."
}
}
}Footdigest: the live model card behind every prediction. Returns the backtested RPS versus a naive baseline, the out-of-sample size, the calibration table, the methodology, and an explicit list of what is not measured. Use it to audit any number the other tools return.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}Footdigest: a team's chance of qualifying from its group, and how each remaining group result would move it ("if X beats Y, Z's chances become..."). Seeded and reproducible. Give the competition slug and a team name.
| Argument | Type | Description |
|---|---|---|
| seed | integer | Seed for reproducibility (default 42). |
| team* | string | The team whose qualification you're asking about. |
| trials | integer | Simulated tournaments (default 10000, capped at 50000). |
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition",
"team"
],
"properties": {
"seed": {
"type": "integer",
"description": "Seed for reproducibility (default 42)."
},
"team": {
"type": "string",
"description": "The team whose qualification you're asking about."
},
"trials": {
"type": "integer",
"description": "Simulated tournaments (default 10000, capped at 50000)."
},
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}Footdigest: a competition's fixtures with teams, kickoff time, status, score, and stage. Give the competition slug; optionally filter by `status` (e.g. scheduled, live, finished) and cap with `limit`.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max fixtures to return (default 20, max 100). |
| status | string | Optional status filter, e.g. finished. |
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition"
],
"properties": {
"limit": {
"type": "integer",
"description": "Max fixtures to return (default 20, max 100)."
},
"status": {
"type": "string",
"description": "Optional status filter, e.g. finished."
},
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}Footdigest: current group standings for a competition, points, goal difference, position, and qualification status per team. Give the competition slug (e.g. "world-cup-2026"), optionally a single group code.
| Argument | Type | Description |
|---|---|---|
| group | string | Optional group code, e.g. A. |
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition"
],
"properties": {
"group": {
"type": "string",
"description": "Optional group code, e.g. A."
},
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}Footdigest: who is suspended for their next match and who is one booking away from a ban in a competition, per the competition's fair-play rules. Give the competition slug.
| Argument | Type | Description |
|---|---|---|
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition"
],
"properties": {
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}Footdigest: a team's active injuries in a competition, player, type, status, and expected return. Give the competition slug and a team name.
| Argument | Type | Description |
|---|---|---|
| team* | string | Team name, e.g. France. |
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition",
"team"
],
"properties": {
"team": {
"type": "string",
"description": "Team name, e.g. France."
},
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}Footdigest: each team's chances of qualifying from the group stage, reaching the final, and winning the competition, from a seeded strength-aware Monte Carlo. Pass `trials` and `seed` to control and reproduce the run. Identify the competition by its slug (e.g. "world-cup-2026").
| Argument | Type | Description |
|---|---|---|
| seed | integer | Seed for reproducibility (default 42). |
| trials | integer | Simulated tournaments (default 10000, capped at 50000). |
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition"
],
"properties": {
"seed": {
"type": "integer",
"description": "Seed for reproducibility (default 42)."
},
"trials": {
"type": "integer",
"description": "Simulated tournaments (default 10000, capped at 50000)."
},
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}Footdigest: run the seeded Monte Carlo over a competition's group stage and return each team's advancement probabilities. Pass `trials` and `seed` to control and reproduce the run; the same inputs always return the same numbers. Identify the competition by its slug (e.g. "world-cup-2026").
| Argument | Type | Description |
|---|---|---|
| seed | integer | Seed for reproducibility (default 42). |
| trials | integer | Simulated tournaments (default 10000, capped at 50000). |
| competition* | string | Competition slug, e.g. world-cup-2026. |
{
"type": "object",
"required": [
"competition"
],
"properties": {
"seed": {
"type": "integer",
"description": "Seed for reproducibility (default 42)."
},
"trials": {
"type": "integer",
"description": "Simulated tournaments (default 10000, capped at 50000)."
},
"competition": {
"type": "string",
"description": "Competition slug, e.g. world-cup-2026."
}
}
}