{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_4dv3b3tfh6du","handle":"turnale","url":"https://wellknown.network/agents/turnale","links":{"self":"https://wellknown.network/agents/turnale/record.json","html":"https://wellknown.network/agents/turnale","markdown":"https://wellknown.network/agents/turnale/record.md","api":"https://wellknown.network/api/v1/agents/turnale","status":"https://wellknown.network/api/v1/agents/turnale/status","claim":"https://wellknown.network/agents/turnale/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/turnale/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:mcp.turnale.app:server:turnale","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"turnale","summary":"Run racket-sport tournaments from your AI assistant: fair draws, scores, live standings.","description":"Run racket-sport tournaments from your AI assistant: fair draws, scores, live standings.","publisher":{"name":"app.turnale","url":null},"homepage":"https://www.turnale.app","repository":"https://github.com/turnale-app/turnale","version":"0.1.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.turnale.app","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-03T16:38:40.607005Z","publishedAt":"2026-08-03T16:38:40.607005Z","registryName":"app.turnale/turnale"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[],"categories":[]},"observed":{"status":"unknown","statusReason":"Not checked yet.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[{"at":"2026-09-05T18:28:30.460Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":253,"error":null,"detail":{"tools":[{"name":"ping","description":"Health check. Returns a static confirmation that the Turnale MCP server is reachable."},{"name":"create_tournament","description":"Create a new tournament. Keep setup SHORT: ask the organiser only for sport, players, court count and start time — sensible defaults cover everything else. FORM"},{"name":"add_players","description":"Add players to the roster in bulk (parse pasted lists or spreadsheets yourself and send structured entries — never invent placeholder names; use signup mode whe"},{"name":"update_player","description":"Rename a player or set their gender/level/note. Updates MANY in one call: pass `updates` with one object per player and never loop one-by-one — setting levels f"},{"name":"remove_player","description":"Remove 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, ne"},{"name":"set_pairs","description":"Fix the doubles pairs: pass explicit pairs by name, or auto-pair (random or level-balanced). Only before results exist. Regenerates an existing unlocked draw."},{"name":"update_settings","description":"Change the tournament name, start time, match duration, break/changeover minutes, courts (count or names), house rules, or courtside score entry from the page. "},{"name":"promote_player","description":"Move a waitlisted player onto the active roster when a spot opens (signed-in players are notified by email). The cap can be raised with update_settings."},{"name":"generate_draw","description":"Generate (or regenerate) the draw and schedule. This IS the start action: the first draw moves the tournament from setup to active and closes self-signup — when"},{"name":"get_briefing","description":"Compact full state of the tournament — settings, roster, progress, next matches, standings, page link. Call this first when resuming work in a new conversation "},{"name":"list_players","description":"Full roster with status, level, and doubles partner."},{"name":"list_matches","description":"Matches with sides, scores, courts and times. Filter by state or round; paginate with after_match_number for large tournaments."},{"name":"get_schedule","description":"Upcoming matches in playing order with courts and estimated times."},{"name":"get_standings","description":"Current standings per group/structure, tiebreak-ordered (wins → head-to-head → set diff → game diff; americano: total points)."},{"name":"get_results","description":"Final placements (or placements-so-far for a tournament that ended early)."},{"name":"get_audit_log","description":"Chronological record of every change (newest first) — the answer to \"who changed that?\". Paginate with before_id. Ids are global across all tournaments, so gaps"},{"name":"get_export","description":"Full structured export of the tournament document (players, draws, results) — for the organiser's own records or data portability."},{"name":"get_pdf_link","description":"Download links for the printable PDF. pdf_url is the merged tournament document (match sheet with write-in score boxes, player sheet, standings/results when the"},{"name":"get_pdf","description":"The 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. "},{"name":"record_results","description":"Record one or many results. Score is conversational text: \"6-4 3-6 10-7\" (sets) or \"16-8\" (americano points). Outcomes: completed (default), walkover, retired ("},{"name":"replace_player","description":"A substitute takes over a player's spot. During play: slot takeover — completed results stay, the change is shown (\"Anna, for Kristjan from R3\"). Before the fir"},{"name":"withdraw_player","description":"Withdraw a player (or their pair) mid-tournament. Remaining matches become walkovers for the opponents; americano regenerates its future rounds instead. Preview"},{"name":"swap_partners","description":"Exchange two players' places. Fixed-pair doubles: swaps partners between two pairs permanently (name one player from each pair). Americano/mexicano: pass `round"},{"name":"reschedule","description":"Shift the start time, add a delay, or move one match to a specific court/slot. Played matches never move."},{"name":"end_tournament","description":"Finish the tournament. If matches are still pending it ends early and current standings freeze as the final results. Preview first, confirm to apply."},{"name":"undo_last_change","description":"Roll the tournament back. Without to_change_id: restore exactly how it was before the most recent change (tool call or courtside page entry). With to_change_id "},{"name":"delete_tournament","description":"Soft-delete the whole tournament (recoverable by support for 7 days, then gone). Preview first; confirm: true to apply."},{"name":"record_feedback","description":"Record a request for something Turnale does not support yet (a format, scoring variant, or feature), so it can be considered for the roadmap. Call this only whe"},{"name":"suggest_format","description":"Recommend tournament formats in plain language, with the round/time math done by the engine. Call this FIRST when the organiser has not named a format, names on"},{"name":"get_player_template","description":"A blank Excel workbook the organiser fills in and hands back: Name, Level, Gender, Comments, one player per row, with a sheet explaining each column. Offer it w"}],"toolCount":30,"serverName":"turnale","capabilities":["tools","prompts"],"serverVersion":"0.1.2","protocolVersion":"2025-06-18"}}],"tools":[{"name":"ping","description":"Health check. Returns a static confirmation that the Turnale MCP server is reachable."},{"name":"create_tournament","description":"Create a new tournament. Keep setup SHORT: ask the organiser only for sport, players, court count and start time — sensible defaults cover everything else. FORM"},{"name":"add_players","description":"Add players to the roster in bulk (parse pasted lists or spreadsheets yourself and send structured entries — never invent placeholder names; use signup mode whe"},{"name":"update_player","description":"Rename a player or set their gender/level/note. Updates MANY in one call: pass `updates` with one object per player and never loop one-by-one — setting levels f"},{"name":"remove_player","description":"Remove 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, ne"},{"name":"set_pairs","description":"Fix the doubles pairs: pass explicit pairs by name, or auto-pair (random or level-balanced). Only before results exist. Regenerates an existing unlocked draw."},{"name":"update_settings","description":"Change the tournament name, start time, match duration, break/changeover minutes, courts (count or names), house rules, or courtside score entry from the page. "},{"name":"promote_player","description":"Move a waitlisted player onto the active roster when a spot opens (signed-in players are notified by email). The cap can be raised with update_settings."},{"name":"generate_draw","description":"Generate (or regenerate) the draw and schedule. This IS the start action: the first draw moves the tournament from setup to active and closes self-signup — when"},{"name":"get_briefing","description":"Compact full state of the tournament — settings, roster, progress, next matches, standings, page link. Call this first when resuming work in a new conversation "},{"name":"list_players","description":"Full roster with status, level, and doubles partner."},{"name":"list_matches","description":"Matches with sides, scores, courts and times. Filter by state or round; paginate with after_match_number for large tournaments."},{"name":"get_schedule","description":"Upcoming matches in playing order with courts and estimated times."},{"name":"get_standings","description":"Current standings per group/structure, tiebreak-ordered (wins → head-to-head → set diff → game diff; americano: total points)."},{"name":"get_results","description":"Final placements (or placements-so-far for a tournament that ended early)."},{"name":"get_audit_log","description":"Chronological record of every change (newest first) — the answer to \"who changed that?\". Paginate with before_id. Ids are global across all tournaments, so gaps"},{"name":"get_export","description":"Full structured export of the tournament document (players, draws, results) — for the organiser's own records or data portability."},{"name":"get_pdf_link","description":"Download links for the printable PDF. pdf_url is the merged tournament document (match sheet with write-in score boxes, player sheet, standings/results when the"},{"name":"get_pdf","description":"The 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. "},{"name":"record_results","description":"Record one or many results. Score is conversational text: \"6-4 3-6 10-7\" (sets) or \"16-8\" (americano points). Outcomes: completed (default), walkover, retired ("},{"name":"replace_player","description":"A substitute takes over a player's spot. During play: slot takeover — completed results stay, the change is shown (\"Anna, for Kristjan from R3\"). Before the fir"},{"name":"withdraw_player","description":"Withdraw a player (or their pair) mid-tournament. Remaining matches become walkovers for the opponents; americano regenerates its future rounds instead. Preview"},{"name":"swap_partners","description":"Exchange two players' places. Fixed-pair doubles: swaps partners between two pairs permanently (name one player from each pair). Americano/mexicano: pass `round"},{"name":"reschedule","description":"Shift the start time, add a delay, or move one match to a specific court/slot. Played matches never move."},{"name":"end_tournament","description":"Finish the tournament. If matches are still pending it ends early and current standings freeze as the final results. Preview first, confirm to apply."},{"name":"undo_last_change","description":"Roll the tournament back. Without to_change_id: restore exactly how it was before the most recent change (tool call or courtside page entry). With to_change_id "},{"name":"delete_tournament","description":"Soft-delete the whole tournament (recoverable by support for 7 days, then gone). Preview first; confirm: true to apply."},{"name":"record_feedback","description":"Record a request for something Turnale does not support yet (a format, scoring variant, or feature), so it can be considered for the roadmap. Call this only whe"},{"name":"suggest_format","description":"Recommend tournament formats in plain language, with the round/time math done by the engine. Call this FIRST when the organiser has not named a format, names on"},{"name":"get_player_template","description":"A blank Excel workbook the organiser fills in and hands back: Name, Level, Gender, Comments, one player per row, with a sheet explaining each column. Offer it w"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"app.turnale/turnale","url":"https://registry.modelcontextprotocol.io/v0/servers/app.turnale%2Fturnale","firstSeenAt":"2026-09-05T15:22:06.888Z","fetchedAt":"2026-09-05T15:22:06.888Z","normalizedAt":"2026-09-05T15:22:06.888Z"}]},"firstSeenAt":"2026-09-05T15:22:06.888Z","updatedAt":"2026-09-05T15:22:26.466Z"}