Whistle.day - Run Your Tournament
turon-honza/whistle-dayRun a whole sports tournament from a chat: create it, add teams, draw groups and brackets, enter results, and put a live projector screen on the wall.
Score: 100/100
Handshake verified by our own probe.
Tools · 25
Add a court, pitch or table. Courts are what the schedule puts matches on and what the projector groups them by, so a tournament with none can be played but not organised: update_fixture's court argum…
Add a team/participant to a tournament
Make a public page for a club at /c/{slug}, which lists the tournaments put on it with list_on_club. One per account, and only on a signed-in account: the temporary one create_tournament makes is gone…
Create a projector display screen for a published tournament
Make a link that hands this tournament to a person. They open it, set an email and a password, and the account this session has been acting as becomes theirs. Single use, and it expires. Afterwards th…
Create a stage in a tournament (e.g. round_robin group)
Create a draft tournament. Signed in, it is created on that account. Not signed in, it is created on a temporary account that lasts as long as this connection does, and the other tools then work on it…
Generate pools, slots and fixtures for a stage. Use dry_run=true to preview without saving.
Get a fixture by ID with games
The signed-in account's club, if it has one, and every tournament it owns with whether that tournament is on the club's public page. club is null when there is none yet; create_club makes one.
Get a stage by ID with its pools
Get a stage's cross-pool table: every pool's first place, then every second, then every third, ranked within each of those tiers. This is what "the best third-placed teams" is decided on, and what a s…
Get a tournament by ID
The courts a tournament is played on. Their ids are what update_fixture's court argument takes.
List entries (participants) in a tournament
List fixtures in a stage, optionally filtered by pool, round, or status
Put a tournament on the club's public page, or take it off with listed=false. The page links to the tournament's screen, so this publishes it: only a tournament this account owns can be listed, and a …
List pools in a stage
List stages in a tournament
List standings for a pool
List the tournaments this session can act on
Publish a tournament (set status to live) so the display works
Re-resolve a stage's fixture propagation and standings. Use after correcting scores.
Rename the signed-in account's club or change its page's colour. Leave out what should stay as it is. The address cannot be changed, and a logo is uploaded on the account screen.
Update a fixture's score and status (settle a match)
Prompts · 2
Find the matches that still need a score and settle them.
Build a whole tournament with the tools, in order: an account, the teams, the courts, a stage, its draw, and a link to hand over.
How to use
Claude Desktop or claude.ai: add a custom connector (Customize → Connectors; on Team and Enterprise plans an owner adds it under Organization settings → Connectors) with this server URL: https://whistle.day/api/mcp
Cursor or Cline: add to your MCP config:
{
"mcpServers": {
"whistle.day_-_run_your_tournament": {
"url": "https://whistle.day/api/mcp",
"transport": "http"
}
}
}