{"openapi":"3.1.0","info":{"title":"Trickshot API","version":"0.1.0","description":"A fully local, hand-curated trick-shot and freestyle-skills reference across five hobbies: pool & billiards trick shots, freestyle basketball/soccer ball control, object manipulation (yo-yo, kendama, diabolo, poi), speed cup stacking, and freestyle disc (frisbee) — conceptual technique categories, practice progressions, equipment overviews, a glossary, safety notes and search.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://trickshot.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/trickshot/docs"},"termsOfService":"https://connectorbay.com/trickshot/terms"},"servers":[{"url":"https://trickshot.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/trickshot/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/category_list":{"post":{"operationId":"category_list","summary":"With no sport, lists all five trick-skill sports with their category count and baseline risk level. With","description":"With no sport, lists all five trick-skill sports with their category count and baseline risk level. With\n    a sport, lists every technique category in that sport (name, one-line summary, difficulty, and whether it\n    carries elevated injury risk). Use for \"what trick sports do you cover\", \"what pool trick shot categories\n    are there\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A sport name to list categories for; omit to list all five sports.","examples":["pool & billiards","cup stacking",null],"title":"Sport"}},"title":"category_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/trick_category_info":{"post":{"operationId":"trick_category_info","summary":"Full detail for one technique category: a conceptual, original description of the technique family (not","description":"Full detail for one technique category: a conceptual, original description of the technique family (not\n    a copied step-by-step tutorial for one specific named routine), its difficulty, generic variation names,\n    practice tips, and whether it carries elevated injury risk. Use for \"what is a massé shot\", \"tell me about\n    diabolo suicides\", \"what's a nail delay in frisbee\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"description":"A sport name.","examples":["pool & billiards","freestyle frisbee","object manipulation"],"minLength":1,"title":"Sport","type":"string"},"category":{"description":"A technique category name within that sport.","examples":["massé shots","nail delays","the 3-6-3 stack"],"minLength":1,"title":"Category","type":"string"}},"required":["sport","category"],"title":"trick_category_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/practice_progression_tip":{"post":{"operationId":"practice_progression_tip","summary":"Ordered practice guidance for one sport at a given skill level — what to focus on next, not a single","description":"Ordered practice guidance for one sport at a given skill level — what to focus on next, not a single\n    trick. Use for \"what should a beginner cup stacker practice\", \"I've got the basics of yo-yo, what's next\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"description":"A sport name.","examples":["speed cup stacking","freestyle basketball"],"minLength":1,"title":"Sport","type":"string"},"skill_level":{"description":"beginner, intermediate, or advanced.","examples":["beginner","intermediate","advanced"],"minLength":1,"title":"Skill Level","type":"string"}},"required":["sport","skill_level"],"title":"practice_progression_tipArguments","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 curated, ordered list of the best first things to try for a complete beginner in one sport. Use for","description":"A curated, ordered list of the best first things to try for a complete beginner in one sport. Use for\n    \"how do I start freestyle frisbee\", \"what should a total beginner do first in cup stacking\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"description":"A sport name.","examples":["object manipulation","pool & billiards"],"minLength":1,"title":"Sport","type":"string"}},"required":["sport"],"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/equipment_overview":{"post":{"operationId":"equipment_overview","summary":"What gear a sport needs, with a short note on each item. Use for \"what do I need to start cup stacking\",","description":"What gear a sport needs, with a short note on each item. Use for \"what do I need to start cup stacking\",\n    \"what kind of disc is used for freestyle frisbee\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"description":"A sport name.","examples":["freestyle frisbee","object manipulation"],"minLength":1,"title":"Sport","type":"string"}},"required":["sport"],"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/term_glossary":{"post":{"operationId":"term_glossary","summary":"Definitions of vocabulary used across these five hobbies — sleeper, isolation, delay, downstack,","description":"Definitions of vocabulary used across these five hobbies — sleeper, isolation, delay, downstack,\n    massé, panna, and more. A term can mean different things in different sports (e.g. 'stall'), so every\n    matching sport's definition is returned. Use for \"what's a nail delay\", \"what does isolation mean in poi\".","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}},"/v1/tools/safety_note":{"post":{"operationId":"safety_note","summary":"A sport's overall risk level and safety notes, plus which of its categories carry elevated injury risk","description":"A sport's overall risk level and safety notes, plus which of its categories carry elevated injury risk\n    (falls, landing impact, entanglement) and why. Use for \"is freestyle football safe\", \"what's risky about\n    frisbee freestyle\", \"does cup stacking have any injury risk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"description":"A sport name.","examples":["freestyle basketball","freestyle frisbee"],"minLength":1,"title":"Sport","type":"string"}},"required":["sport"],"title":"safety_noteArguments","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_trick_sport_for_interest":{"post":{"operationId":"find_trick_sport_for_interest","summary":"Suggests 1-3 of the five trick-skill sports that best match a plain-language interest. Use for \"what","description":"Suggests 1-3 of the five trick-skill sports that best match a plain-language interest. Use for \"what\n    trick hobby should I try if I like flow arts\", \"I want something outdoors with a disc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"interest":{"description":"A plain-language interest or preference.","examples":["I like circus skills and juggling","I want something I can do with a basketball","I want a timed, competitive hobby I can do at a desk"],"minLength":1,"title":"Interest","type":"string"}},"required":["interest"],"title":"find_trick_sport_for_interestArguments","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/trick_search":{"post":{"operationId":"trick_search","summary":"Keyword search across every sport's technique categories (name, summary, variations) and the glossary.","description":"Keyword search across every sport's technique categories (name, summary, variations) and the glossary.\n    Use for \"search for masse\", \"anything about isolations\", \"find tricks with rolls\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Keyword to search for.","minLength":1,"title":"Query","type":"string"}},"required":["query"],"title":"trick_searchArguments","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}}}}