MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Other

POFA Tournaments

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

Checks passed
11 / 22

3 failed · 8 not measured

Median response
854 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
12

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
410
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 854 ms.

  • Pass
    Valid handshake

    protocolVersion 2024-11-05, serverInfo.name pofa-mcp.

  • Pass
    Lists tools

    tools/list returned 12 tools.

  • Fail
    Current protocol

    Negotiated 2024-11-05. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 854 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 854 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    50 of 50 parameters have a description (100%). The bar is 80%.

  • Fail
    Safety hints

    12 tools set neither readOnlyHint nor destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-11-08T15:51:53.392789Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using POFA Tournaments

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http pofa-tournaments https://pofa.app/mcp/

Capabilities

Tools 12

create_tournament

Create 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 to the user: it is the write credential for every organizer tool on this tournament (import_players, generate_bracket, schedule_matches, report_result) and cannot be recovered later.

Discovered
generate_bracket

Generate 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. Show the preview to the user, then call again with {tournament_id, code, confirm_preview_id} to commit. The roster is the tournament's own player list (the same one the player page shows), paired by the same seeding the pages use; match ids are the pages' sequential labels M1, M2, ... A players list may be given to override the roster for the preview.

Discovered
get_schedule

Get 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, location). Read-only.

Discovered
get_screen

Read 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 underneath. Use to confirm a screen_show / screen_clear took effect. Read-only, no credentials needed.

Discovered
get_tournament

Get 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.

Discovered
import_players

Bulk-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_bracket seeds from. Returns how many were imported and which rows were skipped, and why.

Discovered
register_player

Register 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 confirm=true to commit.

Discovered
report_result

Report 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 existing result is logged as a correction.

Discovered
schedule_matches

Assign 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 user, then commit with {tournament_id, code, confirm_preview_id}.

Discovered
screen_clear

Take 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 face when the queue is empty. Safe to call when nothing is on screen — it simply reports that. Does not touch the calling queue.

Discovered
screen_show

Put 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 until cleared; other courts' screens are unaffected. Use on match day when a specific match must be called out on the big screen. Needs the tournament's manage_code. This is an independent on-screen slot: it does NOT change the console calling queue — the queue board (or the standby face) comes back on that display when you clear with screen_clear. Takes effect immediately, no preview step.

Discovered
search_tournaments

Find 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.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected854 ms12