{"serverId":"mcp-registry/app.rowb.ladder/board","tools":[{"name":"add_player","fixed":{"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.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"create_ladder","fixed":{"name":"create_ladder","description":"Create or update the club ladder: club name and sport. Returns the join URL (the poster target) that players scan.","inputSchema":{"type":"object","required":["club"],"properties":{"club":{"type":"string"},"sport":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":76,"tokensAfter":76},{"name":"get_standings","fixed":{"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 same results always give the same table.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":80,"tokensAfter":80},{"name":"schedule_match","fixed":{"name":"schedule_match","description":"Put a match on the calendar before it is played. It appears as a pending card in the standings output.","inputSchema":{"type":"object","required":["player_a","player_b"],"properties":{"round":{"type":"integer"},"player_a":{"type":"string"},"player_b":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87}],"toolsChanged":4,"tokensSaved":0,"todo":[{"tool":"add_player","params":["name"]},{"tool":"create_ladder","params":["club","sport"]},{"tool":"record_match","params":["round","sets_a","sets_b","games_a","games_b","player_a","player_b"]},{"tool":"schedule_match","params":["round","player_a","player_b"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}