Computes the full sidereal natal chart from BirthData and returns planet rows, houses, aspects, arudhas, upapada, bhava cusps, and avakhada metadata.
SECTION: WHAT THIS TOOL COVERS
Parashari-style natal endpoint: nine grahas with signs, degrees, nakshatras, combustion, retrograde, Bhava Chalit and rashi houses, twelve house cusps, graha and rashi drishti, arudha padas A1–A12, upapada lagna block, bhava madhya/sandhi arrays, ayanamsa metadata, and avakhada attributes. When include_interpretation=true, ascendant_sign_interpretation, moon_sign_interpretation, moon_nakshatra_interpretation, and interpretation are populated from interpretation JSON; otherwise they are null. It does not return PDFs, yogas list (asterwise_get_yogas), or dasha trees (asterwise_get_dasha).
SECTION: WORKFLOW
BEFORE: None — this tool is standalone.
AFTER: RECOMMENDED — asterwise_get_yogas — layer classical combinations after the base chart exists.
SECTION: INPUT CONTRACT
BirthData enforces date YYYY-MM-DD, time HH:MM, lat -90..90, lon -180..180, ayanamsa enum locally (Pydantic). Unknown birth time may be entered as time='00:00' without error; lagna-sensitive results are then unreliable and callers must handle that — the API does not flag it.
SECTION: OUTPUT CONTRACT
data.planets[] — nine objects:
planet (string)
sign (string)
sign_num (int — 0–11)
degree (float)
nakshatra (string)
nakshatra_pada (int — 1–4)
is_retrograde (bool)
is_combust (bool)
is_deep_combust (bool)
house (int — Bhava Chalit)
rasi_house (int)
bhava_chalit_house (int)
data.houses[] — twelve objects:
house (int)
sign (string)
sign_num (int)
degree (float)
data.ascendant (float)
data.ascendant_sign (string — Sanskrit name)
data.moon_sign (string)
data.moon_nakshatra (string)
data.ayanamsa_value (float)
data.ayanamsa_used (string)
data.avakahada:
nakshatra, nakshatra_lord, charan (int), rashi, rashi_lord, varna, vashya, yoni, gana, nadi, paya, ascendant, ascendant_lord, sun_sign, sun_sign_lord (strings/ints per upstream)
data.graha_drishti — object keyed by planet name; each value object keyed by house strings '1'–'12' with aspect strength int (25, 50, 75, or 100)
data.rashi_drishti[] — active sign-to-sign aspect pairs:
{ from_sign (string), from_sign_num (int 0-11), to_sign (string), to_sign_num (int 0-11) }
data.arudha_padas — keys A1–A12 each { sign_index (int), sign_name (string) }
data.upapada_lagna:
sign_index (int)
sign_name (string)
upapada_lord (string)
second_from_upapada_sign_index (int)
second_from_upapada_sign_name (string)
planets_in_second_from_upapada[] (string array of planet names)
has_benefic_in_second_from_upapada (bool)
has_malefic_in_second_from_upapada (bool)
data.bhava_madhya[] — twelve objects:
{ house (int 1-12), sign (string), sign_num (int 0-11), degree (float) }
data.bhava_sandhi[] — twelve objects:
{ house (int 1-12), sign (string), sign_num (int 0-11), degree (float) }
data.birth_time_unknown (bool — always false; no detection)
data.fallback_method (null)
ascendant_sign_interpretation (dict or null — sign interpretation from signs/ascendant.json when include_interpretation=true)
moon_sign_interpretation (dict or null — Moon sign interpretation from signs/moon_sign.json when include_interpretation=true)
moon_nakshatra_interpretation (dict or null — nakshatra interpretation from nakshatras/ files when include_interpretation=true)
interpretation (list or null — planet-in-house interpretation list when include_interpretation=true)
SECTION: RESPONSE FORMAT
response_format=json serialises the complete response as indented JSON — use this for programmatic parsing, typed clients, and downstream tool chaining. response_format=markdown renders the same data as a human-readable report. Both modes return identical underlying data — no fields are added, removed, or filtered by either mode.
SECTION: COMPUTE CLASS
MEDIUM_COMPUTE
SECTION: ERROR CONTRACT
INVALID_PARAMS (local — caught before upstream call):
— BirthData Pydantic violations (date/time/lat/lon/ayanamsa) → MCP INVALID_PARAMS
INVALID_PARAMS (upstream):
— None — calendar years outside supported upstream window surface as MCP INTERNAL_ERROR at the tool layer.
INTERNAL_ERROR:
— Any upstream API failure or timeout → MCP INTERNAL_ERROR
Edge cases:
— time='00:00' accepted; lagna may be wrong if true birth time unknown — not auto-detected.
— Interpretation fields are null unless include_interpretation=true on the request.
SECTION: DO NOT CONFUSE WITH
asterwise_get_divisional_chart — sixteen vargas only, not the primary radix bundle returned here.