Read-only yoga library: poses, routines, articles, books, plus birth chart and numerology tools.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check every step of a YogaMag routine against what the person cannot or does not want to do (the floor, kneeling, weight on the wrists). Each step is kept, swapped for an easier version that the pose's reviewed data lists, marked as having no supported alternative, or marked not assessed. It never invents a substitute; the result is the YogaMag routine with listed swaps, not a new routine.
Slug of the routine, as returned by find_routine or search_content
What the person cannot or does not want to do: floor = cannot get down to the floor, kneeling = cannot kneel, wrists = no weight on the wrists
Tool list last changed Oct 25, 2026.
Check every step of a YogaMag routine against what the person cannot or does not want to do (the floor, kneeling, weight on the wrists). Each step is kept, swapped for an easier version that the pose's reviewed data lists, marked as having no supported alternative, or marked not assessed. It never invents a substitute; the result is the YogaMag routine with listed swaps, not a new routine.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Slug of the routine, as returned by find_routine or search_content |
| avoid* | array | What the person cannot or does not want to do: floor = cannot get down to the floor, kneeling = cannot kneel, wrists = no weight on the wrists |
{
"type": "object",
"required": [
"slug",
"avoid"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 200,
"description": "Slug of the routine, as returned by find_routine or search_content"
},
"avoid": {
"type": "array",
"items": {
"enum": [
"floor",
"kneeling",
"wrists"
],
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"description": "What the person cannot or does not want to do: floor = cannot get down to the floor, kneeling = cannot kneel, wrists = no weight on the wrists",
"uniqueItems": true
}
},
"additionalProperties": false
}Calculate a Vedic (sidereal) birth chart with Swiss Ephemeris: Lagna, Moon sign, nakshatra, planet placements, the current Vimshottari dasha period, and plain-language readings. Needs the birth date, the birth time (or time_confidence "unknown") and the birthplace as a place_id from search_birth_places, or latitude, longitude and timezone together. focus picks one topic: summary (default), dasha, nakshatra, navamsa (D-9), marriage, career or wealth. This is the same calculation as https://yogamag.co.in/vedic-birth-chart. Nothing you send is stored or logged. Tell the person it is for reflection, not a prediction or advice.
| Argument | Type | Description |
|---|---|---|
| name | string | Optional first name, shown in the reading |
| focus | string | Topic to detail. Default summary. |
| gender | string | Optional; used only for the Nadi-style reading |
| latitude | number | Birthplace latitude (with longitude and timezone, instead of place_id) |
| place_id | integer | Birthplace id from search_birth_places |
| timezone | string | IANA time zone of the birthplace, e.g. "Asia/Kolkata" |
| ayanamsha | string | Default lahiri, the Indian government standard |
List poses from the reviewed YogaMag pose library that match a level, body area or type of pose, and that suit what the person avoids (the floor, kneeling, weight on the wrists), naming the easier version where the pose itself does not. Only poses with a reviewed profile are listed. Read a pose with get_glossary_term before describing it.
| Argument | Type | Description |
|---|---|---|
| area | string | Body area the pose works |
| type | string | Kind of pose |
| avoid | array | What the person cannot or does not want to do: floor = cannot get down to the floor, kneeling = cannot kneel, wrists = no weight on the wrists |
| level | string | |
| limit | integer | How many poses to return, default 10 |
{
"type": "object",
"properties": {
"area": {
"enum": [
"feet-ankles",
"calves",
"hamstrings",
"quads",
"hips",
"glutes",
"groin",
"lower-back",
"upper-back",
"spine",
"core",
"chest",
"shoulders",
"arms",
"wrists",
"neck"
],
"type": "string",
"description": "Body area the pose works"
},
"type": {
"enum": [
"standing",
"balance",
"seated",
"forward-fold",
"backbend",
"twist",
"hip-opener",
"core",
"arm-support",
"restorative",
"inversion",
"side-bend"
],
"type": "string",
"description": "Kind of pose"
},
"avoid": {
"type": "array",
"items": {
"enum": [
"floor",
"kneeling",
"wrists"
],
"type": "string"
},
"maxItems": 3,
"description": "What the person cannot or does not want to do: floor = cannot get down to the floor, kneeling = cannot kneel, wrists = no weight on the wrists",
"uniqueItems": true
},
"level": {
"enum": [
"beginner",
"intermediate",
"advanced"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many poses to return, default 10"
}
},
"additionalProperties": false
}Find the YogaMag timed routine for a goal and the minutes the person has: the longest one that fits, or the shortest if none is that short. Returns the routine as published, with its steps, who should skip or modify it, and the follow-along link. If the person avoids the floor, kneeling or weight on the wrists, pass avoid and each step is checked. YogaMag has routines only for the goals listed; if none matches what was asked (for example sleep), say there is no such routine yet and use search_content instead of picking the nearest goal.
| Argument | Type | Description |
|---|---|---|
| goal* | string | One of: morning = Wake up and move (Morning routines that work every major joint); desk = A desk break (In your chair, or standing at your desk); strength = Strength and tight hips (Stretches plus holds such as Plank, Chair Pose and Bridge); after-run = After a run (Slow holds for calves, quads, hips and hamstrings); gentle = Stiff and want it gentle (In bed, or seated and chair-supported); sleep = Wind down at night (Slow floor poses and breathing before bed); relaxation = Slow down and relax (Seated breathing and gentle movement, no floor needed); flexibility = Loosen tight hips and hamstrings (Slow holds for hips, hamstrings and back); no-floor = Can't get down to the floor (Seated, standing or holding a chair) |
| avoid | array | Optional. What the person cannot or does not want to do: floor = cannot get down to the floor, kneeling = cannot kneel, wrists = no weight on the wrists |
| level | string | Optional. Only routines up to this level are considered. YogaMag routines are Beginner or Intermediate. |
| minutes* |
Get a book summary by slug
| Argument | Type | Description |
|---|---|---|
| slug* | string | Slug of the book summary, as returned by search_content |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 200,
"description": "Slug of the book summary, as returned by search_content"
}
},
"additionalProperties": false
}Get a yoga glossary entry (pose, breathing technique or term) by slug, including who should skip or modify a pose and its easier versions
| Argument | Type | Description |
|---|---|---|
| slug* | string | Slug of the glossary term, as returned by search_content |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 200,
"description": "Slug of the glossary term, as returned by search_content"
}
},
"additionalProperties": false
}Get the full text of a YogaMag article by slug
| Argument | Type | Description |
|---|---|---|
| slug* | string | Slug of the article, as returned by search_content |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 200,
"description": "Slug of the article, as returned by search_content"
}
},
"additionalProperties": false
}Get a timed yoga routine by slug: every pose with its seconds, sides and breath cue, plus the link to the follow-along timer and, where there is one, the audio class (one MP3 with a spoken cue for every pose) and its podcast episode
| Argument | Type | Description |
|---|---|---|
| slug* | string | Slug of the routine, as returned by search_content |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 200,
"description": "Slug of the routine, as returned by search_content"
}
},
"additionalProperties": false
}Compare two people by name and date of birth: a 0 to 100 match score, what works, where they may clash, and tips. relation (love, business or friend) sets the angle. Same calculation as https://yogamag.co.in/numerology/numerology-compatibility. Nothing you send is stored or logged. Tell the person it is for reflection, not a prediction or advice.
| Argument | Type | Description |
|---|---|---|
| name* | string | First person full name |
| relation | string | Default love |
| birth_date* | string | First person date of birth as YYYY-MM-DD |
| partner_name* | string | Second person full name |
| partner_birth_date* | string | Second person date of birth as YYYY-MM-DD |
{
"type": "object",
"required": [
"name",
"birth_date",
"partner_name",
"partner_birth_date"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "First person full name"
},
"relation": {
"enum": [
"love",
"business",
"friend"
],
"type": "string",
"description": "Default love"
},
"birth_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"minLength": 10,
"description": "First person date of birth as YYYY-MM-DD"
},
"partner_name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Second person full name"
},
"partner_birth_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"minLength": 10,
"description": "Second person date of birth as YYYY-MM-DD"
}
},
"additionalProperties": false
}Check how well a name's Chaldean total fits a person's birth numbers and suggest alternative spellings that fit better. Same calculation as https://yogamag.co.in/numerology/name-correction-numerology. Nothing you send is stored or logged. Tell the person it is for reflection, not a prediction or advice.
| Argument | Type | Description |
|---|---|---|
| name* | string | The name to check, as it is spelled today |
| birth_date* | string | Date of birth as YYYY-MM-DD |
{
"type": "object",
"required": [
"name",
"birth_date"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The name to check, as it is spelled today"
},
"birth_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"minLength": 10,
"description": "Date of birth as YYYY-MM-DD"
}
},
"additionalProperties": false
}Whether a mobile number, house number, vehicle number or business name suits a person, from its numerology total and the person's own numbers. kind is mobile, house, vehicle or business; value is the number or name. Same calculation as the mobile, house, vehicle and business-name pages under https://yogamag.co.in/numerology. Nothing you send is stored or logged. Tell the person it is for reflection, not a prediction or advice.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| name* | string | Full name of the person it is for |
| value* | string | The number or business name, e.g. "+91 98765 43210", "12B", "MH12 AB 3456" or "Sunrise Yoga Studio" |
| birth_date* | string | That person's date of birth as YYYY-MM-DD |
{
"type": "object",
"required": [
"name",
"birth_date",
"kind",
"value"
],
"properties": {
"kind": {
"enum": [
"mobile",
"house",
"vehicle",
"business"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Full name of the person it is for"
},
"value": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The number or business name, e.g. \"+91 98765 43210\", \"12B\", \"MH12 AB 3456\" or \"Sunrise Yoga Studio\""
},
"birth_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"minLength": 10,
"description": "That person's date of birth as YYYY-MM-DD"
}
},
"additionalProperties": false
}A numerology reading from a full name and date of birth: Life Path, Destiny, Soul Urge, Personality, Moolank and Bhagyank, the Lo Shu grid, lucky numbers and the personal year. focus narrows it to one topic: summary (default), life_path, name, chaldean (name number in three systems), lo_shu or personal_year. Same calculation as https://yogamag.co.in/numerology. Nothing you send is stored or logged. Tell the person it is for reflection, not a prediction or advice.
| Argument | Type | Description |
|---|---|---|
| name* | string | Full name as it was given at birth or is used today |
| focus | string | Topic to detail. Default summary. |
| gender | string | |
| birth_date* | string | Date of birth as YYYY-MM-DD |
| current_name | string | Optional name in use today, if different |
{
"type": "object",
"required": [
"name",
"birth_date"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Full name as it was given at birth or is used today"
},
"focus": {
"enum": [
"summary",
"life_path",
"name",
"chaldean",
"lo_shu",
"personal_year"
],
"type": "string",
"description": "Topic to detail. Default summary."
},
"gender": {
"enum": [
"female",
"male",
"other"
],
"type": "string"
},
"birth_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"minLength": 10,
"description": "Date of birth as YYYY-MM-DD"
},
"current_name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Optional name in use today, if different"
}
},
"additionalProperties": false
}Look up a town or city to get the place_id, coordinates and time zone that calculate_birth_chart needs. Returns up to 5 matches, biggest first. Add a two-letter country code when the name is common.
| Argument | Type | Description |
|---|---|---|
| query* | string | Town or city name in English, e.g. "Pune" |
| country | string | Two-letter country code, e.g. "IN" |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Town or city name in English, e.g. \"Pune\""
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"maxLength": 2,
"minLength": 2,
"description": "Two-letter country code, e.g. \"IN\""
}
},
"additionalProperties": false
}Search YogaMag articles, glossary terms (poses, breathing, Sanskrit), pose comparisons, timed routines, yoga styles, meditation, guides, tools and book summaries. Returns titles, URLs, slugs and the tool to fetch each result (guides and hubs are read as resources by URL).
| Argument | Type | Description |
|---|---|---|
| query* | string | Search keywords or a short question, e.g. "flexibility", "cobra pose" or "hatha vs vinyasa" |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Search keywords or a short question, e.g. \"flexibility\", \"cobra pose\" or \"hatha vs vinyasa\""
}
},
"additionalProperties": false
}| longitude | number | Birthplace longitude |
| birth_date* | string | Date of birth as YYYY-MM-DD |
| birth_time | string | Local time of birth, 24-hour HH:MM. Leave out with time_confidence "unknown". |
| dst_choice | string | Which instant to use when the local time happened twice (clocks went back). Default earlier. |
| house_system | string | Default whole_sign |
| time_confidence | string | How sure the birth time is. Default: exact when birth_time is given, otherwise unknown. |
{
"type": "object",
"required": [
"birth_date"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Optional first name, shown in the reading"
},
"focus": {
"enum": [
"summary",
"dasha",
"nakshatra",
"navamsa",
"marriage",
"career",
"wealth"
],
"type": "string",
"description": "Topic to detail. Default summary."
},
"gender": {
"enum": [
"female",
"male",
"other"
],
"type": "string",
"description": "Optional; used only for the Nadi-style reading"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Birthplace latitude (with longitude and timezone, instead of place_id)"
},
"place_id": {
"type": "integer",
"minimum": 1,
"description": "Birthplace id from search_birth_places"
},
"timezone": {
"type": "string",
"maxLength": 64,
"minLength": 3,
"description": "IANA time zone of the birthplace, e.g. \"Asia/Kolkata\""
},
"ayanamsha": {
"enum": [
"lahiri",
"raman",
"krishnamurti",
"yukteshwar"
],
"type": "string",
"description": "Default lahiri, the Indian government standard"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Birthplace longitude"
},
"birth_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"maxLength": 10,
"minLength": 10,
"description": "Date of birth as YYYY-MM-DD"
},
"birth_time": {
"type": "string",
"pattern": "^\\d{1,2}:\\d{2}$",
"maxLength": 5,
"minLength": 4,
"description": "Local time of birth, 24-hour HH:MM. Leave out with time_confidence \"unknown\"."
},
"dst_choice": {
"enum": [
"earlier",
"later"
],
"type": "string",
"description": "Which instant to use when the local time happened twice (clocks went back). Default earlier."
},
"house_system": {
"enum": [
"whole_sign",
"equal",
"placidus"
],
"type": "string",
"description": "Default whole_sign"
},
"time_confidence": {
"enum": [
"exact",
"approximate",
"unknown"
],
"type": "string",
"description": "How sure the birth time is. Default: exact when birth_time is given, otherwise unknown."
}
},
"additionalProperties": false
}| integer |
| Minutes the person has; the nearest option that is not longer than their time |
{
"type": "object",
"required": [
"goal",
"minutes"
],
"properties": {
"goal": {
"enum": [
"morning",
"desk",
"strength",
"after-run",
"gentle",
"sleep",
"relaxation",
"flexibility",
"no-floor"
],
"type": "string",
"description": "One of: morning = Wake up and move (Morning routines that work every major joint); desk = A desk break (In your chair, or standing at your desk); strength = Strength and tight hips (Stretches plus holds such as Plank, Chair Pose and Bridge); after-run = After a run (Slow holds for calves, quads, hips and hamstrings); gentle = Stiff and want it gentle (In bed, or seated and chair-supported); sleep = Wind down at night (Slow floor poses and breathing before bed); relaxation = Slow down and relax (Seated breathing and gentle movement, no floor needed); flexibility = Loosen tight hips and hamstrings (Slow holds for hips, hamstrings and back); no-floor = Can't get down to the floor (Seated, standing or holding a chair)"
},
"avoid": {
"type": "array",
"items": {
"enum": [
"floor",
"kneeling",
"wrists"
],
"type": "string"
},
"maxItems": 3,
"description": "Optional. What the person cannot or does not want to do: floor = cannot get down to the floor, kneeling = cannot kneel, wrists = no weight on the wrists",
"uniqueItems": true
},
"level": {
"enum": [
"beginner",
"intermediate",
"experienced"
],
"type": "string",
"description": "Optional. Only routines up to this level are considered. YogaMag routines are Beginner or Intermediate."
},
"minutes": {
"enum": [
2,
5,
10,
15,
20
],
"type": "integer",
"description": "Minutes the person has; the nearest option that is not longer than their time"
}
},
"additionalProperties": false
}