{"openapi":"3.1.0","info":{"title":"Asanas API","version":"0.1.0","description":"Yoga reference: poses, sequences, pranayama, chakras, sun salutations, mantras, modifications, class timing, glossary — all local.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://asanas.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/asanas/docs"},"termsOfService":"https://connectorbay.com/asanas/terms"},"servers":[{"url":"https://asanas.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/asanas/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/pose_info":{"post":{"operationId":"pose_info","summary":"Details for a yoga pose: Sanskrit/English names, category, difficulty, benefits, contraindications, drishti","description":"Details for a yoga pose: Sanskrit/English names, category, difficulty, benefits, contraindications, drishti\n    and body focus. Use for \"tell me about Warrior II\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"English or Sanskrit pose name.","examples":["Warrior II","Virabhadrasana II","Downward Dog"],"title":"Name","type":"string"}},"required":["name"],"title":"pose_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/pose_search":{"post":{"operationId":"pose_search","summary":"Search the pose library by free text, category, difficulty, or targeted body part. Use for \"find","description":"Search the pose library by free text, category, difficulty, or targeted body part. Use for \"find\n    hip-opening poses for intermediate level\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search across names and benefits.","title":"Query"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"standing | seated | backbend | forward_fold | twist | inversion | balance | prone | supine | restorative | arm_balance | hip_opener | core","title":"Category"},"difficulty":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"beginner | intermediate | advanced","title":"Difficulty"},"body_part":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A body area, e.g. hamstrings, hips, shoulders.","title":"Body Part"},"limit":{"default":20,"maximum":50,"minimum":1,"title":"Limit","type":"integer"}},"title":"pose_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}},"/v1/tools/sequence_build":{"post":{"operationId":"sequence_build","summary":"A pre-built themed sequence with full pose detail (or the list of available themes if you pass 'list').","description":"A pre-built themed sequence with full pose detail (or the list of available themes if you pass 'list').\n    Use for \"give me a backbend sequence\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"theme":{"description":"A sequence theme, or 'list' to see all themes.","examples":["morning_energizer","hip_openers","backbend_prep","power_flow"],"title":"Theme","type":"string"}},"required":["theme"],"title":"sequence_buildArguments","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/breathing_exercise":{"post":{"operationId":"breathing_exercise","summary":"Steps, counts, benefits and cautions for a pranayama (breathing) technique, or the list of available","description":"Steps, counts, benefits and cautions for a pranayama (breathing) technique, or the list of available\n    techniques if you pass 'list'. Use for \"how do I do alternate nostril breathing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A pranayama technique name, or 'list' to see all.","examples":["Nadi Shodhana","Box Breathing","4-7-8"],"title":"Name","type":"string"}},"required":["name"],"title":"breathing_exerciseArguments","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/chakra_info":{"post":{"operationId":"chakra_info","summary":"Location, element, color, seed mantra and associated poses for a chakra, or all seven if no query is given.","description":"Location, element, color, seed mantra and associated poses for a chakra, or all seven if no query is given.\n    Use for \"what chakra is the heart chakra\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A chakra number (1-7), Sanskrit or English name; omit to list all seven.","title":"Query"}},"title":"chakra_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/sun_salutation":{"post":{"operationId":"sun_salutation","summary":"Full step-by-step Sun Salutation A or B with breath cues. Use for \"steps for Surya Namaskar A\".","description":"Full step-by-step Sun Salutation A or B with breath cues. Use for \"steps for Surya Namaskar A\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"variant":{"default":"surya_namaskar_a","description":"surya_namaskar_a | surya_namaskar_b","title":"Variant","type":"string"}},"title":"sun_salutationArguments","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/mantra_lookup":{"post":{"operationId":"mantra_lookup","summary":"Common Sanskrit mantras with transliteration, meaning and when they're used, or all of them if no query is","description":"Common Sanskrit mantras with transliteration, meaning and when they're used, or all of them if no query is\n    given. Use for \"what does Lokah Samastah Sukhino Bhavantu mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A word to search transliteration/meaning/usage for; omit to list all.","title":"Query"}},"title":"mantra_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/modification_finder":{"post":{"operationId":"modification_finder","summary":"Modification advice and suggested props for a physical limitation, optionally checked against a specific","description":"Modification advice and suggested props for a physical limitation, optionally checked against a specific\n    pose's contraindications. Use for \"modifications for tight hamstrings in a forward fold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limitation":{"description":"A physical limitation.","examples":["tight hamstrings","wrist pain","knee pain","pregnancy","high blood pressure"],"title":"Limitation","type":"string"},"pose":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific pose to check against.","title":"Pose"}},"required":["limitation"],"title":"modification_finderArguments","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/class_timer":{"post":{"operationId":"class_timer","summary":"Split a class length into centering/warmup/standing/peak/cooldown/savasana minutes by style. Use for \"plan a","description":"Split a class length into centering/warmup/standing/peak/cooldown/savasana minutes by style. Use for \"plan a\n    60-minute vinyasa class\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"total_minutes":{"maximum":180,"minimum":10,"title":"Total Minutes","type":"integer"},"style":{"default":"vinyasa","description":"vinyasa | hatha | yin | power | restorative","title":"Style","type":"string"}},"required":["total_minutes"],"title":"class_timerArguments","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/yoga_glossary":{"post":{"operationId":"yoga_glossary","summary":"Look up a Sanskrit yoga term, or list the whole glossary if no term is given. Use for \"what does Namaste","description":"Look up a Sanskrit yoga term, or list the whole glossary if no term is given. Use for \"what does Namaste\n    mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A Sanskrit term or keyword; omit to list all.","title":"Term"}},"title":"yoga_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}}}}