POFA Tournaments

app.pofa/pofa · v1.3.0 · communication

POFA Tournaments is healthy: it completed an MCP handshake in 1985 ms and exposes 12 tools.

Run small tennis & pickleball tournaments from your AI assistant: brackets, schedules, results.

Endpoint: https://pofa.app/mcp/ (streamable-http)

No repository listed · Website · JSON · Add to my inventory

Facts

Users (last 30 days)0
HandshakeHealthy
Auth neededNone
Tool count12
Latency1985 ms
Last checked (UTC)2026-11-08T16:00:19.622Z

Health history

Checked (UTC)StatusLatencyError
2026-11-08T16:00:19.622ZHealthy1985

Tools (12)

search_tournamentsFind POFA tournaments (tennis & pickleball) by keyword, city, or start date. Returns each event's id, name and one-line summary. Start here whenever the user wants to discover, browse or pick an event; follow with get_tournament for one event's full details. Read-only, no credentials needed.
get_tournamentGet one tournament's full public details: format, dates, location, entry fee, description and its public share_url. Use after search_tournaments, or whenever you already have an event id, to answer questions about a specific event. For match courts and start times use get_schedule instead. Read-only
get_scheduleGet a tournament's published schedule: match court/time assignments, dates and courts, plus the bracket size. Returns schedule: null with a note when the organizer has not published a schedule yet. Use for when/where questions about matches; use get_tournament for the event's own facts (format, fee,
register_playerRegister one player into a tournament (player-side sign-up; no manage code needed). Duplicate-checked by email. TWO STEPS: first call WITHOUT confirm — it returns a summary and writes nothing; show that summary to the user, and only after they explicitly approve, call again with the same fields plus
create_tournamentCreate a NEW tournament as an organizer — step 1 of the organizer flow: create_tournament → import_players → generate_bracket → schedule_matches → report_result. Takes effect immediately (no preview step). Returns the new tournament's id, share_url and manage_code. SAVE the manage_code and show it t
import_playersBulk-add players to a tournament's roster (organizer step 2, right after create_tournament; needs that tournament's manage_code). Each player needs a name; email and phone are optional per player, but entries whose email duplicates an existing roster email are skipped. This roster is what generate_b
generate_bracketGenerate the bracket for a tournament (organizer step 3, after the roster is in; needs manage_code). SINGLE-ELIMINATION ONLY in this version — tournaments of other formats return an error. PREVIEW FIRST: call without confirm_preview_id to get a preview_id and bracket preview — nothing is written. Sh
schedule_matchesAssign the bracket's matches to courts and start times (organizer step 4, after generate_bracket; needs manage_code). PREVIEW FIRST: call without confirm_preview_id — returns a preview_id plus per-match court/time assignments and conflict validation, and nothing is written. Show the preview to the u
report_resultReport a match result (organizer step 5, on match day; needs manage_code). Recording a score advances the winner into the next round automatically and returns where they advanced to. Pass undo=true with the match_id to revert a result (cascades to auto-filled downstream slots). Overwriting an existi
screen_showPut ONE match on the venue call screen FOR ITS COURT — every court has its own screen with its own link, and the screen_url this tool returns is that court's link (open one display per court). The court's screen immediately shows the court number huge with both player names, and keeps showing it unt
screen_clearTake a match off the venue call screen (needs manage_code). With a court, only that court's screen is cleared and the other courts keep showing their matches; without a court, EVERY court's screen is cleared at once. A cleared screen falls back to the console calling queue board, or to the standby f
get_screenRead what a tournament's venue call screens are currently showing: every court's on-screen match (screens), plus court_screens — one screen link per court with its live state, so you can hand the organizer all their court-display links in one go — plus a one-line summary of the console calling queue