{"name":"io.github.theluckystrike/doubles-mixer","slug":"theluckystrike-doubles-mixer","title":"Pairloop Doubles Mixer","description":"Rotate partners, print & score","url":"https://mcp.market/server/theluckystrike-doubles-mixer","rating":null,"grade":"C","score":67,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T07:31:06.992Z","last_ok_at":"2026-11-04T07:31:06.992Z","latency_ms":294},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://doubles-mixer.zovo.one/","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://doubles-mixer.zovo.one/mcp"}],"packages":[],"tools":[{"name":"check_mixer_fairness","description":"Use this when the user wants to check social doubles schedule limits before making a rotating partners schedule. Reports usable courts, balanced sit-out totals, unavoidable consecutive rests and a counting lower bound on partner repeats for 4 to 48 players and 1 to 24 rounds. Does not claim that bounded scheduling reaches the lower bound or balance player ratings.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"players":{"maxItems":48,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."},"description":"4 to 48 distinct player names, e.g. [\"Alex\",\"Blair\",\"Casey\",\"Drew\"]. Names are limited to 40 characters."},"courts":{"type":"number","description":"Available courts, a whole number from 1 to 12, e.g. 2. Unfillable courts are left unused."},"rounds":{"type":"number","description":"Number of rounds, a whole number from 1 to 24, e.g. 7."},"seed":{"description":"Repeatable seed, a whole number from 0 to 4294967295, e.g. 42. Defaults to 1; four players in one round enumerate ordered rotations before repeating (24 without groups, 16 with groups). Larger configurations use seeded bounded search.","type":"number"},"group_a":{"description":"Optional group A names, e.g. [\"Alex\",\"Blair\"]. Supply both groups; each player must be in one group.","maxItems":46,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."}},"group_b":{"description":"Optional group B names, e.g. [\"Casey\",\"Drew\"]. Partners cross groups; unequal groups may be refused if balanced rests are impossible.","maxItems":46,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."}}},"required":["players","courts","rounds"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"generate_mixer_schedule","description":"Use this when the user wants a pickleball round robin generator, pickleball mixer, rotating partners schedule, tennis mixer schedule or padel americano. Makes balanced rests, partner rotations, a fairness summary, printable PDF score sheets and CSV for 4 to 48 players, 1 to 12 courts and 1 to 24 rounds. Does not balance ratings or make fixed-team brackets; bounded optimization can leave partner repeats above the lower bound.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"players":{"maxItems":48,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."},"description":"4 to 48 distinct player names, e.g. [\"Alex\",\"Blair\",\"Casey\",\"Drew\"]. Names are limited to 40 characters."},"courts":{"type":"number","description":"Available courts, a whole number from 1 to 12, e.g. 2. Unfillable courts are left unused."},"rounds":{"type":"number","description":"Number of rounds, a whole number from 1 to 24, e.g. 7."},"seed":{"description":"Repeatable seed, a whole number from 0 to 4294967295, e.g. 42. Defaults to 1; four players in one round enumerate ordered rotations before repeating (24 without groups, 16 with groups). Larger configurations use seeded bounded search.","type":"number"},"group_a":{"description":"Optional group A names, e.g. [\"Alex\",\"Blair\"]. Supply both groups; each player must be in one group.","maxItems":46,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."}},"group_b":{"description":"Optional group B names, e.g. [\"Casey\",\"Drew\"]. Partners cross groups; unequal groups may be refused if balanced rests are impossible.","maxItems":46,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."}},"paper":{"description":"Print sheet size, e.g. \"letter\" (US Letter, default) or \"a4\".","type":"string","enum":["letter","a4"]}},"required":["players","courts","rounds"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"score_mixer_standings","description":"Use this when the user wants individual standings from a social doubles schedule and game scores. Counts wins, losses, draws, points for, points against, difference and win percent for up to 48 players and 288 scores. Accepts a generated schedule_request or an indexed schedule; unscored games stay pending. Does not use rating systems or governing tournament rules.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"schedule":{"anyOf":[{"type":"object","properties":{"players":{"maxItems":48,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."},"description":"4 to 48 distinct player names, e.g. [\"Alex\",\"Blair\",\"Casey\",\"Drew\"]. Names are limited to 40 characters."},"courts":{"type":"number","description":"Available courts, a whole number from 1 to 12, e.g. 2. Unfillable courts are left unused."},"rounds":{"type":"number","description":"Number of rounds, a whole number from 1 to 24, e.g. 7."},"seed":{"description":"Repeatable seed, a whole number from 0 to 4294967295, e.g. 42. Defaults to 1; four players in one round enumerate ordered rotations before repeating (24 without groups, 16 with groups). Larger configurations use seeded bounded search.","type":"number"},"group_a":{"description":"Optional group A names, e.g. [\"Alex\",\"Blair\"]. Supply both groups; each player must be in one group.","maxItems":46,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."}},"group_b":{"description":"Optional group B names, e.g. [\"Casey\",\"Drew\"]. Partners cross groups; unequal groups may be refused if balanced rests are impossible.","maxItems":46,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."}}},"required":["players","courts","rounds"]},{"type":"object","properties":{"players":{"maxItems":48,"type":"array","items":{"type":"string","maxLength":160,"description":"Player name, up to 40 characters, e.g. Alex."},"description":"4 to 48 distinct player names, e.g. [\"Alex\",\"Blair\",\"Casey\",\"Drew\"]. Names are limited to 40 characters."},"rounds":{"maxItems":24,"type":"array","items":{"type":"object","properties":{"round":{"type":"number","description":"Round number, e.g. 1."},"matches":{"maxItems":12,"type":"array","items":{"type":"object","properties":{"court":{"type":"number","description":"Court number, e.g. 1."},"team_a":{"maxItems":2,"type":"array","items":{"type":"number","description":"Zero-based player index, e.g. 0 for the first player."},"description":"Team A player indexes, e.g. [0,1]."},"team_b":{"maxItems":2,"type":"array","items":{"type":"number","description":"Zero-based player index, e.g. 0 for the first player."},"description":"Team B player indexes, e.g. [2,3]."}},"required":["court","team_a","team_b"]},"description":"Doubles matches, e.g. [{court:1,team_a:[0,1],team_b:[2,3]}]."},"sit_out":{"description":"Indexes sitting out, e.g. [4]. Omit to calculate from matches.","maxItems":48,"type":"array","items":{"type":"number","description":"Zero-based player index, e.g. 0 for the first player."}}},"required":["round","matches"]},"description":"The schedule rounds, e.g. one round with one court."}},"required":["players","rounds"]}],"description":"The returned schedule_request, e.g. {players:[\"Alex\",\"Blair\",\"Casey\",\"Drew\"],courts:1,rounds:3,seed:42}, or a full indexed schedule JSON."},"scores":{"maxItems":288,"type":"array","items":{"type":"object","properties":{"round":{"type":"number","description":"Round number, e.g. 1."},"court":{"type":"number","description":"Court number, e.g. 1."},"score_a":{"type":"number","description":"Team A points, a whole number 0 to 999, e.g. 11."},"score_b":{"type":"number","description":"Team B points, a whole number 0 to 999, e.g. 7."}},"required":["round","court","score_a","score_b"]},"description":"Game scores, e.g. [{round:1,court:1,score_a:11,score_b:7}]. Ties count as draws; supply at least one score."}},"required":["schedule","scores"],"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":67,"grade":"C","scanned_at":"2026-10-25T09:25:41.048Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-25T09:25:41.050Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 619ms"]},"poisoning":{"score":15,"max":15,"notes":["3 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://doubles-mixer.zovo.one/mcp","reachable":true,"authRequired":false,"latencyMs":619,"serverInfo":{"name":"doubles-mixer","version":"1.0.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://doubles-mixer.zovo.one/icon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}