{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_6mq94b9zwytf","handle":"ladderboard-round-robin-ladders-and-match-scores","url":"https://wellknown.network/agents/ladderboard-round-robin-ladders-and-match-scores","links":{"self":"https://wellknown.network/agents/ladderboard-round-robin-ladders-and-match-scores/record.json","html":"https://wellknown.network/agents/ladderboard-round-robin-ladders-and-match-scores","markdown":"https://wellknown.network/agents/ladderboard-round-robin-ladders-and-match-scores/record.md","api":"https://wellknown.network/api/v1/agents/ladderboard-round-robin-ladders-and-match-scores","status":"https://wellknown.network/api/v1/agents/ladderboard-round-robin-ladders-and-match-scores/status","claim":"https://wellknown.network/agents/ladderboard-round-robin-ladders-and-match-scores/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/ladderboard-round-robin-ladders-and-match-scores/claim.json","badge":"https://wellknown.network/agents/ladderboard-round-robin-ladders-and-match-scores/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/ladderboard-round-robin-ladders-and-match-scores/history","tools":"https://wellknown.network/api/v1/agents/ladderboard-round-robin-ladders-and-match-scores/tools"},"ard":{"identifier":"urn:air:ladder.rowb.app:server:ladderboard-round-robin-ladders-and-match-scores","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Ladderboard — round-robin ladders and match scores for small clubs","summary":"Round-robin ladders and match scores for small clubs. Players join by QR poster; no app, no account.","description":"Round-robin ladders and match scores for small clubs. Players join by QR poster; no app, no account.","publisher":{"name":"app.rowb.ladder","url":null},"homepage":"https://ladder.rowb.app","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://ladder.rowb.app/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-25T22:25:09.947162Z","publishedAt":"2026-09-25T22:25:09.947162Z","registryName":"app.rowb.ladder/board"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.525,"provenance":"derived"}],"categories":["productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-11T19:22:49.824Z","lastProbedAt":"2026-10-11T19:22:49.824Z","statusComputedAt":"2026-10-11T19:24:56.322Z","reliability30d":{"probes":53,"successRate":1,"p50Ms":21,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":53,"ok":53,"authBoundaryOk":0,"serviceOk":53,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-11T19:22:49.824Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":49,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T12:25:53.241Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":28,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T06:22:41.733Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":28,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T23:22:04.392Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":13,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T16:32:52.059Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":56,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T10:28:02.763Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":23,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T03:26:19.718Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":14,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T20:29:06.078Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":39,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:30:58.067Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":37,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T07:25:51.273Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"toolCount":5,"toolsHash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","serverName":"ladder","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan."},{"name":"add_player","description":"Register one player by name. Returns a 6-character code and a personal URL so the player can be identified at the courts without an account."},{"name":"record_match","description":"Record a finished match result. Identify players by name, numeric id, or 6-character code. Give the set score (sets_a, sets_b) and optionally the games."},{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output."},{"name":"get_standings","description":"The current table (rank, wins, losses, set percentage) plus the single most useful match to play next. Standings are computed with a fixed rule order, so the sa"}],"package":null,"toolSurface":{"id":"ts_dwmkv4a949he","endpointId":"ep_yr6pndtgr37e","hash":"8dc7aebd735174242f7a35f1f09df123984f59a042a528f9ec2ad41fc7b2c350","toolCount":5,"serverName":"ladder","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-27T19:29:18.879Z","lastSeenAt":"2026-10-11T19:22:49.831Z","observations":53,"toolNames":["create_ladder","add_player","record_match","schedule_match","get_standings"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_yr6pndtgr37e","url":"https://ladder.rowb.app/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T20:29:06.104Z","auth":{"observedAt":"2026-10-09T20:29:06.123Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://ladder.rowb.app/.well-known/oauth-protected-resource/mcp","resource":"https://ladder.rowb.app/mcp","authorizationServers":[],"scopesSupported":[]},"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":true,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-09T20:29:06.139Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"rowb.app","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-25T15:24:46.000Z","validTo":"2026-12-24T16:24:42.000Z","daysToExpiry":73,"sanCount":3,"fingerprint256":"E4:62:FC:FF:08:60:CA:E1:17:9A:BD:E3:2F:E2:10:03:1E:F4:0C:D7:84:5A:E6:B9:EF:2B:1F:A0:F8:89:C7:26"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"app.rowb.ladder/board","url":"https://registry.modelcontextprotocol.io/v0/servers/app.rowb.ladder%2Fboard","firstSeenAt":"2026-09-27T19:21:19.730Z","fetchedAt":"2026-10-11T21:21:20.262Z","normalizedAt":"2026-10-11T21:21:20.262Z"}]},"firstSeenAt":"2026-09-27T19:21:19.730Z","updatedAt":"2026-10-11T19:25:41.602Z"}