{"openapi":"3.1.0","info":{"title":"Speedcube API","version":"0.1.0","description":"A fully local, hand-curated speedcubing reference: cube notation, conceptual overviews of CFOP/Roux/ZZ/beginner-layer-by-layer/Petrus/Keyhole methods, nine puzzle-type profiles, community/competition terminology, WCA-style competition format explainers, skill-level guidance and beginner tips.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://speedcube.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/speedcube/docs"},"termsOfService":"https://connectorbay.com/speedcube/terms"},"servers":[{"url":"https://speedcube.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/speedcube/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/notation_glossary":{"post":{"operationId":"notation_glossary","summary":"Explains one piece of cube notation, resolving wide-turn (Rw/r) and prime/double (' and 2) modifiers","description":"Explains one piece of cube notation, resolving wide-turn (Rw/r) and prime/double (' and 2) modifiers\n    on top of the base move. Omit `move` to list all base moves. Use for \"what does R' mean\", \"what's the\n    difference between R and Rw\", \"what is a slice move\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"move":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A cube move: a bare letter/name ('R', 'right', 'M', 'x') or a full token with modifiers (\"R'\", 'U2', 'Rw', 'r'). Omit to list every base move.","examples":["R","R'","U2","Rw","r","M","x"],"title":"Move"}},"title":"notation_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/method_info":{"post":{"operationId":"method_info","summary":"A conceptual, stage-by-stage overview of a solving method: origin, key idea, its stages in order, and","description":"A conceptual, stage-by-stage overview of a solving method: origin, key idea, its stages in order, and\n    pros/cons/typical users. Deliberately does not reproduce any full algorithm sheet. Use for \"what is CFOP\",\n    \"explain the Roux method\", \"how does ZZ work\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A solving method's name or alias.","examples":["CFOP","Roux","ZZ","beginner layer by layer","Petrus","keyhole"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"method_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/puzzle_type_info":{"post":{"operationId":"puzzle_type_info","summary":"Profiles one twisty-puzzle type: shape/family, piece counts, mechanism, relative difficulty,","description":"Profiles one twisty-puzzle type: shape/family, piece counts, mechanism, relative difficulty,\n    distinguishing feature, a qualitative history note, and how its notation differs from the standard 3x3\n    set. Use for \"how is a 4x4 different from a 3x3\", \"what is a Pyraminx\", \"tell me about Megaminx\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A twisty-puzzle type's name or alias.","examples":["3x3","4x4","Pyraminx","Megaminx","Skewb","Square-1","Clock"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"puzzle_type_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/term_glossary":{"post":{"operationId":"term_glossary","summary":"Definitions of community and technical speedcubing terms - scramble, PB, DNF, +2, F2L, OLL, PLL,","description":"Definitions of community and technical speedcubing terms - scramble, PB, DNF, +2, F2L, OLL, PLL,\n    lookahead, fingertricks, sub-X, OH, BLD, FMC, WCA, and more. Omit `term` to list every term, or pass a\n    keyword to search. Use for \"what's a DNF\", \"what does sub-20 mean\", \"what's the difference between OLL\n    and PLL\".","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/competition_format":{"post":{"operationId":"competition_format","summary":"Explains a WCA-style speedcubing competition topic: overview, event list, round/average formats,","description":"Explains a WCA-style speedcubing competition topic: overview, event list, round/average formats,\n    penalties (+2/DNF), inspection time, scrambling and judging, timing equipment, records, and competitor\n    conduct. Omit `topic` to list every topic. Use for \"how does WCA inspection work\", \"what's an ao5\",\n    \"what counts as a DNF\", \"what events does WCA run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A competition-format topic; omit to list all.","examples":["inspection","penalties","round formats","records","events"],"title":"Topic"}},"title":"competition_formatArguments","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_method_for_skill_level":{"post":{"operationId":"find_method_for_skill_level","summary":"Recommends one or more solving methods for a stated skill level (beginner, intermediate, advanced),","description":"Recommends one or more solving methods for a stated skill level (beginner, intermediate, advanced),\n    with brief guidance on what to focus on next. Use for \"what method should I learn first\", \"I'm getting\n    faster, what should I learn next\", \"what do advanced speedsolvers use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"level":{"description":"A skill level.","examples":["beginner","intermediate","advanced","speedsolver"],"minLength":1,"title":"Level","type":"string"}},"required":["level"],"title":"find_method_for_skill_levelArguments","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/category_list":{"post":{"operationId":"category_list","summary":"Every content category this reference covers (notation, methods, puzzle types, terminology,","description":"Every content category this reference covers (notation, methods, puzzle types, terminology,\n    competition formats) with how many entries each has. Use for \"what do you cover\", \"what categories are\n    there\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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/beginner_tips":{"post":{"operationId":"beginner_tips","summary":"A curated, ordered list of practical tips for someone starting out in speedcubing, from notation and","description":"A curated, ordered list of practical tips for someone starting out in speedcubing, from notation and\n    equipment through practice habits. Use for \"give me beginner cubing tips\", \"how do I get faster\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":5,"description":"How many tips to return.","maximum":14,"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}}}}