Zovo Tournament Maker
Make a tournament bracket in the chat, record results by clicking the winners, and print it.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"bracket-maker": {
"url": "https://bracket-maker.zovo.one/mcp"
}
}
}Remote-Endpunkte
https://bracket-maker.zovo.one/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (2)
🟢generate_tournament_bracket(participants, participant_count, format, seeding, random_seed, ...)
Use this when the user wants a tournament bracket or schedule (tournament bracket maker, bracket generator, single elimination or double elimination bracket, round robin schedule generator, Swiss pairings, a bracket for 6, 10 or 12 teams with byes). Builds the full structure for 2-128 players or teams: standard seeding so top seeds meet last, byes for the top seeds when the field is not a power of two, optional third-place match, grand final reset, round robin via the circle method with balanced home/away, Swiss round 1, optional timetable over several courts, a printable PDF bracket and a CSV schedule. Results already known can be included to advance winners. Does not predict winners, fill in picks for famous tournaments, or schedule leagues with venue or travel constraints.
Eingabe-Schema
{
"type": "object",
"properties": {
"participants": {
"description": "Players or teams, 2-128 unique names. With standard seeding the order is the ranking: first = seed 1. Example: [\"Ann\",\"Bob\",\"Cy\",\"Dee\",\"Eve\",\"Finn\"]",
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
"participant_count": {
"description": "Use instead of participants when the user gives only a number: makes Team 1 ... Team N (2-128). Example: 12",
"type": "number"
},
"format": {
"type": "string",
"enum": [
"single_elimination",
"double_elimination",
"round_robin",
"swiss"
],
"description": "Tournament format: single_elimination (knockout), double_elimination (out after two losses, losers bracket, grand final), round_robin (everyone plays everyone once; league), swiss (fixed number of rounds, players with equal scores meet, no rematches). Example: single_elimination"
},
"seeding": {
"description": "standard (default): list order is the seed ranking, 1 plays the lowest seed, top seeds get the byes and seeds 1 and 2 can only meet in the final. random: a reproducible random draw (see random_seed), then placed like seeds. as_listed: fill the bracket top to bottom in list order, 1st vs 2nd, 3rd vs 4th, with byes spread evenly. Example: random",
"type": "string",
"enum": [
"standard",
"random",
"as_listed"
]
},
"random_seed": {
"description": "Draw number for random seeding (1-999999). The same participants and number always give the same draw. Example: 4821",
"type": "number"
},
"third_place_match": {
"description": "Single elimination only: add a third-place match between the semifinal losers. Example: true",
"type": "boolean"
},
"grand_final_reset": {
"description": "Double elimination only (default true): if the losers-bracket champion wins the grand final, a second deciding match is played, so nobody is out after one loss. Example: false",
"type": "boolean"
},
"swiss_rounds": {
"description": "Swiss only: number of rounds (default log2 of the field, rounded up; maximum depends on the field size). Example: 5",
"type": "number"
},
"meetings": {
"description": "Round robin only: 1 (default) = every pair meets once; 2 = home and away (double round robin). Example: 2",
"type": "number"
},
"win_points": {
"description": "Round robin / Swiss table points for a win (default 3 for round robin, 1 for Swiss). Example: 2",
"type": "number"
},
"draw_points": {
"description": "Points for a draw (default 1 for round robin, 0.5 for Swiss). Example: 1",
"type": "number"
},
"loss_points": {
"description": "Points for a loss (default 0). Example: 0",
"type": "number"
},
"results": {
"description": "Results already played, in any order for elimination formats and round by round for Swiss. Each needs the players (p1, p2) or a match id, plus a winner or both scores. Example: [{\"p1\":\"Ann\",\"p2\":\"Finn\",\"score1\":21,\"score2\":12}]",
"maxItems": 600,
"type": "array",
"items": {
"type": "object",
"properties": {
"match": {
"description": "Match id from the bracket or schedule, e.g. \"M5\". Optional when p1 and p2 are given.",
"type": "string",
"maxLength": 12
},
"p1": {
"description": "First player or team in this result, e.g. \"Ann\".",
"type": "string",
"maxLength": 80
},
"p2": {
"description": "Second player or team, e.g. \"Bob\".",
"type": "string",
"maxLength": 80
},
"winner": {
"description": "Name of the winner, e.g. \"Ann\", or \"draw\" (round robin and Swiss only). Can be left out when both scores are given.",
"type": "string",
"maxLength": 80
},
"score1": {
"description": "Score of p1 (or of the match's first slot when only match is given), e.g. 21.",
"type": "number"
},
"score2": {
"description": "Score of p2, e.g. 15.",
"type": "number"
}
}
}
},
"courts": {
"description": "Courts, tables, boards or fields available at the same time (1-64), used for the timetable. Example: 3",
"type": "number"
},
"match_minutes": {
"description": "Length of one match in minutes (5-600). Giving this adds start times and courts to every match. Example: 20",
"type": "number"
},
"break_minutes": {
"description": "Changeover time between matches on a court, in minutes (0-120, default 0). Example: 5",
"type": "number"
},
"start_time": {
"description": "Start time of the first matches, 24-hour HH:MM (default 09:00). Example: \"18:30\"",
"type": "string",
"maxLength": 5
},
"title": {
"description": "Tournament name for the bracket, PDF and CSV. Example: \"Friday Ping Pong Cup\"",
"type": "string",
"maxLength": 100
},
"paper": {
"description": "Paper size for the landscape PDF: letter (default) or a4. Example: a4",
"type": "string",
"enum": [
"letter",
"a4"
]
}
},
"required": [
"format"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"title": {
"type": "string"
},
"format": {
"type": "string"
},
"format_label": {
"type": "string"
},
"seeding": {
"type": "string"
},
"random_seed": {
"type": [
"number",
"null"
]
},
"participants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"seed": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"seed",
"name"
],
"additionalProperties": false
}
},
"counts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"bracket_size": {
"type": [
"number",
"null"
]
},
"matches": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"byes": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"standings": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"next_matches": {
"type": "array",
"items": {
"type": "string"
}
},
"champion": {
"type": [
"string",
"null"
]
},
"placements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"place": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"place",
"name"
],
"additionalProperties": false
}
},
"complete": {
"type": "boolean"
},
"schedule": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"swiss": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"request": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"results": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"downloads": {
"type": "object",
"properties": {
"pdf": {
"type": "string"
},
"csv": {
"type": "string"
}
},
"required": [
"pdf",
"csv"
],
"additionalProperties": false
}
},
"required": [
"kind",
"title",
"format",
"format_label",
"seeding",
"random_seed",
"participants",
"counts",
"bracket_size",
"matches",
"byes",
"standings",
"next_matches",
"champion",
"placements",
"complete",
"schedule",
"swiss",
"notes",
"request",
"results",
"downloads"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢calculate_bracket_standings(participants, participant_count, format, seeding, random_seed, ...)
Use this when the user reports results of a tournament made with generate_tournament_bracket (or describes one) and wants the updated bracket, who advances, the standings table or what is next. Takes the same format and participants plus every result so far (winner or scores per match) and returns the advanced bracket, the round robin or Swiss table (points, head-to-head, score difference; Buchholz for Swiss), final places, the next Swiss round's pairings, and the next matches to play. Do not use to predict outcomes; it only records results the user gives.
Eingabe-Schema
{
"type": "object",
"properties": {
"participants": {
"description": "Players or teams, 2-128 unique names. With standard seeding the order is the ranking: first = seed 1. Example: [\"Ann\",\"Bob\",\"Cy\",\"Dee\",\"Eve\",\"Finn\"]",
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
"participant_count": {
"description": "Use instead of participants when the user gives only a number: makes Team 1 ... Team N (2-128). Example: 12",
"type": "number"
},
"format": {
"type": "string",
"enum": [
"single_elimination",
"double_elimination",
"round_robin",
"swiss"
],
"description": "Tournament format: single_elimination (knockout), double_elimination (out after two losses, losers bracket, grand final), round_robin (everyone plays everyone once; league), swiss (fixed number of rounds, players with equal scores meet, no rematches). Example: single_elimination"
},
"seeding": {
"description": "standard (default): list order is the seed ranking, 1 plays the lowest seed, top seeds get the byes and seeds 1 and 2 can only meet in the final. random: a reproducible random draw (see random_seed), then placed like seeds. as_listed: fill the bracket top to bottom in list order, 1st vs 2nd, 3rd vs 4th, with byes spread evenly. Example: random",
"type": "string",
"enum": [
"standard",
"random",
"as_listed"
]
},
"random_seed": {
"description": "Draw number for random seeding (1-999999). The same participants and number always give the same draw. Example: 4821",
"type": "number"
},
"third_place_match": {
"description": "Single elimination only: add a third-place match between the semifinal losers. Example: true",
"type": "boolean"
},
"grand_final_reset": {
"description": "Double elimination only (default true): if the losers-bracket champion wins the grand final, a second deciding match is played, so nobody is out after one loss. Example: false",
"type": "boolean"
},
"swiss_rounds": {
"description": "Swiss only: number of rounds (default log2 of the field, rounded up; maximum depends on the field size). Example: 5",
"type": "number"
},
"meetings": {
"description": "Round robin only: 1 (default) = every pair meets once; 2 = home and away (double round robin). Example: 2",
"type": "number"
},
"win_points": {
"description": "Round robin / Swiss table points for a win (default 3 for round robin, 1 for Swiss). Example: 2",
"type": "number"
},
"draw_points": {
"description": "Points for a draw (default 1 for round robin, 0.5 for Swiss). Example: 1",
"type": "number"
},
"loss_points": {
"description": "Points for a loss (default 0). Example: 0",
"type": "number"
},
"results": {
"description": "Results already played, in any order for elimination formats and round by round for Swiss. Each needs the players (p1, p2) or a match id, plus a winner or both scores. Example: [{\"p1\":\"Ann\",\"p2\":\"Finn\",\"score1\":21,\"score2\":12}]",
"maxItems": 600,
"type": "array",
"items": {
"type": "object",
"properties": {
"match": {
"description": "Match id from the bracket or schedule, e.g. \"M5\". Optional when p1 and p2 are given.",
"type": "string",
"maxLength": 12
},
"p1": {
"description": "First player or team in this result, e.g. \"Ann\".",
"type": "string",
"maxLength": 80
},
"p2": {
"description": "Second player or team, e.g. \"Bob\".",
"type": "string",
"maxLength": 80
},
"winner": {
"description": "Name of the winner, e.g. \"Ann\", or \"draw\" (round robin and Swiss only). Can be left out when both scores are given.",
"type": "string",
"maxLength": 80
},
"score1": {
"description": "Score of p1 (or of the match's first slot when only match is given), e.g. 21.",
"type": "number"
},
"score2": {
"description": "Score of p2, e.g. 15.",
"type": "number"
}
}
}
},
"courts": {
"description": "Courts, tables, boards or fields available at the same time (1-64), used for the timetable. Example: 3",
"type": "number"
},
"match_minutes": {
"description": "Length of one match in minutes (5-600). Giving this adds start times and courts to every match. Example: 20",
"type": "number"
},
"break_minutes": {
"description": "Changeover time between matches on a court, in minutes (0-120, default 0). Example: 5",
"type": "number"
},
"start_time": {
"description": "Start time of the first matches, 24-hour HH:MM (default 09:00). Example: \"18:30\"",
"type": "string",
"maxLength": 5
},
"title": {
"description": "Tournament name for the bracket, PDF and CSV. Example: \"Friday Ping Pong Cup\"",
"type": "string",
"maxLength": 100
},
"paper": {
"description": "Paper size for the landscape PDF: letter (default) or a4. Example: a4",
"type": "string",
"enum": [
"letter",
"a4"
]
}
},
"required": [
"format"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"title": {
"type": "string"
},
"format": {
"type": "string"
},
"format_label": {
"type": "string"
},
"seeding": {
"type": "string"
},
"random_seed": {
"type": [
"number",
"null"
]
},
"participants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"seed": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"seed",
"name"
],
"additionalProperties": false
}
},
"counts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"bracket_size": {
"type": [
"number",
"null"
]
},
"matches": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"byes": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"standings": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"next_matches": {
"type": "array",
"items": {
"type": "string"
}
},
"champion": {
"type": [
"string",
"null"
]
},
"placements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"place": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"place",
"name"
],
"additionalProperties": false
}
},
"complete": {
"type": "boolean"
},
"schedule": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"swiss": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"request": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"results": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"downloads": {
"type": "object",
"properties": {
"pdf": {
"type": "string"
},
"csv": {
"type": "string"
}
},
"required": [
"pdf",
"csv"
],
"additionalProperties": false
}
},
"required": [
"kind",
"title",
"format",
"format_label",
"seeding",
"random_seed",
"participants",
"counts",
"bracket_size",
"matches",
"byes",
"standings",
"next_matches",
"champion",
"placements",
"complete",
"schedule",
"swiss",
"notes",
"request",
"results",
"downloads"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Nachweis