Skip to main content
Glama

Whistle.day - Tournament organizer

create_tournament

Create a draft tournament. Signed in, it is created on that account. Not signed in, it is created on a temporary account that lasts as long as this connection does, and the other tools then work on it for the rest of the connection; use create_handoff to give a person a link that makes it theirs.

Input Schema

NameRequiredDescriptionDefault
nameYesTournament name
sportNoWhat is being played: volleyball, football, basketball, tennis, padel, badminton, table_tennis, handball, other. This decides the points, whether a draw is a result at all, and how many sets a match is played to — so getting it wrong scores the whole day wrong. Defaults to "other", which is a generic table rather than a guess.

Output Schema

NameRequiredDescriptionDefault
idYesRecord ID
nameYesName
noteYesWhich account the tournament was created on
sportYesSport preset the tournament is scored by
statusYesStatus
scoringYesThe scoring rules the sport preset set

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "sport",
      -  "status",
      -  "note",
      -  "scoring"
      -]New value: +[
      +  "id",
      +  "name",
      +  "sport",
      +  "status",
      +  "scoring",
      +  "note"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "sport",
      -  "status",
      -  "scoring",
      -  "note"
      -]New value: +[
      +  "id",
      +  "name",
      +  "sport",
      +  "status",
      +  "note",
      +  "scoring"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "sport",
      -  "status",
      -  "note",
      -  "scoring"
      -]New value: +[
      +  "id",
      +  "name",
      +  "sport",
      +  "status",
      +  "scoring",
      +  "note"
      +]
  4. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "sport",
      -  "status",
      -  "scoring",
      -  "note"
      -]New value: +[
      +  "id",
      +  "name",
      +  "sport",
      +  "status",
      +  "note",
      +  "scoring"
      +]
  5. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "sport",
      -  "status",
      -  "note",
      -  "scoring"
      -]New value: +[
      +  "id",
      +  "name",
      +  "sport",
      +  "status",
      +  "scoring",
      +  "note"
      +]
  6. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "sport",
      -  "status",
      -  "scoring",
      -  "note"
      -]New value: +[
      +  "id",
      +  "name",
      +  "sport",
      +  "status",
      +  "note",
      +  "scoring"
      +]
  7. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "sport",
      -  "status",
      -  "note",
      -  "scoring"
      -]New value: +[
      +  "id",
      +  "name",
      +  "sport",
      +  "status",
      +  "scoring",
      +  "note"
      +]
  8. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "id": {
      +      "description": "Record ID",
      +      "type": "string"
      +    },
      +    "name": {
      +      "description": "Name",
      +      "type": "string"
      +    },
      +    "note": {
      +      "description": "Which account the tournament was created on",
      +      "type": "string"
      +    },
      +    "scoring": {
      +      "description": "The scoring rules the sport preset set",
      +      "type": "object"
      +    },
      +    "sport": {
      +      "description": "Sport preset the tournament is scored by",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "Status",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "name",
      +    "sport",
      +    "status",
      +    "note",
      +    "scoring"
      +  ],
      +  "type": "object"
      +}
  9. Changed1 schema field changed
    • changedInput schema / properties / sport / description
      Previous value: -"What is being played: volleyball, football, basketball, other. This decides the points, whether a draw is a result at all, and how many sets a match is played to — so getting it wrong scores the whole day wrong. Defaults to \"other\", which is a generic table rather than a guess."New value: +"What is being played: volleyball, football, basketball, tennis, padel, badminton, table_tennis, handball, other. This decides the points, whether a draw is a result at all, and how many sets a match is played to — so getting it wrong scores the whole day wrong. Defaults to \"other\", which is a generic table rather than a guess."
  10. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations declare write/non-idempotent/non-destructive, and the description adds behavior those annotations cannot express: the object starts as a draft, is bound to the current account, and in the anonymous case lives only as long as the connection with subsequent sibling tools operating on it. It stops short of describing what "draft" entails (visibility, publishability) beyond the name.

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

Conciseness4/5

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

Front-loads the action in the first clause, then spends the rest on the signed-in/anonymous fork and the handoff escape hatch. Every clause carries information, though the second sentence is dense and could be split for scanability.

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, annotations covering the safety profile, and 100% schema coverage, the remaining burden is lifecycle/auth semantics — exactly what the description supplies (draft state, account binding, connection-scoped temp account, create_handoff path). Nothing an agent needs to invoke it correctly is missing.

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%, and the sport parameter's schema text is unusually rich (enum-like values, scoring effects, "other" default). The description adds nothing about name or sport, so the schema does the work and the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Create a draft tournament") and the "draft" qualifier implicitly separates it from publish_tournament. It does not explicitly name or contrast with siblings such as list_tournaments or create_handoff beyond its role in the lifecycle.

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

Usage Guidelines4/5

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

Explains the two operating contexts (signed in vs. not) and what happens in each, and routes the agent to create_handoff when the tournament needs to be handed to a person. It gives clear context for the anonymous path but does not state when this tool should be preferred over other creation/entry tools.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources