kicksmash
Server Details
Padel matches for people and agents: create, share one link, join, americano schedules, levels.
- Status
- Healthy
- Uptime
- 100.0% over 36 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- evhg/padel-matchup
- GitHub Stars
- 0
TDQS
Scored across 15 tools
Tools mostly target distinct resources and actions: find_clubs/find_coaches/find_matches/find_series separate cleanly, and book_lesson vs request_coach vs join_match are clearly different flows. Minor overlap exists between get_match (by code) and find_matches/find_series, but descriptions make the boundaries clear.
Consistent snake_case verb_noun pattern throughout (find_*, get_*, create_*, book_, cancel_, join_, request_, generate_). Only about_kicksmash deviates as a noun-only doc tool, a minor but understandable exception.
15 tools is at the upper edge but each covers a distinct facet (matches, tournaments, series, lessons, coaches, clubs, groups, scheduling, API key). Nothing is redundant, though it sits just past the comfortably compact range.
Lesson lifecycle is complete (book/cancel) and match creation/join/read exist, but there is no leave_match, update_match, or cancel_match, so joined matches and organizers have dead ends. Clubs and groups are read-only, which is acceptable for that data.
Available Tools
15 toolsabout_kicksmashAbout KicksmashARead-onlyIdempotentInspect
What Kicksmash is and how to use it: matches, levels, groups, boards, the API and what we ask of assistants. Read this once before acting.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior, so the description does not need to repeat those. The description adds useful context about the tool's content coverage, including the API and expectations for assistants, which goes beyond structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the purpose and immediately gives an actionable instruction. It lists the covered topics efficiently without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter informational tool, the description is complete: it states what the tool is, what topics it covers, and how the assistant should use it. No output schema or parameter fields create additional requirements, and the annotations already cover the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema description coverage, so there is no parameter burden for the description to carry. Baseline for zero-parameter tools is 4, and the description appropriately avoids inventing unnecessary parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as an informational onboarding resource: 'What Kicksmash is and how to use it' with a concrete list of covered topics. It is immediately distinguishable from the action-oriented sibling tools like create_match or find_matches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage instruction: 'Read this once before acting,' which tells the agent when to invoke it relative to other operations. It does not explicitly name alternatives or conditions to skip it, but its role as a prerequisite resource is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_lessonBook a lessonAInspect
Book one lesson at a free start for an accepted student (their personal token). Draws from their open package when they have one. Confirm the time with the person first.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The student's personal token (from request_coach or any earlier call). The coach must have accepted them. | |
| handle | Yes | The coach's handle from their page URL, e.g. 'olga' in kicksma.sh/c/olga. | |
| startsAt | Yes | A start from coach_slots, ISO 8601. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, but the description adds important behavioral context: the tool draws from the student's open package when one exists, and prior confirmation is required. This goes beyond the structured annotation fields without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying useful information, with no filler. The key action and prerequisites are front-loaded, and the package behavior is stated compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three documented parameters and no output schema, the description plus schema covers the action, preconditions, source of inputs, and a key side effect. It does not describe return values or error cases, but those are not required for this straightforward booking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by specifying that startsAt must be a free start and that the token belongs to an accepted student, and it clarifies the package-drawing behavior. This adds value beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('book one lesson'), a specific target ('an accepted student'), and a precise constraint ('at a free start'). It clearly distinguishes itself from siblings like cancel_lesson, coach_slots, and request_coach by focusing on the booking action and the accepted-student token context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the correct context: use it only after the student is accepted, with a start from coach_slots, and after confirming the time with the person. It gives a clear prerequisite ('Confirm the time with the person first') but does not explicitly name alternatives or say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_lessonCancel a lessonAInspect
Cancel a student's lesson under the coach's rules; the outcome says whether it was refunded, covered by a free pass, or counted. Say the rule to the person before cancelling late.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The student's personal token. | |
| lessonId | Yes | The lesson id from book_lesson. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses meaningful behavioral details beyond the annotations: the cancellation may result in a refund, a free pass, or being counted, and it requires stating the rule before a late cancellation. This helps the agent anticipate consequences and follow a required step, even though annotations already indicate this is not read-only or idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the action and immediately adds the most important behavioral condition and the required pre-cancellation communication step. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter cancellation tool with no output schema, the description provides enough context about what the outcome will communicate and the rule-related behavior. It could be more complete by describing the exact output structure, but the essential invocation and consequence information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters with 100% coverage: lessonId is 'The lesson id from book_lesson' and token is 'The student's personal token.' The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Cancel a student's lesson' and clarifies the cancellation happens 'under the coach's rules.' It also tells what the outcome communicates, which distinguishes it clearly from booking-related siblings like book_lesson.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: to cancel a student's lesson. It also provides useful context by explaining that the outcome depends on coach rules and adds a specific procedural requirement for late cancellations: 'Say the rule to the person before cancelling late.' It does not explicitly name alternatives, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coach_slotsA coach's free timesARead-onlyIdempotentInspect
Free starts inside a coach's hours for the next days (default 14). Only accepted students can book them: request_coach first.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days ahead, default 14. | |
| handle | Yes | The coach's handle from their page URL, e.g. 'olga' in kicksma.sh/c/olga. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to restate safety. It adds meaningful context beyond annotations: the default time window, the notion of 'inside a coach's hours,' and the eligibility rule that only accepted students can book. It stops short of describing output shape or whether booked slots are excluded, but the added behavioral context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with zero filler. The core resource and default window are front-loaded, and the eligibility/precondition guidance is packed into a compact second sentence. Every word contributes to the agent's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with two parameters and a full schema, the description covers the essential purpose and a key precondition. However, there is no output schema, and the description does not clarify the return format (e.g., date-time representation, granularity) or whether the list only includes unbooked slots. These gaps leave some ambiguity for an agent trying to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are well-described in the schema: handle includes an example, and days includes its default and range. The description mentions 'default 14' but this duplicates the schema text. No additional parameter-level meaning is provided beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a coach's free time starts within the next days and defaults to 14. It distinguishes itself from booking/requesting siblings by noting that only accepted students can book and that request_coach is a prerequisite. However, it lacks an explicit imperative verb like 'list' or 'get,' so the action is implied rather than stated directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context: this tool surfaces free starts inside a coach's hours over a configurable future window, with a default of 14 days. It also signals the prerequisite flow ('request_coach first') and the booking restriction. It does not explicitly rule out alternatives like find_coaches or find_clubs, but the context is clear enough for an agent to select this tool when a specific coach's availability is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_api_keyCreate an API keyAInspect
Get a free key instantly for roomier limits and webhooks. Shown once. Not needed for reading or for a few writes a day.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Who or what will use the key. | |
| agent | No | Your name as an assistant, e.g. 'claude'. | |
| No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description reveals the key is shown once and is free, adding context beyond the annotations; there is no contradiction with readOnlyHint false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences deliver the purpose and key caveats without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides enough context to call the tool, including the one-time display caveat, though no output schema or error/usage limits are specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 2 of 3 parameters with meaningful descriptions, but the description adds no parameter guidance and the email parameter lacks a description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Title and description clearly state the tool creates/gets a free API key, distinct from sibling tools focused on matches, clubs, and schedules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says a key is unnecessary for read-only or light write usage and is intended for higher limits and webhooks, though it does not name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_matchCreate a matchAInspect
Create a padel match (4 players) or an americano tournament for a person. A tournament may keep fixed pairs (fixedPairs: true): two partners play every round together and the table ranks pairs. Returns the share link for the players and the organizer's private links. Give the person all links; keep personalToken and manageUrl private. Ask before creating; one request, one match.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | Yes | IANA time zone the players live in, for example Asia/Singapore or Asia/Bangkok. | |
| cost | No | What each player pays, as free text: 400 THB, €8, split 4 ways. | |
| note | No | ||
| type | No | A match is exactly four players. A tournament is an americano with 4 to 64 players in fours. | match |
| court | No | Court within the venue, e.g. "3". | |
| title | No | ||
| venue | No | Club or court name. Enables the venue board and the booking link. | |
| ageMin | No | An age tag: 35, 45 or 55 means 35+, 45+ or 55+. Omit for any age. Information only; nobody is checked when they join. | |
| format | No | Tournaments only. americano: partners rotate, everyone plays everyone. mexicano: courts by standings after round 1. king: winners move up a court, losers down. | |
| gamesTo | No | Tournaments only: first to N games (4, 6, 8) instead of points; the table then ranks by matches won. | |
| capacity | No | Tournaments only, a multiple of 4. Matches are always 4. | |
| category | No | Who the match is for: men, women or mixed. Omit for anyone. Information for the players who find it; nobody is checked when they join. | |
| levelMax | No | ||
| levelMin | No | Level range 0 to 7 (Playtomic-style). Omit both for any level. | |
| startsAt | Yes | ISO 8601 date-time. With an offset or Z it is absolute; without one it is read in tz. Example: 2026-09-11T19:00 | |
| whenFull | No | waitlist | |
| organizer | Yes | ||
| bookingUrl | No | The club's booking page or confirmation link, shown to players. | |
| fixedPairs | No | Tournaments only: two partners play every round together, in any format. Pairs sign up together (join_match with partner); a player alone is listed as needing a partner. Americano then rotates the opponents: every pair meets every other pair, and the table ranks pairs. | |
| venueMapUrl | No | ||
| organizerPlays | No | Seat the organizer in the match (default). False when they only organize. | |
| pointsPerMatch | No | Tournaments only: fixed points per match (16, 21, 24, 32). Omit for free scoring; mexicano defaults to 24. | |
| durationMinutes | No | How long the court is booked: 60, 90 or 120 minutes. Omit for 90 (a match) or 120 (a tournament). The match page, the cards and the calendar invitation show it. | |
| listOnVenueBoard | No | Show the match on the public venue board (/v/{venue-slug}). Off by default. | |
| verifiedLevelsOnly | No | With a range: only levels confirmed by an organizer, a coach or a club walk in; declared levels inside the range ask to join. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering only the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description adds real behavioral value: it discloses what comes back (share link for players, private organizer links) and a privacy-handling rule (keep personalToken and manageUrl private, share all links with the person). It does not discuss failure modes or duplicate-creation behavior beyond 'one request, one match'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with the core purpose front-loaded and the safety directive last. The fixedPairs sentence partly duplicates the schema's own fixedPairs description, which is the only slightly wasteful element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 25-parameter creation tool with a nested organizer object and no output schema, the description compensates by describing the return payload (share link plus private organizer links) and the privacy handling. It is complete enough to call correctly, though defaults and edge behavior are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 76% across 25 parameters, so the schema already carries most semantics. The description restates the match/tournament and fixedPairs meaning that the schema itself explains in more detail, adding little beyond it. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Create a padel match (4 players) or an americano tournament for a person' — and even distinguishes the two creation modes an agent must choose between. It does not name a sibling tool (e.g. join_match) to differentiate against, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Ask before creating; one request, one match' gives a concrete pre-call confirmation requirement and a cardinality constraint that prevents bulk creation. However, it offers no guidance on when to create versus when to point the user at join_match or find_matches, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_clubsFind clubsARead-onlyIdempotentInspect
Padel clubs: booking link and platform, courts, today's free courts (from the club's own calendar feed, or read from its booking platform's public page: freeCourts.source says which, and freeCourts.platform names it), founding status. Every row says claimed: true when the club runs the page itself, false when Kicksmash listed it from public sources, where the courts and links are our reading and may be out of date. Pass include:'listed' to get both — that is what answers "where can I play here?". Filter by city (phuket, singapore) or ask for one club by name.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | phuket or singapore | |
| name | No | One club by name; the slug is derived | |
| include | No | claimed (default): only clubs that run their own page. listed: also the clubs Kicksmash listed from public sources, each marked claimed:false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's value is in the provenance details it adds: freeCourts.source distinguishes calendar feed vs. scraped platform page, and the 'claimed' flag warns that unclaimed rows are our reading and may be out of date. That is meaningful reliability context beyond structured fields. It does not state result limits or ordering, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Everything stated is relevant, but the first sentence is a long run-on with a nested parenthetical explaining freeCourts.source that is dense to parse. Front-loading the primary action (find/filter clubs) would improve scanability; the include guidance, arguably the most decision-relevant line, sits mid-paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return-value burden, and it does by naming each row field and explaining the claimed flag's two states. With all three parameters documented and annotations covering safety, an agent has enough to call this correctly; only result volume/pagination is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with city values, name slug derivation, and the include enum all documented in the schema, so baseline is 3. The description adds the decision use case for include:'listed' ('where can I play here?'), but repeats rather than extends the city/name semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely (padel clubs) and enumerates the returned fields: booking link/platform, courts, today's free courts, founding status. An agent can distinguish it from find_coaches, find_matches and find_series without opening any schema. It lacks an explicit verb, but the noun-phrase-plus-field-list makes the retrieval action unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete routing for the include parameter: pass 'listed' to also get unclaimed clubs, framed as the answer to 'where can I play here?'. It also states the two filtering modes (by city, or one club by name). No explicit exclusion of sibling tools is needed since the resources are disjoint, but there is no stated when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_coachesFind coachesARead-onlyIdempotentInspect
Padel coaches who listed their page: clubs, lesson length, languages, the rules students book under (cancellation cutoff, free late passes, notice). Filter by city. Prices are the coach's to tell; nothing is paid through Kicksmash.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | phuket or singapore; omit for every listed coach |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds meaningful context beyond annotations by disclosing what data is available, that results are city-filterable, and that no payment is processed through Kicksmash. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the core subject first, lists relevant attributes, then gives filtering guidance and an important policy caveat. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-optional-parameter read-only tool, the description covers the entity type, available fields, filtering capability, and a key payment policy. It does not describe the return envelope or ordering, but given the tool's simplicity and the absence of an output schema, it is sufficiently complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents the single optional city parameter with valid values and omission behavior. The description's 'Filter by city' reinforces the parameter but does not add substantive meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as Padel coaches and lists what their pages contain (clubs, lesson length, languages, booking rules). It is distinguishable from the sibling find_clubs because it explicitly targets coaches, not clubs. However, it relies on the tool name for the action verb rather than stating an explicit 'list' or 'get' action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: filter by city, and this is for coaches who have listed their page. The payment note ('prices are the coach's to tell; nothing is paid through Kicksmash') helps the agent set expectations. It does not explicitly contrast with siblings like coach_slots or request_coach, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_matchesFind open matches at a venueARead-onlyIdempotentInspect
Open, organizer-listed matches at a venue (its public board), with spots left and level ranges. Give the venue name; the slug is derived.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | Yes | Venue name or its slug, e.g. 'Padel Indoor BCN' or 'padel-indoor-bcn'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context beyond those annotations: matches are organizer-listed, the board is public, results include spots left and level ranges, and the slug is derived from the venue name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the core purpose, states the key output fields, and gives the input convention. It contains no filler and does not repeat what the annotations or schema already say.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with no output schema, the description supplies the essential return information (open matches, spots left, level ranges) and the input derivation rule. An agent has enough context to select and invoke the tool correctly without obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the venue parameter well. The description adds value by explaining that a venue name is sufficient because the slug is derived, which is not explicit in the schema and helps the agent construct a correct call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description together identify a specific operation (find) on a specific resource (open, organizer-listed matches at a venue), and the public-board wording distinguishes it from sibling tools like find_clubs and get_match. The mention of spots left and level ranges further clarifies what kind of match listing this returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly scopes the tool to a venue's public match board and instructs the user to provide the venue name, but it does not explicitly state when to prefer this over find_clubs, get_match, or join_match. The usage context is implied rather than stated with exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_seriesFind series (Opens that repeat)ARead-onlyIdempotentInspect
Tournament series: same weekday and time every week, fortnight or month, with the next edition to sign up for and the past podiums. Filter by city, or pass a slug for one series. Players sign up on the edition's match page.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | phuket or singapore; omit for every active series | |
| slug | No | One series by slug: its next edition and past podiums |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral context beyond those annotations: recurring schedules (weekly/fortnightly/monthly), inclusion of next edition and past podiums, and the note that players sign up on the edition's match page. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The most important concept (what a series is) is front-loaded, followed by return contents, filtering, and a useful signup note. The only minor redundancy is the filter mention already covered by the schema, but it is brief and aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two optional parameters and no output schema, the description explains the resource, the return payload (next edition and podiums), the filtering options, and where signups occur. It is complete enough for an agent to invoke correctly, though it could be stronger by explicitly distinguishing itself from find_matches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters already have clear descriptions ('phuket or singapore; omit for every active series' and 'One series by slug'). The description restates this filtering behavior but adds no new parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a concrete explanation of the resource ('Tournament series: same weekday and time every week, fortnight or month') and states what the tool returns ('the next edition to sign up for and the past podiums'). It is clear and specific, though it does not explicitly name a sibling alternative such as find_matches to differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two filtering modes ('Filter by city, or pass a slug for one series') and hints that signups happen on the edition's match page, which subtly implies this tool is for discovery rather than enrollment. However, it never explicitly states when to prefer this tool over find_matches or other siblings, leaving that to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_scheduleGenerate an americano scheduleARead-onlyIdempotentInspect
Rounds of rotating-partner doubles for 4 to 64 players. Exact when the field is in fours (every pair partners once in players−1 rounds), fair sit-outs otherwise. Nothing is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Same seed, same schedule. | |
| names | No | ||
| courts | No | Defaults to floor(players / 4). | |
| format | No | americano | |
| rounds | No | Defaults to players − 1 when the field is in fours (every pair partners once), else players. | |
| players | No | Number of players; ignored when names are given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description does not need to restate those. It adds valuable behavioral context by stating 'Nothing is stored' and by specifying exactness conditions for fields in fours versus 'fair sit-outs otherwise.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences deliver the core purpose, behavioral guarantees, and persistence semantics with no filler. The most important information is front-loaded before the fairness details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateless, read-only generator with optional parameters, the description covers purpose, player range, schedule properties, and non-persistence. It does not explicitly describe the output format, but the phrase 'rounds of rotating-partner doubles' strongly implies the return value, and the schema covers the remaining parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents seed, courts, rounds, and players, while the description adds context about 'players−1 rounds' and fairness behavior linked to player count. However, it does not clarify the meaning of names, format, or courts beyond what the schema provides, and schema coverage is only 67%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title supplies the verb 'Generate' and the description names the resource: 'rounds of rotating-partner doubles for 4 to 64 players.' This clearly identifies what the tool produces and is not confusable with the listed siblings, none of which involve schedule generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no guidance on when to choose it over alternatives, nor any explicit context such as prerequisites or exclusions. The only usage signal is the implicit one from the title, which is weak.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupGet a groupBRead-onlyIdempotentInspect
A crew that plays together: members' first names and count (their levels are for members only, so null here), weekly slot, whether it asks to join, upcoming matches, calendar feed.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code from the link. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely non-obvious behavior: member levels are returned as null because they are 'for members only' (a privacy rule), plus the 'whether it asks to join' and 'calendar feed' fields. This is real context beyond the structured fields, though nothing is said about invalid/expired codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with a colon-delimited field list, so nothing is bloated. However, the opening 'A crew that plays together' is flavor rather than information, and the description is not front-loaded with the actual operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully covers the return shape (members, slot, join flag, upcoming matches, calendar feed) including the null-levels caveat. It omits the operation itself, the keying by code, and any failure behavior for a bad code, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% ('The code from the link', with length bounds), so the schema already documents the single parameter. The description adds no format, source, or lookup semantics for 'code', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates what a group contains rather than stating a verb+resource ('retrieves a group by its code'). The title 'Get a group' carries most of the purpose, and the field list hints at the resource, but the description itself never says what the tool does with the input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives such as find_clubs, find_coaches, or find_matches. An agent must infer from the sibling list whether this is the right call for locating a group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_matchGet a matchARead-onlyIdempotentInspect
A match or tournament by its 4-character code: players with levels, spots left, venue, time, level range, result. Public data only.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code from the link. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds that the operation is public, which signals no special auth is needed, and enumerates the returned data (players, spots left, venue, time, level range, result), which is valuable since there is no output schema. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the resource and key, then lists the returned fields with no redundant wording. Every clause contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only getter with annotations covering safety, the description is complete: it states the input, the data scope, and the relevant output fields. Since there is no output schema, the explicit field list is especially important and is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes 'code' as 'The code from the link' with 100% coverage, so the description adds little. The claim of a '4-character code' is slightly inconsistent with the schema's minLength 4 / maxLength 6, creating minor ambiguity. No enum or nested structure to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (a match or tournament) and the lookup mechanism (4-character code), and lists the fields returned. However, it is phrased as a noun phrase rather than an explicit verb-led statement such as 'Retrieves...', and it doesn't explicitly differentiate itself from sibling lookup tools beyond the code-based access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the right use case: use this when you already have a match/tournament code and need its details. It does not explicitly name alternatives like find_matches or state exclusion criteria, but 'by its 4-character code' and 'public data only' provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
join_matchJoin a matchAInspect
Put a person into a match by first name (or by their personal token from an earlier call). Handles waitlists and level ranges; when the level is outside the range, the organizer is asked to approve, unless the player already played a finished, scored match with that organizer. On a fixed-pairs tournament pass partner (a first name) to sign up as a pair: the answer's partner.inviteUrl is the link the partner opens to claim their spot; without partner the person is listed as needing a partner. For a group's match the answer says whether the person is now a member of the group; a group that asks to join is never joined through a match. A place the organizer holds for the same name refuses the join (name_held) and writes nothing: if it is that person, they take the place on the match page; if not, they join with a fuller name, such as a last name. A name (with no token) that a player already in the match carries refuses the join (name_seated) and writes nothing: if it is that player, call again with their personal token; if not, join with a fuller name.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The 4-character match code from the link, e.g. kicksma.sh/AB12 → AB12. | |
| name | No | Required unless token is given. | |
| No | Optional. Sends a calendar invite that updates itself. | ||
| level | No | Needed once when the match has a level range and the player has no level yet. | |
| token | No | Personal token of an existing player. | |
| partner | No | A fixed-pairs tournament only: the partner's first name. Their spot is reserved with its own invite link (partner.inviteUrl in the answer), which the partner opens to claim it. Omit to join alone: the player is listed as needing a partner. A player already in alone may call again with a partner. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply generic hints (readOnlyHint=false, idempotentHint=false), yet the description discloses a lot beyond them: the approval escalation rule, the partner.inviteUrl claim flow, group-membership reporting, and two named refusal outcomes (name_held, name_seated) that explicitly 'write nothing.' This is far more behavioral context than the structured fields provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded, which is good, but the final paragraph is a dense run-on with nested name_held/name_seated clauses that is hard to parse on first read. The complexity justifies length, but the structure could be cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param mutation tool with no output schema, it covers the important edge cases (waitlist, level range, approval, partner, group, both refusal codes). It leaves auth/permission requirements and the full shape of the response (beyond the fields referenced) unexplained, which keeps it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description nevertheless adds meaning by explaining the name-vs-token interplay (retry with a personal token when name_seated) and what partner produces (a reserved spot with its own invite link). It gives context the schema cannot express, though it does not add syntax-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb and resource: 'Put a person into a match by first name (or by their personal token from an earlier call).' This is clearly distinct from create_match, find_matches, and get_match, and an agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives rich conditional guidance: waitlists and level ranges trigger organizer approval unless a prior scored match exists, fixed-pairs tournaments require a partner, and groups asking to join are never joined via a match. It lacks explicit steering toward sibling tools (e.g. when to prefer create_match), but the when/when-not detail for this tool itself is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_coachAsk to become a studentAInspect
Ask a coach to accept a person as their student, by first name or personal token. The coach answers with one tap. Keep the returned personalToken private to the student; book_lesson needs it. Ask the person before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The student's first name. Required unless token is given. | |
| token | No | Personal token of an existing Kicksmash player. | |
| handle | Yes | The coach's handle from their page URL, e.g. 'olga' in kicksma.sh/c/olga. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: the coach answers with one tap, the tool returns a personalToken, the token must be kept private, and the user must obtain consent before calling. Annotations only indicate non-read-only, non-idempotent, non-destructive behavior; the description enriches that significantly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each adding distinct value: the core action, the behavioral outcome and token privacy, and the consent prerequisite. The description is front-loaded and contains no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no output schema, the description is complete: it explains what happens, what is returned, how the return value is used by a sibling tool, and the required pre-call action. There are no critical gaps that would prevent an agent from using it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has a clear description. The tool description restates the name-or-token alternative already present in the schema but adds no new parameter-level semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Ask a coach to accept a person as their student') with the exact resource and subject, and clarifies the two identification methods. It is clearly distinguishable from sibling tools like book_lesson or cancel_lesson, and the downstream reference to book_lesson reinforces what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use it to initiate a coach–student relationship, and it notes the precondition to ask the person before calling. It also mentions the downstream dependency on book_lesson. It doesn't explicitly name alternatives or when not to use it, so it stops just short of a 5.
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.
2 tool updates
- Changed
create_match3 fields changed- added
Input schema / properties / ageMinAdded value: +{ + "anyOf": [ + { + "enum": [ + 35, + 45, + 55 + ], + "type": "number" + }, + { + "type": "null" + } + ], + "description": "An age tag: 35, 45 or 55 means 35+, 45+ or 55+. Omit for any age. Information only; nobody is checked when they join." +} - added
Input schema / properties / categoryAdded value: +{ + "anyOf": [ + { + "enum": [ + "men", + "women", + "mixed" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Who the match is for: men, women or mixed. Omit for anyone. Information for the players who find it; nobody is checked when they join." +} - added
Input schema / properties / fixedPairsAdded value: +{ + "default": false, + "description": "Tournaments only: two partners play every round together, in any format. Pairs sign up together (join_match with partner); a player alone is listed as needing a partner. Americano then rotates the opponents: every pair meets every other pair, and the table ranks pairs.", + "type": "boolean" +}
- Changed
join_match1 field changed- added
Input schema / properties / partnerAdded value: +{ + "description": "A fixed-pairs tournament only: the partner's first name. Their spot is reserved with its own invite link (partner.inviteUrl in the answer), which the partner opens to claim it. Omit to join alone: the player is listed as needing a partner. A player already in alone may call again with a partner.", + "maxLength": 40, + "minLength": 1, + "type": "string" +}
1 tool update
- Changed
create_match1 field changed- added
Input schema / properties / durationMinutesAdded value: +{ + "description": "How long the court is booked: 60, 90 or 120 minutes. Omit for 90 (a match) or 120 (a tournament). The match page, the cards and the calendar invitation show it.", + "enum": [ + 60, + 90, + 120 + ], + "type": "number" +}
1 tool update
- Changed
find_clubs1 field changed- added
Input schema / properties / includeAdded value: +{ + "description": "claimed (default): only clubs that run their own page. listed: also the clubs Kicksmash listed from public sources, each marked claimed:false.", + "enum": [ + "claimed", + "listed" + ], + "type": "string" +}
1 tool update
- Changed
create_match1 field changed- added
Input schema / properties / gamesToAdded value: +{ + "description": "Tournaments only: first to N games (4, 6, 8) instead of points; the table then ranks by matches won.", + "maximum": 12, + "minimum": 2, + "type": "integer" +}
1 tool update
- Added
find_series
1 tool update
- Changed
create_match1 field changed- added
Input schema / properties / verifiedLevelsOnlyAdded value: +{ + "default": false, + "description": "With a range: only levels confirmed by an organizer, a coach or a club walk in; declared levels inside the range ask to join.", + "type": "boolean" +}
5 tool updates
- Added
book_lesson - Added
cancel_lesson - Added
coach_slots - Added
find_coaches - Added
request_coach
9 tool updates
- First observed
about_kicksmash - First observed
create_api_key - First observed
create_match - First observed
find_clubs - First observed
find_matches - First observed
generate_schedule - First observed
get_group - First observed
get_match - First observed
join_match
Related MCP Connectors
Find upcoming tennis, padel and squash games with free spots, by city, sport, level and date.
Run racket-sport tournaments from your AI assistant: fair draws, scores, live standings.
Round-robin ladders and match scores for small clubs. Players join by QR poster; no app, no account.
Round-robin fixtures, standings and match-day plans for league organizers. Free.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceTournament software for tennis, padel, pickleball and more: fair draws, live standings, scores and dropout handling.MIT
- MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables checking Matchpoint club balance, listing free padel court availability, and booking private Open Matches through natural language from AI clients like Cursor or Claude Desktop.-
- AlicenseNot gradedqualityBmaintenanceEnables 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.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.