{"openapi":"3.1.0","info":{"title":"Rack API","version":"0.1.0","description":"A fully local, hand-curated cue sports reference covering 8 billiards/pool/snooker games: 8-ball, 9-ball, 10-ball, straight pool (14.1 continuous), one-pocket, snooker, English/Blackball pool, and carom/three-cushion billiards, each with a rules overview, rack/setup arrangement, scoring, common fouls, table and equipment specs, and beginner tips, plus a shared cue-sports glossary and a group-size game finder.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://rack.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/rack/docs"},"termsOfService":"https://connectorbay.com/rack/terms"},"servers":[{"url":"https://rack.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/rack/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/game_list":{"post":{"operationId":"game_list","summary":"Every cue sports game in this reference with its family and a one-line summary. Use for \"what games do you","description":"Every cue sports game in this reference with its family and a one-line summary. Use for \"what games do you\n    cover\", \"list every billiards game\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"game_listArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/game_rules":{"post":{"operationId":"game_rules","summary":"Full rules overview for one game: objective, turn structure and the key rules that make it distinct. Use","description":"Full rules overview for one game: objective, turn structure and the key rules that make it distinct. Use\n    for \"how do you play straight pool\", \"what are the rules of one-pocket\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game's name or alias.","examples":["8-ball","nine-ball","snooker","one-pocket"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"game_rulesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/rack_setup":{"post":{"operationId":"rack_setup","summary":"How a game's balls are racked or arranged to start play (triangle, diamond, fixed spots, pyramid, ...),","description":"How a game's balls are racked or arranged to start play (triangle, diamond, fixed spots, pyramid, ...),\n    plus its equipment. Use for \"how do you rack for nine-ball\", \"how are the colors set up in snooker\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game's name or alias.","examples":["8-ball","9-ball","snooker","ten-ball"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"rack_setupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/scoring_summary":{"post":{"operationId":"scoring_summary","summary":"How a game is scored and won. Use for \"how does scoring work in snooker\", \"how do you win at straight","description":"How a game is scored and won. Use for \"how does scoring work in snooker\", \"how do you win at straight\n    pool\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game's name or alias.","examples":["snooker","straight pool","one-pocket"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"scoring_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/table_and_equipment":{"post":{"operationId":"table_and_equipment","summary":"Table size, pocket count and ball/cue specs for one game — these vary a lot between pool, snooker and","description":"Table size, pocket count and ball/cue specs for one game — these vary a lot between pool, snooker and\n    carom billiards. Use for \"how big is a snooker table\", \"what balls does three-cushion billiards use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game's name or alias.","examples":["snooker","8-ball","three-cushion billiards"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"table_and_equipmentArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/foul_lookup":{"post":{"operationId":"foul_lookup","summary":"Looks up the foul ruling for a described situation within one game. Returns the best-matching foul(s) plus","description":"Looks up the foul ruling for a described situation within one game. Returns the best-matching foul(s) plus\n    the game's full foul list. Use for \"what happens if I scratch on the break in 8-ball\", \"is it a foul to hit\n    the wrong ball first in snooker\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"game":{"description":"A game's name or alias.","examples":["8-ball","nine-ball","snooker"],"minLength":1,"title":"Game","type":"string"},"situation":{"description":"A described situation, in plain language.","examples":["scratching on the break","hitting the wrong ball first","potting the black too early"],"minLength":1,"title":"Situation","type":"string"}},"required":["game","situation"],"title":"foul_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/beginner_tips":{"post":{"operationId":"beginner_tips","summary":"A short list of practical tips for a beginner playing one game. Use for \"any tips for a beginner at","description":"A short list of practical tips for a beginner playing one game. Use for \"any tips for a beginner at\n    9-ball\", \"how do I get better at snooker as a new player\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game's name or alias.","examples":["8-ball","snooker","three-cushion billiards"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"beginner_tipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/find_game_for_group":{"post":{"operationId":"find_game_for_group","summary":"Suggests suitable cue sports games for a given number of players, including solo-practice notes when","description":"Suggests suitable cue sports games for a given number of players, including solo-practice notes when\n    player_count is 1. Use for \"what game works for 3 of us\", \"best pool game for just me to practice\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"player_count":{"description":"How many people want to play.","maximum":12,"minimum":1,"title":"Player Count","type":"integer"}},"required":["player_count"],"title":"find_game_for_groupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/term_glossary":{"post":{"operationId":"term_glossary","summary":"Definitions of common cue-sports terms shared across pool, snooker and billiards — rack, scratch, safety,","description":"Definitions of common cue-sports terms shared across pool, snooker and billiards — rack, scratch, safety,\n    English, snookered, diamond system, ghost ball, and more. Use for \"what does 'snookered' mean\", \"what's the\n    diamond system\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"term_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}