{"openapi":"3.1.0","info":{"title":"Shuttle API","version":"0.1.0","description":"A fully local, hand-curated badminton reference: serving and rally-point scoring rules, let/fault situations, a badminton glossary, technique how-tos (clear, drop shot, smash, net shot, drive and more), equipment overviews (rackets, shuttlecocks, strings, grips, shoes), singles/doubles/mixed-doubles format and court differences, and a curated beginner-tips list.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://shuttle.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/shuttle/docs"},"termsOfService":"https://connectorbay.com/shuttle/terms"},"servers":[{"url":"https://shuttle.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/shuttle/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/rule_lookup":{"post":{"operationId":"rule_lookup","summary":"Full detail on one badminton rules topic: serving, receiving, scoring to 21, let situations, common","description":"Full detail on one badminton rules topic: serving, receiving, scoring to 21, let situations, common\n    faults, doubles service order/rotation, changing ends, the coin toss, intervals, damaged-shuttle\n    handling, player conduct, the let-cord rule, or court boundary lines. Use topics_overview to see every\n    valid topic name. Use for \"how do you serve in badminton\", \"what counts as a let\", \"what's a fault\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"A rules topic name or alias.","examples":["serving","scoring","let","faults","doubles rotation","changing ends"],"minLength":1,"title":"Topic","type":"string"}},"required":["topic"],"title":"rule_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/term_glossary":{"post":{"operationId":"term_glossary","summary":"Definitions of common badminton terms — rally, let, fault, deuce, kill, smash, clear, net shot,","description":"Definitions of common badminton terms — rally, let, fault, deuce, kill, smash, clear, net shot,\n    drive, half-court shot, short/long service line, side alley, footwork, split-step, carry, game point,\n    match point, and more. Use for \"what's a let in badminton\", \"what does split-step mean\".","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.","examples":["let","deuce","kill","split-step"],"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}},"/v1/tools/technique_info":{"post":{"operationId":"technique_info","summary":"Full how-to for one badminton stroke or shot: step-by-step execution, when to use it, and common","description":"Full how-to for one badminton stroke or shot: step-by-step execution, when to use it, and common\n    mistakes. Covers clear, drop shot, smash, net shot, drive, lift/lob, block, push, around-the-head shot,\n    jump smash, short serve, high serve and flick serve. Use for \"how do I hit a smash\", \"how do you play a\n    drop shot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A stroke or shot's name or alias.","examples":["clear","drop shot","smash","net shot","drive","flick serve"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"technique_infoArguments","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/equipment_overview":{"post":{"operationId":"equipment_overview","summary":"Overview of one piece of badminton equipment: racket, feather shuttlecock, synthetic (nylon)","description":"Overview of one piece of badminton equipment: racket, feather shuttlecock, synthetic (nylon)\n    shuttlecock, strings, grip, court shoes, apparel, racket bag, or net & posts. Use for \"what's the\n    difference between feather and plastic shuttlecocks\", \"what racket balance should I use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"item":{"description":"An equipment item's name or alias.","examples":["racket","feather shuttlecock","synthetic shuttlecock","strings","grip","shoes"],"minLength":1,"title":"Item","type":"string"}},"required":["item"],"title":"equipment_overviewArguments","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/format_info":{"post":{"operationId":"format_info","summary":"Explains one match format — singles, doubles, or mixed doubles — including how its court","description":"Explains one match format — singles, doubles, or mixed doubles — including how its court\n    dimensions (sidelines, service court depth) and typical tactics differ from the others. Use for \"how\n    is the doubles court different from singles\", \"what's different about mixed doubles\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A match format's name or alias.","examples":["singles","doubles","mixed doubles"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"format_infoArguments","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":"The full rally-point scoring explainer: first to 21 points wins a game (win by 2, hard cap at 30),","description":"The full rally-point scoring explainer: first to 21 points wins a game (win by 2, hard cap at 30),\n    and a match is the best of 3 games. Use for \"how does badminton scoring work\", \"what happens at 20-20\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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/beginner_tips":{"post":{"operationId":"beginner_tips","summary":"A ranked shortlist of the most useful tips for someone just starting out, ordered from most to least","description":"A ranked shortlist of the most useful tips for someone just starting out, ordered from most to least\n    essential. Use for \"what should a beginner focus on first\", \"tips for a new badminton player\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":5,"description":"How many tips to return.","maximum":10,"minimum":1,"title":"Count","type":"integer"}},"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/topics_overview":{"post":{"operationId":"topics_overview","summary":"Lists every valid name across rule topics, techniques, equipment items and match formats, so a","description":"Lists every valid name across rule topics, techniques, equipment items and match formats, so a\n    caller can browse instead of guessing an exact name. Use for \"what topics do you cover\", \"what\n    techniques do you know about\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"topics_overviewArguments","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}}}}