Skip to main content
Glama

Ayurveda MCP Server by RoxyAPI

Ayurvedic constitution from a birth chart - Dosha profile API

post_ayurveda_constitution
Read-only

Read the Ayurvedic constitution from a sidereal birth chart and return the vata, pitta and kapha shares with a verse behind every factor. Three factors are scored, each one carrying a classical rule that it shows the native humour: the rising sign, the sign the Moon occupies, and the strongest graha by shadbala. The composite that blends them is a RoxyAPI convention rather than a classical one, so its version and its weights ship inside the response, and every response states that this is general wellness and cultural interest only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesBirth date in YYYY-MM-DD format. It sets the sidereal positions the whole reading is built from, so an approximate date gives an approximate constitution.
langNoResponse language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.en
timeYesBirth time in 24-hour HH:MM:SS format. The rising sign turns roughly every two hours and carries the heaviest weight of the three factors, so time is the input a reading is most sensitive to.
compactNoSet true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.
ayanamsaNoSidereal frame the chart is cast in. "lahiri" is the traditional Vedic standard used by most software and is the default. "raman" sits about 1.45 degrees below it. "kp-newcomb" and "kp-old" are the two Krishnamurti Paddhati frames. "custom" takes your own value in degrees via ayanamsaValue. The frame rotates the whole zodiac, so a graha within 1.45 degrees of a boundary can change rashi when you switch, which moves both sign factors of the reading.lahiri
latitudeYesBirth latitude in decimal degrees. It sets the local sidereal time behind the rising sign, and it feeds the strength of each graha through the sunrise at that place.
timezoneNoTimezone as an IANA name such as "Asia/Kolkata", or as decimal hours from UTC such as 5.5. An IANA name is resolved to the offset in force on the birth date, so a summer-time birth is placed correctly. Defaults to 5.5.
longitudeYesBirth longitude in decimal degrees. It sets the local sidereal time behind the rising sign, together with the latitude.
ayanamsaValueNoCustom sidereal frame value in degrees. Required when ayanamsa is "custom" and ignored otherwise. Use it to reconcile exactly against a specific reference program.
signDoshaSchemeNoWhich classical sign table the rising sign and the Moon sign are read through. "satyacharya" is the twelve-sign extract appended to Brihat Jataka 18.20, carried in two independent public-domain translations that agree on all twelve rows, and is the default. "bphs" is the Brihat Parasara Hora Sastra rule by elemental triplicity. The two agree exactly on three signs of twelve, overlap in part on seven, and share no humour at all on Scorpio or Sagittarius, so the choice can change the reading outright and is echoed in the response.satyacharya

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
metaYes
frameYes
factorsYes
summaryYes
moonSignYes
compositeYes
lagnaSignYes
conventionsYes
planetDoshasYes
strengthRankingYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "composite": {
      +      "properties": {
      +        "convention": {
      +          "type": "string"
      +        },
      +        "dominant": {
      +          "type": "string"
      +        },
      +        "kapha": {
      +          "type": "number"
      +        },
      +        "pitta": {
      +          "type": "number"
      +        },
      +        "secondary": {
      +          "type": "string"
      +        },
      +        "type": {
      +          "type": "string"
      +        },
      +        "vata": {
      +          "type": "number"
      +        },
      +        "weighting": {
      +          "properties": {
      +            "dualTypeMargin": {
      +              "type": "number"
      +            },
      +            "lagnaSign": {
      +              "type": "number"
      +            },
      +            "moonSign": {
      +              "type": "number"
      +            },
      +            "strongPlanetThreshold": {
      +              "type": "number"
      +            },
      +            "strongestPlanet": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "lagnaSign",
      +            "moonSign",
      +            "strongestPlanet",
      +            "strongPlanetThreshold",
      +            "dualTypeMargin"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "vata",
      +        "pitta",
      +        "kapha",
      +        "dominant",
      +        "secondary",
      +        "type",
      +        "convention",
      +        "weighting"
      +      ],
      +      "type": "object"
      +    },
      +    "conventions": {
      +      "properties": {
      +        "ayanamsa": {
      +          "type": "string"
      +        },
      +        "signDoshaScheme": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "signDoshaScheme",
      +        "ayanamsa"
      +      ],
      +      "type": "object"
      +    },
      +    "factors": {
      +      "items": {
      +        "properties": {
      +          "doshas": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "input": {
      +            "type": "string"
      +          },
      +          "source": {
      +            "properties": {
      +              "chapter": {
      +                "type": "string"
      +              },
      +              "note": {
      +                "type": "string"
      +              },
      +              "publicDomain": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "type": "string"
      +              },
      +              "translation": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "verse": {
      +                "type": "string"
      +              },
      +              "year": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "text",
      +              "chapter",
      +              "verse",
      +              "translation",
      +              "year",
      +              "publicDomain"
      +            ],
      +            "type": "object"
      +          },
      +          "weight": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "input",
      +          "doshas",
      +          "weight",
      +          "source"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "frame": {
      +      "properties": {
      +        "ayanamsa": {
      +          "type": "string"
      +        },
      +        "ayanamsaDegrees": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "ayanamsa",
      +        "ayanamsaDegrees"
      +      ],
      +      "type": "object"
      +    },
      +    "lagnaSign": {
      +      "type": "string"
      +    },
      +    "meta": {
      +      "properties": {
      +        "disclaimer": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "disclaimer"
      +      ],
      +      "type": "object"
      +    },
      +    "moonSign": {
      +      "type": "string"
      +    },
      +    "planetDoshas": {
      +      "items": {
      +        "properties": {
      +          "dhatu": {
      +            "type": "string"
      +          },
      +          "dhatuSanskrit": {
      +            "type": "string"
      +          },
      +          "dhatuSource": {
      +            "properties": {
      +              "chapter": {
      +                "type": "string"
      +              },
      +              "note": {
      +                "type": "string"
      +              },
      +              "publicDomain": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "type": "string"
      +              },
      +              "translation": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "verse": {
      +                "type": "string"
      +              },
      +              "year": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "text",
      +              "chapter",
      +              "verse",
      +              "translation",
      +              "year",
      +              "publicDomain"
      +            ],
      +            "type": "object"
      +          },
      +          "doshaSource": {
      +            "properties": {
      +              "chapter": {
      +                "type": "string"
      +              },
      +              "note": {
      +                "type": "string"
      +              },
      +              "publicDomain": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "type": "string"
      +              },
      +              "translation": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "verse": {
      +                "type": "string"
      +              },
      +              "year": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "text",
      +              "chapter",
      +              "verse",
      +              "translation",
      +              "year",
      +              "publicDomain"
      +            ],
      +            "type": "object"
      +          },
      +          "doshas": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "graha": {
      +            "type": "string"
      +          },
      +          "sanskritName": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "graha",
      +          "sanskritName",
      +          "doshas",
      +          "dhatu",
      +          "dhatuSanskrit",
      +          "doshaSource",
      +          "dhatuSource"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "strengthRanking": {
      +      "items": {
      +        "properties": {
      +          "graha": {
      +            "type": "string"
      +          },
      +          "rank": {
      +            "type": "number"
      +          },
      +          "strong": {
      +            "type": "boolean"
      +          },
      +          "totalVirupas": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "graha",
      +          "totalVirupas",
      +          "rank",
      +          "strong"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "summary": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "frame",
      +    "lagnaSign",
      +    "moonSign",
      +    "factors",
      +    "composite",
      +    "strengthRanking",
      +    "planetDoshas",
      +    "summary",
      +    "conventions",
      +    "meta"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond that: the composite is a RoxyAPI convention (not classical) and its version/weights are shipped in the response, plus the disclaimer that responses state general wellness/cultural interest only. These are meaningful non-obvious behaviors that an agent benefits from knowing before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and gets straight to the point: purpose, factors, and a caveat. It is front-loaded with the core action and output, then elaborates on the composite convention. It is efficient without being overly terse, though it packs several clauses into a single long second sentence, which slightly reduces readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, 3 enums, multiple configuration options) and the presence of an output schema, the description covers the essential behavioral context: the three scored factors, the non-classical composite, and the disclaimer. It does not mention error conditions or pagination, but for a read-only tool with an output schema, these are minor omissions. The description is complete enough for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter in detail. The description does not add parameter-specific semantics beyond the schema—for example, the sensitivity of time is already explained in the time parameter's description. The description focuses on the overall algorithm rather than individual parameters, so it adds minimal value on top of the schema, warranting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Read') and resource ('Ayurvedic constitution from a sidereal birth chart'), and clearly states the output (vata, pitta, kapha shares with a verse). It distinguishes itself from sibling tools like get_ayurveda_doshas by focusing on the birth-chart-derived constitution, making it unambiguous which tool an agent should pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (birth chart analysis) but does not explicitly contrast with siblings such as get_ayurveda_doshas or get_ayurveda_daily. There is no 'use this instead of X' guidance or exclusions. An agent can infer when to use it from the resource type, but the description leaves the alternative-selection logic to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources