Game Development
turnale.app
Manages tournaments and player rosters for competitive gaming events.
ENDPOINT 1
https://mcp.turnale.app
MCP server metadata
- Name
- turnale
- Version
- 0.1.2
Turnale runs recreational racket-sport tournaments end to end. Five things make one: SPORT · the PLAYER LIST or just a HEADCOUNT · SINGLES OR DOUBLES · the TIME BUDGET · SOCIAL OR COMPETITIVE. Ask for what you do not know yet, ONE question at a time. THAT IS A LIST OF THINGS TO LEARN, NOT A FORM TO FILL IN ORDER. Read every reply for whatever it answers, not for what you asked: 'competitive' settles the vibe, 'knockout' or 'americano' settles the format, 'tomorrow at 18:00' settles the time, a pasted list settles the players. Take it, tick it off, and move to the next unknown — even when it answers a question you had not asked yet. If a reply does not answer YOUR question it has almost certainly answered a different one, so look for that; repeating a question the organiser has already moved past is always wrong, and asking the same thing twice is the single worst thing you can do in this interview. Only two of the five must be settled before a format: the SPORT, and SINGLES OR DOUBLES (ASK it — never infer it from the sport; it decides which formats exist at all, since americano and mexicano are doubles). Everything else has a sensible default and can be changed later. A missing time budget is FINE — suggest_format works without one and assumes a normal evening; a tournament with no start time is FINE too. NEVER hold up a tournament over something optional: make the obvious assumption, create it, and say what you assumed. Headcount only → create with signup_open so players add themselves via the page link; NEVER invent placeholder names. NEVER ask an open 'which format?' question. If the format is unsettled or the organiser uses only tennis vocabulary, call suggest_format and relay the `menu` text that comes back to the organiser word for word — unchanged if they are writing English, translated only if they are writing something else, and NEVER into a language they have not used themselves — it already contains each option's one-line explanation and time math, so they can read and choose in one step. After create_tournament, LEAD with the shareable page link — that is what the organiser opens and shares with players (schedule, live standings, self-signup). COPY EVERY LINK A TOOL GIVES YOU EXACTLY as it came — same https://, same host, same path, character for character. Never retype one from memory, never add 'www.', never drop the scheme, never shorten or prettify it. A rewritten link is a broken link, and the organiser sends it to twenty people before anyone tries it. Mention the organiser key once, secondarily, with the cannot-be-recovered warning: it is only used to manage the tournament through this chat, never by players. Re-share the page link at key moments — draw generated, tournament started, results coming in, tournament ended (get_briefing returns it any time). Mutations are idempotent (request_id) and mistakes are reversible via undo_last_change — prefer preview, then confirm. Set language to the language the organiser is WRITING to you in when create_tournament's list supports it (Spanish → language: 'es'), so the page, PDFs and player emails follow (default English; never set it on a hunch — only from the language they actually use). Always write to the organiser in the language THEY are writing to you in, and never in one they have not used.
Known tools 30
add_playersAdd players to the roster in bulk (parse pasted lists or spreadsheets yourself and send structured entries — never invent placeholder names; use signup mode when names aren't known yet).
Potential side effectsremove_playerRemove one or MANY players before any result is recorded (afterwards use withdraw_player or replace_player) — pass player_names to clear several in one call, never loop one-by-one.
Potential side effectsset_pairsFix the doubles pairs: pass explicit pairs by name, or auto-pair (random or level-balanced).
Inferred read-onlyupdate_settingsChange the tournament name, start time, match duration, break/changeover minutes, courts (count or names), house rules, or courtside score entry from the page.
Inferred read-onlypromote_playerMove a waitlisted player onto the active roster when a spot opens (signed-in players are notified by email).
Potential side effectsget_briefingCompact full state of the tournament — settings, roster, progress, next matches, standings, page link.
Inferred read-onlyget_standingsCurrent standings per group/structure, tiebreak-ordered (wins → head-to-head → set diff → game diff; americano: total points).
Inferred read-onlyget_resultsFinal placements (or placements-so-far for a tournament that ended early).
Inferred read-onlyget_audit_logChronological record of every change (newest first) — the answer to "who changed that?
Inferred read-onlyget_exportFull structured export of the tournament document (players, draws, results) — for the organiser's own records or data portability.
Inferred read-onlyget_pdfThe printable PDF itself, returned as a base64 embedded resource — use this when the organiser wants the file handed to them and your client cannot fetch URLs.
Inferred read-onlyrescheduleShift the start time, add a delay, or move one match to a specific court/slot.
Inferred read-onlydelete_tournamentSoft-delete the whole tournament (recoverable by support for 7 days, then gone).
Potential side effectsrecord_feedbackRecord a request for something Turnale does not support yet (a format, scoring variant, or feature), so it can be considered for the roadmap.
Inferred read-onlysuggest_formatRecommend tournament formats in plain language, with the round/time math done by the engine.
Inferred read-onlyget_player_templateA blank Excel workbook the organiser fills in and hands back: Name, Level, Gender, Comments, one player per row, with a sheet explaining each column.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.turnale]
url = "https://mcp.turnale.app"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"turnale": {
"type": "http",
"url": "https://mcp.turnale.app"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: turnale
Remote MCP URL: https://mcp.turnale.app
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"turnale": {
"url": "https://mcp.turnale.app"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"turnale": {
"type": "http",
"url": "https://mcp.turnale.app"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "turnale",
"transport": "streamable-http",
"url": "https://mcp.turnale.app"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Loading Trust v2 evidence…
Checking the associated registrable domain. The BuiltWith key remains server-side.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.