Skip to main content
Glama

Server Details

Round-robin fixtures, standings and match-day plans for league organizers. Free.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Server Listing
Sahadeva

TDQS

A4.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct artifact: fixture pairings (round_robin_schedule), one-day time/court assignment (match_day_plan), season calendar sizing (season_plan), and standings from results (standings_table). Descriptions even include explicit 'Do NOT use...' routing hints, eliminating boundary confusion between the scheduling tools.

Naming Consistency5/5

All four names are snake_case noun/domain phrases (match_day_plan, round_robin_schedule, season_plan, standings_table) following a predictable <domain>_<output> convention. No mixing of camelCase, verbs, or ad-hoc prefixes.

Tool Count5/5

Four tools cleanly partition a small, coherent domain (league scheduling/output): fixtures, day plan, season plan, standings. No redundant or filler tools; each earns its place for a deliberately narrow scope.

Completeness4/5

Core lifecycle is covered: generate pairings, lay them onto courts/times, project season dates, and compute standings from results. Minor gaps exist—no support for non-round-robin formats (knockout/groups) and no explicit result-entry tool, though standings accepts results as input—so agents can work around them.

Available Tools

4 tools
match_day_planMatch day planA
Read-onlyIdempotent
Inspect

Compute a one-day timetable: lay an ordered list of games onto parallel courts and fixed-length time slots from a start time, giving each game a court and HH:MM start, plus the end time. Use when you already know the day's games. Do NOT use to decide who plays whom (use round_robin_schedule) or to size a whole season (use season_plan).

NameRequiredDescriptionDefault
gamesYesGames in the order they should be played (non-empty); e.g. one round's fixtures from round_robin_schedule
courtsYesNumber of courts/pitches usable at the same time, integer 1-12, e.g. 2
start_timeYesFirst game start, 24h HH:MM, e.g. "09:00" or "18:30"
slot_minutesYesLength of one game slot in minutes, integer 10-180, e.g. 40

Output Schema

NameRequiredDescription
noteYesPlain-English summary (slots, courts, after-midnight warning)
courtsYesNumber of courts used in parallel
end_timeYesTime the last slot finishes, 24h HH:MM (wraps past midnight)
timelineYesOne entry per game, in input order
start_timeYesFirst slot start time, 24h HH:MM (echoed from input)
slot_minutesYesLength of each slot in minutes
total_minutesYesTotal duration from first start to last finish, in minutes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the description only needs to add scheduling semantics, which it does: ordered input, parallel courts, fixed-length slots, and the fields of each emitted entry (court, HH:MM start, end time). It does not disclose what happens to leftover games that exceed the court count in a slot or how slots are numbered, a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: what it computes, when to use it, and when not to with named alternatives. The core action is front-loaded in the first clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not explain return values, and with 100% schema coverage the inputs are fully documented elsewhere. The description closes the remaining gaps: the ordering assumption on input and the routing rules against sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (games, courts, slot_minutes, start_time) is already documented in the schema with examples and bounds. The description reinforces the ordering contract of 'games' and the parallel-court semantics of 'courts' but adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Compute a one-day timetable') and immediately specifies the mechanics: ordered games laid onto parallel courts and fixed-length slots from a start time. It explicitly distinguishes itself from round_robin_schedule and season_plan by naming the sibling it is not, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit positive condition ('Use when you already know the day's games') plus two explicit exclusions with the correct alternative named for each ('use round_robin_schedule', 'use season_plan'). Nothing about when to pick this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

round_robin_scheduleRound robin scheduleA
Read-onlyIdempotent
Inspect

Compute a round-robin fixture list (circle method) for 2-100 teams: every pair meets once, or twice home-and-away with second_leg; odd counts get one bye per round. Use when you need who plays whom in each round. Do NOT use to assign times/courts for one match day (use match_day_plan) or to get calendar dates for a season (use season_plan).

NameRequiredDescriptionDefault
teamsYesTeam names: 2-100 unique, non-empty names (trimmed), e.g. ["Falcons", "Tigers", "Bears"]
roundsNoOptional: return only the first N rounds, integer 1..max (max = teams-1 for even counts, teams for odd; doubled with second_leg). Default: all rounds
second_legNoIf true, append a mirrored second leg with home and away swapped (double round-robin). Default false

Output Schema

NameRequiredDescription
legsYesNumber of legs included in the returned rounds (1 or 2)
noteYesPlain-English summary of the schedule (teams, rounds, byes, truncation)
teamsYesCleaned (trimmed) team names in input order
roundsYesRounds in play order, each with its fixtures and any bye
total_gamesYesTotal fixtures (excluding byes) in the returned rounds
games_per_teamYesAverage games per team across the returned rounds (2 decimals)

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds genuine domain behavior beyond that: the circle method, single vs. double round-robin via second_leg, and the odd-count bye rule. It does not discuss error behavior for invalid input, but the algorithmic semantics are well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what it computes, the key option interaction, then routing guidance. The scope and constraint are front-loaded with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described; the description covers range limits, edge cases (odd counts, second leg), and sibling routing. Nothing an agent needs to select or invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description still adds value by tying the parameters together semantically (2-100 team bound, 'twice home-and-away with second_leg', odd counts producing one bye per round), which is not stated in the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Compute a round-robin fixture list (circle method)') and immediately scopes it ('for 2-100 teams: every pair meets once, or twice home-and-away with second_leg'). It is clearly distinguishable from match_day_plan and season_plan, which it names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Use when you need who plays whom in each round') and explicit when-not with named alternatives for both excluded cases (match_day_plan for times/courts, season_plan for calendar dates). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

season_planSeason planA
Read-onlyIdempotent
Inspect

Estimate a season's size and calendar: total round-robin fixtures, games per match day (limited by courts, one slot per day), match days needed, every match-day date from start_date at a fixed interval, and the finish date. Use for "when will the season end?". Do NOT use for pairings (use round_robin_schedule) or one day's timetable (use match_day_plan).

NameRequiredDescriptionDefault
teamsYesTeam names: 2-100 unique, non-empty names (trimmed), e.g. ["Falcons", "Tigers", "Bears"]
courtsYesCourts usable at the same time on each match day, integer 1-12; caps games per match day. E.g. 2
second_legNoIf true, plan a double round-robin (each pair meets twice). Default false
start_dateYesFirst match day, YYYY-MM-DD, e.g. "2026-10-04"
slot_minutesYesLength of one game slot in minutes, integer 10-180 (validated and echoed in the note; each match day is one slot). E.g. 30
days_between_roundsNoDays between consecutive match days, integer 1-60. Default 7 (weekly)

Output Schema

NameRequiredDescription
noteYesPlain-English summary of the season plan and assumptions
datesYesEvery match-day date, YYYY-MM-DD, in order
finish_dateYesDate of the last match day, YYYY-MM-DD
games_totalYesTotal fixtures in the season (n(n-1)/2 per leg)
rounds_neededYesNumber of match days needed to play all fixtures
per_team_gamesYesGames each team plays over the season
games_per_roundYesGames played per match day: min(floor(teams/2), courts)

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered and the description correctly does not restate it. Beyond that it adds genuine behavioral context: the computation is deterministic round-robin sizing, one slot per day, dates stepped at a fixed interval, and slot_minutes is validated and echoed back. It stops short of describing pagination, error conditions, or the note/response structure, so 3 is the right level for a read-only pure-calculation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler, and the front-loading is deliberate: purpose and outputs first, then the use-case question, then the exclusions. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter, read-only planning tool with a full output schema and complete annotations, nothing an agent needs is missing: purpose, triggering scenario, sibling routing, and the interaction between courts/slots/intervals are all stated, and return values are already covered by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the schema already carries per-parameter bounds, defaults, and formats. The description adds a little interaction semantics (courts caps games per match day; each match day is one slot; dates follow a fixed interval) but introduces no syntax or constraints not already in the schema, so it does not exceed the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ("Estimate a season's size and calendar") and enumerates the exact outputs computed: fixtures, games per match day, match days needed, every match-day date, and the finish date. It also explicitly names the sibling tools it is not (round_robin_schedule, match_day_plan), so an agent can distinguish it without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete triggering question ("when will the season end?") plus explicit exclusions with named alternatives: pairings go to round_robin_schedule and a single day's timetable to match_day_plan. That is the full when/when-not/alternative trio.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

standings_tableStandings tableA
Read-onlyIdempotent
Inspect

Compute a league standings table from match results: played, W/D/L, goals for/against, goal difference and points, sorted by points, then goal difference, then goals for, then name. Use when you have scores and want the current table. Do NOT use to generate future fixtures (use round_robin_schedule).

NameRequiredDescriptionDefault
teamsNoOptional full roster (2+ unique names). Teams with no results appear with zeros; results involving teams not listed are skipped with a warning
resultsYesCompleted match results in any order; may be empty if teams is given (zeroed table)
points_winNoPoints awarded for a win, non-negative number. Default 3
points_drawNoPoints awarded for a draw, non-negative number. Default 1

Output Schema

NameRequiredDescription
tableYesStandings rows sorted by points, goal difference, goals for, then team name
warningsYesResults skipped because a team was not in the roster (empty if none)
points_systemYesPoints scheme applied to compute the table

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, so safety is covered. The description adds genuine behavioral detail beyond that: the deterministic tiebreak chain (points, then GD, then GF, then name) and the fact that it derives a table rather than generating new matches. It stops short of describing edge-case handling (e.g. partial rosters, warnings), which the schema carries instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero padding: purpose and output shape first, then the positive trigger, then the exclusion. Nothing is repeated and the routing information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values needn't be explained, and the description still describes the table's columns and ordering. Combined with full parameter coverage, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds only the sorting keys implied by the output, not detail on points_win/points_draw or the teams/results interaction, all of which the schema already documents well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Compute a league standings table from match results') and enumerates the exact output columns (played, W/D/L, GF/GA, GD, points) plus sort order. It also distinguishes itself from round_robin_schedule by name, so an agent needn't open the schema to tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit positive trigger ('Use when you have scores and want the current table') and an explicit exclusion with the correct alternative ('Do NOT use to generate future fixtures (use round_robin_schedule)'). Both when-to-use and when-not are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedmatch_day_plan23 fields changed
      • changedInput schema / properties / courts / description
        Previous value: -"Courts available (1-12)"New value: +"Number of courts/pitches usable at the same time, integer 1-12, e.g. 2"
      • addedInput schema / properties / courts / maximum
        Added value: +12
      • addedInput schema / properties / courts / minimum
        Added value: +1
      • changedInput schema / properties / courts / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / games / description
        Previous value: -"Games in the order they should be played"New value: +"Games in the order they should be played (non-empty); e.g. one round's fixtures from round_robin_schedule"
      • addedInput schema / properties / games / items / properties / away / description
        Added value: +"Away team name, e.g. \"Tigers\""
      • addedInput schema / properties / games / items / properties / home / description
        Added value: +"Home team name, e.g. \"Falcons\""
      • addedInput schema / properties / games / minItems
        Added value: +1
      • changedInput schema / properties / slot_minutes / description
        Previous value: -"Minutes per time slot (10-180)"New value: +"Length of one game slot in minutes, integer 10-180, e.g. 40"
      • addedInput schema / properties / slot_minutes / maximum
        Added value: +180
      • addedInput schema / properties / slot_minutes / minimum
        Added value: +10
      • changedInput schema / properties / slot_minutes / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / start_time / description
        Previous value: -"First kick-off, 24h HH:MM"New value: +"First game start, 24h HH:MM, e.g. \"09:00\" or \"18:30\""
      • addedInput schema / properties / start_time / pattern
        Added value: +"^([01]\\d|2[0-3]):[0-5]\\d$"
      • addedOutput schema / properties / courts
        Added value: +{
        +  "description": "Number of courts used in parallel",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / end_time
        Added value: +{
        +  "description": "Time the last slot finishes, 24h HH:MM (wraps past midnight)",
        +  "type": "string"
        +}
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Plain-English summary (slots, courts, after-midnight warning)",
        +  "type": "string"
        +}
      • removedOutput schema / properties / schedule
        Removed value: -{
        -  "description": "List of scheduled games with their respective courts and times.",
        -  "items": {
        -    "properties": {
        -      "away": {
        -        "description": "The away team of the game.",
        -        "type": "string"
        -      },
        -      "court": {
        -        "description": "The court number where the game is scheduled.",
        -        "type": "integer"
        -      },
        -      "game_index": {
        -        "description": "The index of the game in the input list.",
        -        "type": "integer"
        -      },
        -      "home": {
        -        "description": "The home team of the game.",
        -        "type": "string"
        -      },
        -      "time": {
        -        "description": "The start time of the game in 24h HH:MM format.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "game_index",
        -      "home",
        -      "away",
        -      "court",
        -      "time"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / slot_minutes
        Added value: +{
        +  "description": "Length of each slot in minutes",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / start_time
        Added value: +{
        +  "description": "First slot start time, 24h HH:MM (echoed from input)",
        +  "type": "string"
        +}
      • addedOutput schema / properties / timeline
        Added value: +{
        +  "description": "One entry per game, in input order",
        +  "items": {
        +    "properties": {
        +      "away": {
        +        "description": "Away team name",
        +        "type": "string"
        +      },
        +      "court": {
        +        "description": "Court number starting at 1",
        +        "type": "integer"
        +      },
        +      "home": {
        +        "description": "Home team name",
        +        "type": "string"
        +      },
        +      "time_hhmm": {
        +        "description": "Start time 24h HH:MM",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "time_hhmm",
        +      "court",
        +      "home",
        +      "away"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / total_minutes
        Added value: +{
        +  "description": "Total duration from first start to last finish, in minutes",
        +  "type": "integer"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "schedule"
        -]New value: +[
        +  "start_time",
        +  "end_time",
        +  "courts",
        +  "slot_minutes",
        +  "timeline",
        +  "total_minutes",
        +  "note"
        +]
    • Changedround_robin_schedule16 fields changed
      • changedInput schema / properties / rounds / description
        Previous value: -"Optional number of rounds to return (1..full schedule)"New value: +"Optional: return only the first N rounds, integer 1..max (max = teams-1 for even counts, teams for odd; doubled with second_leg). Default: all rounds"
      • addedInput schema / properties / rounds / minimum
        Added value: +1
      • changedInput schema / properties / rounds / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / second_leg / description
        Previous value: -"Also schedule the reverse fixtures for a double round-robin"New value: +"If true, append a mirrored second leg with home and away swapped (double round-robin). Default false"
      • changedInput schema / properties / teams / description
        Previous value: -"Team names (2 or more, unique)"New value: +"Team names: 2-100 unique, non-empty names (trimmed), e.g. [\"Falcons\", \"Tigers\", \"Bears\"]"
      • addedInput schema / properties / teams / items / description
        Added value: +"Team name, e.g. \"Falcons\""
      • addedInput schema / properties / teams / maxItems
        Added value: +100
      • addedInput schema / properties / teams / minItems
        Added value: +2
      • addedOutput schema / properties / games_per_team
        Added value: +{
        +  "description": "Average games per team across the returned rounds (2 decimals)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / legs
        Added value: +{
        +  "description": "Number of legs included in the returned rounds (1 or 2)",
        +  "enum": [
        +    1,
        +    2
        +  ],
        +  "type": "integer"
        +}
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Plain-English summary of the schedule (teams, rounds, byes, truncation)",
        +  "type": "string"
        +}
      • addedOutput schema / properties / rounds
        Added value: +{
        +  "description": "Rounds in play order, each with its fixtures and any bye",
        +  "items": {
        +    "properties": {
        +      "fixtures": {
        +        "description": "Fixtures in this round",
        +        "items": {
        +          "description": "A fixture {home, away}, or {bye} for the team sitting out this round",
        +          "properties": {
        +            "away": {
        +              "description": "Away team name",
        +              "type": "string"
        +            },
        +            "bye": {
        +              "description": "Team with a bye (no game) this round",
        +              "type": "string"
        +            },
        +            "home": {
        +              "description": "Home team name",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "round": {
        +        "description": "Round number starting at 1",
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "round",
        +      "fixtures"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / schedule
        Removed value: -{
        -  "description": "List of rounds in the schedule",
        -  "items": {
        -    "properties": {
        -      "bye": {
        -        "description": "The team with a bye in this round (if any)",
        -        "type": "string"
        -      },
        -      "matches": {
        -        "description": "List of matches in the round",
        -        "items": {
        -          "properties": {
        -            "away": {
        -              "description": "The away team name",
        -              "type": "string"
        -            },
        -            "home": {
        -              "description": "The home team name",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "home",
        -            "away"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "round": {
        -        "description": "The round number",
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "round",
        -      "matches"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / teams
        Added value: +{
        +  "description": "Cleaned (trimmed) team names in input order",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / total_games
        Added value: +{
        +  "description": "Total fixtures (excluding byes) in the returned rounds",
        +  "type": "integer"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "schedule"
        -]New value: +[
        +  "teams",
        +  "legs",
        +  "rounds",
        +  "games_per_team",
        +  "total_games",
        +  "note"
        +]
    • Changedseason_plan33 fields changed
      • changedInput schema / properties / courts / description
        Previous value: -"Courts available per match day (1-12)"New value: +"Courts usable at the same time on each match day, integer 1-12; caps games per match day. E.g. 2"
      • addedInput schema / properties / courts / maximum
        Added value: +12
      • addedInput schema / properties / courts / minimum
        Added value: +1
      • changedInput schema / properties / courts / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / days_between_rounds / description
        Previous value: -"Days between match days, default 7"New value: +"Days between consecutive match days, integer 1-60. Default 7 (weekly)"
      • addedInput schema / properties / days_between_rounds / maximum
        Added value: +60
      • addedInput schema / properties / days_between_rounds / minimum
        Added value: +1
      • changedInput schema / properties / days_between_rounds / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / second_leg / description
        Previous value: -"Plan a double round-robin (each pair meets twice)"New value: +"If true, plan a double round-robin (each pair meets twice). Default false"
      • changedInput schema / properties / slot_minutes / description
        Previous value: -"Minutes per time slot (10-180)"New value: +"Length of one game slot in minutes, integer 10-180 (validated and echoed in the note; each match day is one slot). E.g. 30"
      • addedInput schema / properties / slot_minutes / maximum
        Added value: +180
      • addedInput schema / properties / slot_minutes / minimum
        Added value: +10
      • changedInput schema / properties / slot_minutes / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / start_date / description
        Previous value: -"First match day, YYYY-MM-DD"New value: +"First match day, YYYY-MM-DD, e.g. \"2026-10-04\""
      • addedInput schema / properties / start_date / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • changedInput schema / properties / teams / description
        Previous value: -"Team names (2 or more, unique)"New value: +"Team names: 2-100 unique, non-empty names (trimmed), e.g. [\"Falcons\", \"Tigers\", \"Bears\"]"
      • addedInput schema / properties / teams / items / description
        Added value: +"Team name, e.g. \"Falcons\""
      • addedInput schema / properties / teams / maxItems
        Added value: +100
      • addedInput schema / properties / teams / minItems
        Added value: +2
      • addedOutput schema / properties / dates
        Added value: +{
        +  "description": "Every match-day date, YYYY-MM-DD, in order",
        +  "items": {
        +    "description": "Match-day date YYYY-MM-DD",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / estimated_finish_date
        Removed value: -{
        -  "description": "The estimated finish date of the season.",
        -  "format": "date",
        -  "type": "string"
        -}
      • addedOutput schema / properties / finish_date
        Added value: +{
        +  "description": "Date of the last match day, YYYY-MM-DD",
        +  "type": "string"
        +}
      • removedOutput schema / properties / games_per_match_day
        Removed value: -{
        -  "description": "Number of games scheduled per match day.",
        -  "type": "integer"
        -}
      • addedOutput schema / properties / games_per_round
        Added value: +{
        +  "description": "Games played per match day: min(floor(teams/2), courts)",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / games_total
        Added value: +{
        +  "description": "Total fixtures in the season (n(n-1)/2 per leg)",
        +  "type": "integer"
        +}
      • removedOutput schema / properties / match_days
        Removed value: -{
        -  "description": "Array of match day plans, each with details for that day.",
        -  "items": {
        -    "properties": {
        -      "date": {
        -        "description": "The date of the match day.",
        -        "format": "date",
        -        "type": "string"
        -      },
        -      "matches": {
        -        "items": {
        -          "properties": {
        -            "team1": {
        -              "description": "The name of the first team.",
        -              "type": "string"
        -            },
        -            "team2": {
        -              "description": "The name of the second team.",
        -              "type": "string"
        -            },
        -            "time_slot": {
        -              "description": "The time slot for the match.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "team1",
        -            "team2",
        -            "time_slot"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "date",
        -      "matches"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / match_days_needed
        Removed value: -{
        -  "description": "Total number of match days required to complete the season.",
        -  "type": "integer"
        -}
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Plain-English summary of the season plan and assumptions",
        +  "type": "string"
        +}
      • addedOutput schema / properties / per_team_games
        Added value: +{
        +  "description": "Games each team plays over the season",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / rounds_needed
        Added value: +{
        +  "description": "Number of match days needed to play all fixtures",
        +  "type": "integer"
        +}
      • removedOutput schema / properties / start_date
        Removed value: -{
        -  "description": "The start date of the season.",
        -  "format": "date",
        -  "type": "string"
        -}
      • removedOutput schema / properties / total_fixtures
        Removed value: -{
        -  "description": "Total number of matches in the season.",
        -  "type": "integer"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "total_fixtures",
        -  "games_per_match_day",
        -  "match_days_needed",
        -  "start_date",
        -  "estimated_finish_date",
        -  "match_days"
        -]New value: +[
        +  "rounds_needed",
        +  "games_total",
        +  "games_per_round",
        +  "per_team_games",
        +  "dates",
        +  "finish_date",
        +  "note"
        +]
    • Changedstandings_table21 fields changed
      • changedInput schema / properties / points_draw / description
        Previous value: -"Points for a draw, default 1"New value: +"Points awarded for a draw, non-negative number. Default 1"
      • addedInput schema / properties / points_draw / minimum
        Added value: +0
      • changedInput schema / properties / points_win / description
        Previous value: -"Points for a win, default 3"New value: +"Points awarded for a win, non-negative number. Default 3"
      • addedInput schema / properties / points_win / minimum
        Added value: +0
      • changedInput schema / properties / results / description
        Previous value: -"Match results in any order"New value: +"Completed match results in any order; may be empty if teams is given (zeroed table)"
      • addedInput schema / properties / results / items / properties / away / description
        Added value: +"Away team name (must differ from home), e.g. \"Tigers\""
      • addedInput schema / properties / results / items / properties / away_score / description
        Added value: +"Away team score, non-negative integer, e.g. 1"
      • addedInput schema / properties / results / items / properties / away_score / minimum
        Added value: +0
      • changedInput schema / properties / results / items / properties / away_score / type
        Previous value: -"number"New value: +"integer"
      • addedInput schema / properties / results / items / properties / home / description
        Added value: +"Home team name, e.g. \"Falcons\""
      • addedInput schema / properties / results / items / properties / home_score / description
        Added value: +"Home team score, non-negative integer, e.g. 3"
      • addedInput schema / properties / results / items / properties / home_score / minimum
        Added value: +0
      • changedInput schema / properties / results / items / properties / home_score / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / teams / description
        Previous value: -"Full roster; results for teams outside it are skipped with a warning"New value: +"Optional full roster (2+ unique names). Teams with no results appear with zeros; results involving teams not listed are skipped with a warning"
      • addedInput schema / properties / teams / items / description
        Added value: +"Team name"
      • addedInput schema / properties / teams / minItems
        Added value: +2
      • addedOutput schema / properties / points_system
        Added value: +{
        +  "description": "Points scheme applied to compute the table",
        +  "properties": {
        +    "draw": {
        +      "description": "Points per draw",
        +      "type": "number"
        +    },
        +    "win": {
        +      "description": "Points per win",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "win",
        +    "draw"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / standings
        Removed value: -{
        -  "description": "List of teams with their respective standings data",
        -  "items": {
        -    "properties": {
        -      "draws": {
        -        "description": "Number of matches drawn by the team",
        -        "type": "number"
        -      },
        -      "goal_difference": {
        -        "description": "Difference between goals scored and conceded",
        -        "type": "number"
        -      },
        -      "goals_against": {
        -        "description": "Total goals conceded by the team",
        -        "type": "number"
        -      },
        -      "goals_for": {
        -        "description": "Total goals scored by the team",
        -        "type": "number"
        -      },
        -      "losses": {
        -        "description": "Number of matches lost by the team",
        -        "type": "number"
        -      },
        -      "name": {
        -        "description": "Name of the team",
        -        "type": "string"
        -      },
        -      "played": {
        -        "description": "Number of matches played by the team",
        -        "type": "number"
        -      },
        -      "points": {
        -        "description": "Total points accumulated by the team",
        -        "type": "number"
        -      },
        -      "wins": {
        -        "description": "Number of matches won by the team",
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "name",
        -      "played",
        -      "wins",
        -      "draws",
        -      "losses",
        -      "goals_for",
        -      "goals_against",
        -      "goal_difference",
        -      "points"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / table
        Added value: +{
        +  "description": "Standings rows sorted by points, goal difference, goals for, then team name",
        +  "items": {
        +    "properties": {
        +      "draws": {
        +        "description": "Games drawn",
        +        "type": "integer"
        +      },
        +      "ga": {
        +        "description": "Goals/points conceded (against)",
        +        "type": "integer"
        +      },
        +      "gd": {
        +        "description": "Goal difference (gf - ga)",
        +        "type": "integer"
        +      },
        +      "gf": {
        +        "description": "Goals/points scored (for)",
        +        "type": "integer"
        +      },
        +      "losses": {
        +        "description": "Games lost",
        +        "type": "integer"
        +      },
        +      "played": {
        +        "description": "Games played",
        +        "type": "integer"
        +      },
        +      "points": {
        +        "description": "League points",
        +        "type": "number"
        +      },
        +      "team": {
        +        "description": "Team name",
        +        "type": "string"
        +      },
        +      "wins": {
        +        "description": "Games won",
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "team",
        +      "played",
        +      "wins",
        +      "draws",
        +      "losses",
        +      "gf",
        +      "ga",
        +      "gd",
        +      "points"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / warnings / description
        Previous value: -"List of warnings encountered during processing"New value: +"Results skipped because a team was not in the roster (empty if none)"
      • changedOutput schema / required
        Previous value: -[
        -  "standings"
        -]New value: +[
        +  "table",
        +  "warnings",
        +  "points_system"
        +]
  2. 1 tool update
    • Changedseason_plan1 field changed
      • addedOutput schema / properties / match_days / description
        Added value: +"Array of match day plans, each with details for that day."
  3. 4 tool updates
    • Changedmatch_day_plan1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "schedule": {
        +      "description": "List of scheduled games with their respective courts and times.",
        +      "items": {
        +        "properties": {
        +          "away": {
        +            "description": "The away team of the game.",
        +            "type": "string"
        +          },
        +          "court": {
        +            "description": "The court number where the game is scheduled.",
        +            "type": "integer"
        +          },
        +          "game_index": {
        +            "description": "The index of the game in the input list.",
        +            "type": "integer"
        +          },
        +          "home": {
        +            "description": "The home team of the game.",
        +            "type": "string"
        +          },
        +          "time": {
        +            "description": "The start time of the game in 24h HH:MM format.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "game_index",
        +          "home",
        +          "away",
        +          "court",
        +          "time"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "schedule"
        +  ],
        +  "type": "object"
        +}
    • Changedround_robin_schedule1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "schedule": {
        +      "description": "List of rounds in the schedule",
        +      "items": {
        +        "properties": {
        +          "bye": {
        +            "description": "The team with a bye in this round (if any)",
        +            "type": "string"
        +          },
        +          "matches": {
        +            "description": "List of matches in the round",
        +            "items": {
        +              "properties": {
        +                "away": {
        +                  "description": "The away team name",
        +                  "type": "string"
        +                },
        +                "home": {
        +                  "description": "The home team name",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "home",
        +                "away"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "round": {
        +            "description": "The round number",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "round",
        +          "matches"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "schedule"
        +  ],
        +  "type": "object"
        +}
    • Changedseason_plan1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "estimated_finish_date": {
        +      "description": "The estimated finish date of the season.",
        +      "format": "date",
        +      "type": "string"
        +    },
        +    "games_per_match_day": {
        +      "description": "Number of games scheduled per match day.",
        +      "type": "integer"
        +    },
        +    "match_days": {
        +      "items": {
        +        "properties": {
        +          "date": {
        +            "description": "The date of the match day.",
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "matches": {
        +            "items": {
        +              "properties": {
        +                "team1": {
        +                  "description": "The name of the first team.",
        +                  "type": "string"
        +                },
        +                "team2": {
        +                  "description": "The name of the second team.",
        +                  "type": "string"
        +                },
        +                "time_slot": {
        +                  "description": "The time slot for the match.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "team1",
        +                "team2",
        +                "time_slot"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "date",
        +          "matches"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "match_days_needed": {
        +      "description": "Total number of match days required to complete the season.",
        +      "type": "integer"
        +    },
        +    "start_date": {
        +      "description": "The start date of the season.",
        +      "format": "date",
        +      "type": "string"
        +    },
        +    "total_fixtures": {
        +      "description": "Total number of matches in the season.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "total_fixtures",
        +    "games_per_match_day",
        +    "match_days_needed",
        +    "start_date",
        +    "estimated_finish_date",
        +    "match_days"
        +  ],
        +  "type": "object"
        +}
    • Changedstandings_table1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "standings": {
        +      "description": "List of teams with their respective standings data",
        +      "items": {
        +        "properties": {
        +          "draws": {
        +            "description": "Number of matches drawn by the team",
        +            "type": "number"
        +          },
        +          "goal_difference": {
        +            "description": "Difference between goals scored and conceded",
        +            "type": "number"
        +          },
        +          "goals_against": {
        +            "description": "Total goals conceded by the team",
        +            "type": "number"
        +          },
        +          "goals_for": {
        +            "description": "Total goals scored by the team",
        +            "type": "number"
        +          },
        +          "losses": {
        +            "description": "Number of matches lost by the team",
        +            "type": "number"
        +          },
        +          "name": {
        +            "description": "Name of the team",
        +            "type": "string"
        +          },
        +          "played": {
        +            "description": "Number of matches played by the team",
        +            "type": "number"
        +          },
        +          "points": {
        +            "description": "Total points accumulated by the team",
        +            "type": "number"
        +          },
        +          "wins": {
        +            "description": "Number of matches won by the team",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "played",
        +          "wins",
        +          "draws",
        +          "losses",
        +          "goals_for",
        +          "goals_against",
        +          "goal_difference",
        +          "points"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "warnings": {
        +      "description": "List of warnings encountered during processing",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "standings"
        +  ],
        +  "type": "object"
        +}
  4. 4 tool updates
    • First observedmatch_day_plan
    • First observedround_robin_schedule
    • First observedseason_plan
    • First observedstandings_table

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Tournament software for tennis, padel, pickleball and more: fair draws, live standings, scores and dropout handling.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to organize weekly football games by creating balanced teams and fixtures, managing squads and invites, setting games, tracking availability, entering results, and sharing vote links.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Live football/soccer data from top European leagues, enabling queries for standings, fixtures, scorers, and team comparisons via natural language.
    6
    6 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources