Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

app.turnale/turnale

REMOTE · MCP.TURNALE.APP · SCANNED AUG 3

Run racket-sport tournaments from your AI assistant: fair draws, scores, live standings.

Available components

64 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security66
Transport & Reachability100
Schema Quality & AI Usability55
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (poor).Fail
  • Context-footprint check failed: tool/resource definitions use about 5681 tokens (~189/item across 30 items; 30 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management17
  • Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage91
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 67% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.turnale.app

# add to Claude Code
claude mcp add --transport http app-turnale-turnale https://mcp.turnale.app/
# ~/.codex/config.toml
[mcp_servers.app-turnale-turnale]
url = "https://mcp.turnale.app/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-turnale-turnale": {
      "type": "remote",
      "url": "https://mcp.turnale.app/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add app-turnale-turnale --url https://mcp.turnale.app/ --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  app-turnale-turnale:
    url: "https://mcp.turnale.app/"
// mcp.json
{
  "mcpServers": {
    "app-turnale-turnale": {
      "type": "http",
      "url": "https://mcp.turnale.app/"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1
    • Server version: 0.1.0 → 0.1.2 functional
  • 1 Aug 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • “update_settings” reworded the description of “page_results_entry” cosmetic
    • “create_tournament” reworded the description of “page_results_entry” cosmetic
  • 31 Jul 26 −2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 65

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://mcp.turnale.app

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.turnale.app CN=YR1,O=Let's Encrypt,C=US 29 Jul 2026 27 Oct 2026 RSA 2048 SHA256-RSA 6bad8c127ebb7f6bb52c9ef7f91b8cef9c7
SANs: mcp.turnale.app
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
DNSSEC secure

Validation of mcp.turnale.app. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
app. present 23684 8 Verified
turnale.app. present 26197 13 Verified
mcp.turnale.app. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000
x-content-type-options nosniff
x-frame-options DENY
referrer-policy no-referrer
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.turnale.app Verified 200
http (plaintext) http://mcp.turnale.app HTTPS enforced 308 https://mcp.turnale.app/
MCP tools — 30 exposed · ~4,968 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
add_players ~110

Add 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). Duplicate names are rejected for disambiguation. If an unlocked draw exists it is regenerated automatically.

NameTypeReqDescription
playersarrayyes
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
addedarrayyes
players_totalnumberyes
previewbooleanTrue when this is a preview — nothing was changed
summarystringyesWhat happened, in one line

No examples provided.

create_tournament ~1,078

Create a new tournament. Keep setup SHORT: ask the organiser only for sport, players, court count and start time — sensible defaults cover everything else. FORMAT: never ask an open 'which format?' question. If the organiser clearly named one, pass it; otherwise omit format — the call then returns a ready-to-show menu of options (nothing is created) for you to relay so the organiser can read and choose in one reply. Players can be added later with add_players. NEVER invent placeholder or fake player names ('Player 1', made-up names): if the organiser only knows the headcount, create with signup_open: true and signup_cap set to it — players add themselves by name via the page link. If the organiser gives a time budget instead of rounds (e.g. 'we have 2 hours'), derive rounds ≈ total minutes ÷ (match + break minutes) and confirm. If they ask for a format that is not listed, offer to note it with record_feedback. Returns the organiser key (tk_…): relay it with the warning that it cannot be recovered, plus the shareable page link.

NameTypeReqDescription
advance_per_groupinteger
break_minutesintegerChangeover between matches/rounds, shown separately from play time (default 0)
court_namesarray
courtsintegerDefault 2
disciplinestringAsk the organiser — never infer it from the sport. Americano/mexicano are always doubles. Defaults to singles for the bracket formats when they truly have no preference.
formatstringTournament format. round_robin: everyone plays everyone. groups_playoff: round-robin groups then a knockout. single_elimination: knockout with byes. americano/mexicano: rotating-partner doubles, poin…
gender_balancestringAmericano/mexicano: prefer matches where both teams have the same make-up (MM v MM, MW v MW, WW v WW). Default prefer_symmetric. A preference, not a rule — an uneven field cannot supply it, and the d…
group_countinteger
house_rulesarrayOrganiser's house rules, shown on the tournament page (e.g. 'Golden point at deuce')
languagestringLanguage of the tournament page, PDFs and player emails. Default en; set et when the organiser works in Estonian.
level_gap_capnumberOpt-in: the largest level gap the organiser wants between opponents, in their own level units. Soft — the draw prefers to respect it and reports when it cannot. Pass 0 to clear.
level_offsetnumberby_group only: how much stronger an m is than an f carrying the SAME number, in the organiser's own level units. Default 1 — a starting point to adjust, not a fact. Used for balancing only; never sho…
level_scalestringHow to read the numbers in `level`. absolute (default): one shared scale, a 3 is a 3 whoever holds it. by_group: men and women were each rated within their own group, so the numbers are not directly…
locationstringVenue/location shown to players on the page, e.g. club name + city
match_duration_minutesinteger
namestringDefaults to '<Sport> tournament <date>'
page_results_entrybooleanAllow anyone with the page link to enter scores courtside. Default TRUE — recreational tournaments run on whoever finishes their match first, and an organiser who has to type every result is the bott…
pairsarrayDoubles: fixed pairs as [name, name] arrays. Omit to auto-pair.
playersarray
points_per_matchintegerAmericano/mexicano; default 21
roundsintegerAmericano/mexicano; default from player count
seedingstringDefault random
signup_capintegerSignup limit; beyond it players join a waitlist
signup_openbooleanOpen self-signup: players add themselves on the shared page (name-only or signed in). Offer this when the organiser has no player list yet.
sportstringyesWrite sport names to the organiser in words — 'table tennis', never the enum spelling 'table_tennis'.
start_timestringISO datetime with offset, e.g. 2026-08-01T18:00:00+03:00. Must be within 365 days from today.
third_place_matchbooleanSingle elimination; default true
NameTypeReqDescription
draw_generatedbooleanyes
namestringyes
page_urlstringyes
players_addednumberyes
rounds_textstringPresent when a draw was generated — show it to the organiser as-is.
summarystringyes
tournament_keystringyes

No examples provided.

delete_tournament ~51

Soft-delete the whole tournament (recoverable by support for 7 days, then gone). Preview first; confirm: true to apply.

NameTypeReqDescription
confirmboolean
tournament_keystringyes
NameTypeReqDescription
deletedbooleanyes
summarystringyes

No examples provided.

end_tournament ~104

Finish the tournament. If matches are still pending it ends early and current standings freeze as the final results. Preview first, confirm to apply.

NameTypeReqDescription
confirmbooleanOmit or false: return a preview of what would change. True: apply it.
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
placementsarrayyes
previewbooleanTrue when this is a preview — nothing was changed
statusstringyes
summarystringyesWhat happened, in one line

No examples provided.

generate_draw ~356

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 the organiser says "start the tournament", call this. The result includes rounds_text — SHOW it to the organiser as-is, in whatever language they are writing to you in (it is English already, so relay it unchanged unless they are writing something else) so they can check who plays whom — and the seed that produced the draw: preview first, then confirm with that SAME seed to apply exactly the previewed draw. Free until the first result is recorded; after that this DISCARDS recorded results and requires BOTH confirm: true and discard_results: true. If the organiser asks for a format that is not supported, offer to note it with record_feedback. Optional overrides adjust the format first.

NameTypeReqDescription
advance_per_groupinteger
confirmbooleanOmit or false: return a preview of what would change. True: apply it.
discard_resultsbooleanRequired (true) when results already exist — separate acknowledgement that this redraw destroys them
group_countinteger
points_per_matchinteger
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
roundsinteger
seedintegerDraw seed returned by the preview — pass it back with confirm: true to apply exactly the previewed draw. Omit for a fresh draw.
seedingstring
third_place_matchboolean
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
discarded_resultsnumberyes
matchesnumberyes
previewbooleanTrue when this is a preview — nothing was changed
rounds_textstringyes
seednumberyes
summarystringyesWhat happened, in one line

No examples provided.

get_audit_log ~83

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 between ids are normal.

NameTypeReqDescription
before_idinteger
limitinteger
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
entriesarrayyes
next_before_idyes

No examples provided.

get_briefing ~64

Compact full state of the tournament — settings, roster, progress, next matches, standings, page link. Call this first when resuming work in a new conversation with just the key.

NameTypeReqDescription
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
asideyesPresent ONLY when the tournament is set up, running, and asking nothing of the organiser — for answering 'what else can you do?', or any moment where they are plainly just chatting. NEVER volunteer i…
courtsarrayyes
disciplinestringyes
formatobjectyes
matches_pendingnumberyes
matches_playednumberyes
namestringyes
next_uparrayyes
page_results_entrybooleanyesTrue when anyone with the page link can record scores courtside (the default for new tournaments). Turn it off with update_settings page_results_entry: false.
page_urlstringyes
playersarrayyes
players_totalnumberyes
signupyes
sportstringyes
standings_toparrayyes
start_timeyes
statusstringyes

No examples provided.

get_export ~50

Full structured export of the tournament document (players, draws, results) — for the organiser's own records or data portability.

NameTypeReqDescription
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
tournamentobjectyes

No examples provided.

get_pdf ~119

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. Default "sheet": the merged tournament document (match sheet with write-in score boxes, player sheet, standings/results when they exist). "results" and "plan" are deprecated pre-merge variants kept for comparison. For a lighter response, get_pdf_link returns download URLs instead.

NameTypeReqDescription
docstring
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
filenamestringyes
mime_typestringyes
pdf_urlstringyes
size_bytesnumberyes

No examples provided.

get_pdf_link ~82

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 they exist) — hand this to the organiser. results_pdf_url and plan_pdf_url are deprecated pre-merge variants kept for comparison.

NameTypeReqDescription
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
page_urlstringyes
pdf_urlstringyes
plan_pdf_urlstringyes
results_pdf_urlstringyes

No examples provided.

get_player_template ~111

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 when the organiser has no list ready, asks how to send their players, or would rather work in a spreadsheet than paste names into chat. Needs no key. The file comes back both as a download link and as an attachable file. Reading a filled-in sheet needs no tool: parse it yourself and send the rows to add_players.

Input schema present but exposes no named parameters.

NameTypeReqDescription
columnsarrayyes
filenamestringyes
mime_typestringyes
notestringyes
size_bytesnumberyes
template_urlstringyes

No examples provided.

get_results ~40

Final placements (or placements-so-far for a tournament that ended early).

NameTypeReqDescription
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
placementsarrayyes
statusstringyes

No examples provided.

get_schedule ~43

Upcoming matches in playing order with courts and estimated times.

NameTypeReqDescription
limitinteger
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
schedulearrayyes

No examples provided.

get_standings ~57

Current standings per group/structure, tiebreak-ordered (wins → head-to-head → set diff → game diff; americano: total points).

NameTypeReqDescription
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
standingsarrayyes

No examples provided.

list_matches ~80

Matches with sides, scores, courts and times. Filter by state or round; paginate with after_match_number for large tournaments.

NameTypeReqDescription
after_match_numberinteger
limitinteger
roundinteger
statestring
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
matchesarrayyes
next_after_match_numberyes

No examples provided.

list_players ~36

Full roster with status, level, and doubles partner.

NameTypeReqDescription
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
playersarrayyes
totalnumberyes

No examples provided.

ping ~23

Health check. Returns a static confirmation that the Turnale MCP server is reachable.

Input schema present but exposes no named parameters.

NameTypeReqDescription
messagestringyes
okbooleanyes

No examples provided.

promote_player ~89

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.

NameTypeReqDescription
namestringyes
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
namestringyes
previewbooleanTrue when this is a preview — nothing was changed
statusstringyes
summarystringyesWhat happened, in one line

No examples provided.

record_feedback ~136

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 when the organiser asked for something unsupported AND agreed to have it noted. Describe the missing capability in general terms — NEVER include player names, contact details, or tournament keys.

NameTypeReqDescription
categorystringyes
feedbackstringyesWhat the organiser wanted, summarised without any personal data (max 1000 characters — room for the problem, the workaround tried, and the suggested scope)
related_toolstringThe tool this relates to, if any
NameTypeReqDescription
recordedbooleanyes
summarystringyes

No examples provided.

record_results ~166

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 (partial score allowed), cancelled, reinstate — reinstate CLEARS a recorded result and returns the match to scheduled (the fix for a mis-entered score). Corrections simply re-record. Winner (a|b = first|second listed side) only needed when the score alone does not decide.

NameTypeReqDescription
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
resultsarrayyes
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
previewbooleanTrue when this is a preview — nothing was changed
recordedarrayyes
summarystringyesWhat happened, in one line

No examples provided.

remove_player ~125

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, never loop one-by-one. Regenerates an existing unlocked draw.

NameTypeReqDescription
player_namestring
player_namesarrayBulk removal — e.g. clearing mistaken placeholder names in one call
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
players_totalnumberyes
previewbooleanTrue when this is a preview — nothing was changed
promotedarrayyesWaitlisted players who took the freed spots
removedarrayyes
summarystringyesWhat happened, in one line

No examples provided.

replace_player ~140

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 first result: choose mode slot_swap (default) or regenerate (re-pair and redraw using levels). Unknown substitute names are added to the roster automatically.

NameTypeReqDescription
in_playerobjectyes
modestring
out_player_namestringyes
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
entrystringyes
previewbooleanTrue when this is a preview — nothing was changed
summarystringyesWhat happened, in one line

No examples provided.

reschedule ~104

Shift the start time, add a delay, or move one match to a specific court/slot. Played matches never move.

NameTypeReqDescription
delay_minutesinteger
move_matchobject
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
start_timestringNew ISO start time
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
previewbooleanTrue when this is a preview — nothing was changed
start_timeyes
summarystringyesWhat happened, in one line

No examples provided.

set_pairs ~108

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.

NameTypeReqDescription
autostring
pairsarrayFixed pairs as [name, name] arrays
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
pairsarrayyes
previewbooleanTrue when this is a preview — nothing was changed
summarystringyesWhat happened, in one line

No examples provided.

suggest_format ~272

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 one hesitantly, or comes from a background where americano/mexicano need explaining — then relay the `menu` text as-is instead of asking an open 'which format?' question. SINGLES OR DOUBLES IS A PREREQUISITE: omit `discipline` and this returns the question to put to the organiser rather than a menu, because it decides which formats exist at all (americano and mexicano are doubles). Never infer it from the sport. Needs no key.

NameTypeReqDescription
courtsintegerDefault 2
disciplinestringAsk the organiser before offering formats; never infer it from the sport. 'unknown' = you asked and they don't mind, which shows both kinds. OMIT to get the question itself back.
fixed_partnersbooleanDoubles only: do pairs stay together all evening?
match_minutesinteger
players_estimateintegeryes
total_minutesintegerThe time budget, e.g. 120 for a two-hour evening
vibestringSocial: everyone mixes and plays a lot. Competitive: a bracket and a winner.
NameTypeReqDescription
glossaryobjectyes
menustringyesReady-to-show menu of the options — relay it to the organiser as-is. Do not compress it to bare format names.
notestringyes
recommendationsarrayyes

No examples provided.

swap_partners ~233

Exchange two players' places. Fixed-pair doubles: swaps partners between two pairs permanently (name one player from each pair). Americano/mexicano: pass `round` to swap two players' places in ONE unplayed round — the courtside patch for a late arrival, an injury, or two friends who want a game together. One of them may be sitting that round, which is how you put a late arrival on court. Preview first, confirm to apply: the preview names any partnership or meeting the swap would repeat. Results already played never move.

NameTypeReqDescription
confirmbooleanOmit or false: return a preview of what would change. True: apply it.
player_astringyes
player_bstringyes
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
roundintegerAmericano/mexicano only: which round to patch. Omit to swap the next unplayed round.
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
pairsarray
previewbooleanTrue when this is a preview — nothing was changed
repeats_meetingarray
repeats_partnershiparray
roundnumber
summarystringyesWhat happened, in one line

No examples provided.

undo_last_change ~215

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 (an id from get_audit_log): restore to just before that change — it and every later change are discarded in one step, so a burst of unwanted calls unwinds with a single revert. Preview lists exactly what would be discarded; confirm: true applies. A follow-up plain undo restores what the previous undo discarded.

NameTypeReqDescription
confirmbooleanOmit or false: return a preview of what would change. True: apply it.
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
to_change_idintegerA change id from get_audit_log — restore to just before this change, discarding it and everything after it. Omit to undo only the latest change.
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
discardedarrayyesEvery change this rollback discards, oldest first
discarded_countnumberyes
previewbooleanTrue when this is a preview — nothing was changed
summarystringyesWhat happened, in one line
undone_atstringyes
undone_summarystringyes
undone_toolstringyesTool behind the earliest discarded change

No examples provided.

update_player ~228

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 for a whole roster used to be one call per player, which on a phone meant approving each one and left the roster half-updated when some were mis-tapped. The whole batch applies or none of it does.

NameTypeReqDescription
genderstring
levelnumberAny consistent numeric level/rating — used only for seeding and balancing
new_namestring
notestringFree note shown on the tournament page. Pass an empty string to clear it.
player_namestringSingle update; or use `updates` for several
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
tournament_keystringyesThe tournament's organiser key (starts with tk_)
updatesarrayBulk edit — e.g. levels for a whole roster in one call
NameTypeReqDescription
playerstring
playersarrayyes
previewbooleanTrue when this is a preview — nothing was changed
summarystringyesWhat happened, in one line

No examples provided.

update_settings ~546

Change the tournament name, start time, match duration, break/changeover minutes, courts (count or names), house rules, or courtside score entry from the page. Court changes recompute the remaining schedule; played matches never move.

NameTypeReqDescription
break_minutesintegerChangeover between matches/rounds, shown separately from play time
court_namesarray
courtsinteger
gender_balancestringAmericano/mexicano: prefer matches where both teams have the same make-up (MM v MM, MW v MW, WW v WW). Default prefer_symmetric. A preference, not a rule — an uneven field cannot supply it, and the d…
house_rulesarray
languagestringPage/PDF/email language: en (default) or et
level_gap_capnumberOpt-in: the largest level gap the organiser wants between opponents, in their own level units. Soft — the draw prefers to respect it and reports when it cannot. Pass 0 to clear.
level_offsetnumberby_group only: how much stronger an m is than an f carrying the SAME number, in the organiser's own level units. Default 1 — a starting point to adjust, not a fact. Used for balancing only; never sho…
level_scalestringHow to read the numbers in `level`. absolute (default): one shared scale, a 3 is a 3 whoever holds it. by_group: men and women were each rated within their own group, so the numbers are not directly…
locationstringVenue/location shown to players; pass an empty string to clear it
match_duration_minutesinteger
namestring
page_results_entrybooleanAllow anyone with the page link to enter scores courtside. ON for new tournaments — pass false when the organiser wants to be the only one recording results, true to hand it back to the players.
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
signup_capinteger
signup_openbooleanOpen or close self-signup on the page
start_timestringISO datetime with offset. Must be within 365 days from today.
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
courtsarrayyes
previewbooleanTrue when this is a preview — nothing was changed
promotedarrayyesWaitlisted players a raised cap let in
summarystringyesWhat happened, in one line

No examples provided.

withdraw_player ~119

Withdraw a player (or their pair) mid-tournament. Remaining matches become walkovers for the opponents; americano regenerates its future rounds instead. Preview first, confirm to apply.

NameTypeReqDescription
confirmbooleanOmit or false: return a preview of what would change. True: apply it.
player_namestringyes
request_idstringOptional idempotency id — retrying a call with the same id never applies it twice
tournament_keystringyesThe tournament's organiser key (starts with tk_)
NameTypeReqDescription
affected_matchesnumberyes
previewbooleanTrue when this is a preview — nothing was changed
summarystringyesWhat happened, in one line

No examples provided.