Skip to main content
Glama
185,454 tools. Last updated 2026-06-09 17:31

"Pydantic" matching MCP tools:

  • Fetches an AI-synthesised Western sun-sign horoscope for a chosen horizon and returns structured guidance fields plus metadata about the model and period. SECTION: WHAT THIS TOOL COVERS Calls the upstream western horoscope service for a tropical sun sign and a period of daily, weekly, monthly, or yearly. Uses the tropical zodiac (not sidereal). Content is grounded in current sky aspects, slow planet positions, and the solar season — not Vedic transit rules. It does not compute a personal natal chart, divisional charts, or dasha — only sign-level tropical transit-flavoured copy tied to the requested horizon. No remedy field — Western tradition has no planetary remedy system. SECTION: WORKFLOW BEFORE: None — this tool is standalone. AFTER: asterwise_get_western_natal — if the user needs a personalised tropical chart beyond sign-general copy. SECTION: INPUT CONTRACT period is constrained to the tool schema enum (daily, weekly, monthly, yearly). sun_sign accepts English zodiac names only (Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces). No Sanskrit aliases — this is Western astrology. response_format selects JSON vs markdown rendering only. SECTION: OUTPUT CONTRACT data.content: headline (string) narrative (string) love (string) career (string) money (string) body (string) power_window (string) caution_window (string) closing_message (string) phases[] (monthly only — array of phase objects with phase_number, start_date, end_date, title, narrative) year_theme (string — yearly only) chapters[] (yearly only — array of chapter objects with chapter_number, start_date, end_date, title, narrative) auspicious_months[] (yearly only — string array of month names) landmark_dates[] (yearly only — array of {date, event} objects) data.model_used (string — AI model version label) data.generated_at (string — ISO UTC) data.period_key (string — YYYY-MM-DD for daily; YYYY-W## for weekly; YYYY-MM for monthly; YYYY for yearly) data.horizon (string — 'daily', 'weekly', 'monthly', or 'yearly') data.sun_sign (string — lowercase English, e.g. 'aries') data.zodiac_type (string — 'western') 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 FAST_LOOKUP SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): — Invalid period enum or other Pydantic field violations on the tool schema → MCP INVALID_PARAMS INVALID_PARAMS (upstream): — Unknown or unsupported sun_sign → MCP INTERNAL_ERROR at the tool layer (upstream rejection). INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR — Horoscope not yet generated for the current period → MCP INTERNAL_ERROR with status not_generated Edge cases: — Sun-sign content only; not a substitute for birth-chart analysis. — If a period's horoscope has not yet been generated by the cron, returns 404 upstream (surfaces as INTERNAL_ERROR). — No remedy field in western horoscopes by design. SECTION: DO NOT CONFUSE WITH asterwise_get_horoscope — Vedic Moon-sign horoscope using sidereal zodiac, not Western tropical sun-sign. asterwise_get_western_natal — full personalised tropical chart from birth data, not sign-general editorial copy.
    Connector
  • 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 Vedic 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_provided (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.
    Connector
  • Calculate a complete Western natal chart using the tropical zodiac and Swiss Ephemeris. Returns 10 planet positions with Placidus (or chosen) house placements, essential dignities, all active aspects, and element/modality/hemisphere balance statistics. SECTION: WHAT THIS TOOL COVERS Tropical natal chart: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto. Each planet returns tropical longitude, sign, house (1–12), retrograde flag, dignity label (domicile/exaltation/detriment/fall/peregrine), dignity score (domicile +5, exaltation +4, triplicity +3, term +2, face +1, detriment -5, fall -4), is_exaltation_degree (within 1° of exact exaltation), dignity_disputed (true for outer planets where exaltation/fall is disputed among modern astrologers). Aspect orbs: conjunction/opposition 5°, square/trine 5°, sextile 3°, minor aspects 1.5°. Not Vedic sidereal (asterwise_get_natal_chart). SECTION: WORKFLOW BEFORE: None — this tool is standalone. AFTER: asterwise_get_western_transits_daily — layer current transits over this natal chart. AFTER: asterwise_get_western_synastry — compare this chart against a partner's chart. AFTER: asterwise_get_western_solar_return — annual return chart for the current year. SECTION: INPUT CONTRACT birth.date — YYYY-MM-DD. Example: '1985-11-12' birth.time — HH:MM (24-hour local time). Example: '06:45' birth.lat — Decimal degrees, north positive. Example: 19.076 (Mumbai) birth.lon — Decimal degrees, east positive. Example: 72.8777 (Mumbai) birth.timezone — IANA timezone string. Example: 'Asia/Kolkata', 'America/New_York', 'Europe/Rome', 'UTC'. Default: UTC. IMPORTANT: Timezone defaults to UTC — always supply the correct local timezone for accurate house cusps. An incorrect timezone shifts the Ascendant. birth.house_system — 'placidus' (default, most common), 'koch', 'equal', 'whole_sign'. Placidus is standard for most Western traditions. Whole sign is traditional/Hellenistic. NOTE: house_system is accepted here but silently ignored by transit, return, synastry, composite, and progression endpoints — those always use the birth location coordinates without house-system selection. ayanamsa — always tropical regardless of any value supplied; field is not present. SECTION: OUTPUT CONTRACT data.zodiac (string — 'tropical') data.house_system (string — the system used) data.ascendant — { longitude (float), sign (string), sign_index (int 0–11), degree_in_sign (float) } data.mc — same shape as ascendant data.planets[] — 10 objects (Sun through Pluto): name (string), longitude (float), sign (string), sign_index (int 0–11) degree_in_sign (float), house (int 1–12) is_retrograde (bool), dignity (string), dignity_score (int) is_exaltation_degree (bool), dignity_disputed (bool) data.houses[] — 12 objects: house (int 1–12), cusp_longitude (float), sign (string) sign_index (int 0–11), degree_in_sign (float) data.aspects[] — each: planet_a (string), planet_b (string), type (string) exact_angle (float), orb (float), is_applying (bool) data.elements — { fire (int), earth (int), air (int), water (int), dominant (string) } data.modalities — { cardinal (int), fixed (int), mutable (int), dominant (string) } data.hemisphere — { eastern (int), western (int), northern (int), southern (int) } data.ayanamsa_value (float — 0.0 for tropical) data.ayanamsa_used (string — 'tropical') data.birth_time_provided (bool) 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 natal report. Both modes return identical underlying data. SECTION: COMPUTE CLASS MEDIUM_COMPUTE (~300ms) SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): — WesternBirthData Pydantic violations (date pattern, time pattern, lat/lon bounds) → MCP INVALID_PARAMS INVALID_PARAMS (upstream): — None expected for valid coordinates and dates post-1800. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Polar latitudes (above ~65°N or below ~65°S) may cause Placidus house calculation failure; use whole_sign or equal house system for polar births. — time='00:00' accepted; lagna-sensitive results are unreliable for unknown birth times. SECTION: DO NOT CONFUSE WITH asterwise_get_natal_chart — Vedic sidereal chart using Lahiri ayanamsa; different zodiac, different house system, different planet set (9 grahas vs 10 tropical planets). asterwise_get_western_aspects — takes raw longitudes as input; use when you already have positions and don't need full chart computation.
    Connector
  • Fetches an AI-synthesised Moon-sign horoscope for a chosen horizon and returns structured guidance fields plus metadata about the model and period. SECTION: WHAT THIS TOOL COVERS Calls the upstream horoscope service for a lunar sign (English or Sanskrit input accepted; response normalises moon_sign to lowercase English) and a period of daily, weekly, monthly, or yearly. It returns narrative and checklist-style content for life areas, remedy, and timing flavour text. It does not compute a personal natal chart, divisional charts, or dasha — only sign-level transit-flavoured copy tied to the requested horizon. SECTION: WORKFLOW BEFORE: None — this tool is standalone. AFTER: asterwise_get_natal_chart — if the user needs a personalised chart beyond sign-general copy. SECTION: INPUT CONTRACT period is constrained to the tool schema enum (daily, weekly, monthly, yearly). moon_sign accepts Sanskrit (Tula, Vrischika, Karka, Simha, Kanya, Dhanu, Makara, Kumbha, Meena, Mesha, Vrishabha, Mithuna) or English (Libra, Scorpio, Cancer, Leo, Virgo, Sagittarius, Capricorn, Aquarius, Pisces, Aries, Taurus, Gemini); resolution is upstream. response_format selects JSON vs markdown rendering only. SECTION: OUTPUT CONTRACT data.content: do[] (string array) body (string) love (string) avoid[] (string array) money (string) career (string) remedy (string) headline (string) narrative (string) open_loop (string) data.model_used (string — AI model version label) data.generated_at (string — ISO UTC) data.period_key (string — YYYY-MM-DD for daily; identifier for other horizons) data.horizon (string — 'daily', 'weekly', 'monthly', or 'yearly') data.moon_sign (string — lowercase English, e.g. 'libra') 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 FAST_LOOKUP SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): — Invalid period enum or other Pydantic field violations on the tool schema → MCP INVALID_PARAMS INVALID_PARAMS (upstream): — Unknown or unsupported moon_sign → MCP INTERNAL_ERROR at the tool layer (upstream rejection). INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Sign-level content only; not a substitute for birth-chart analysis. SECTION: DO NOT CONFUSE WITH asterwise_get_natal_chart — full personalised sidereal chart from birth data, not Moon-sign editorial copy. asterwise_get_gochar — nine-planet transit snapshot vs natal chart for today, not AI horoscope prose.
    Connector
  • Returns a personalised daily prediction using Tarabala and Chandrabala. SECTION: WHAT THIS TOOL COVERS Computes the individual's daily auspiciousness score by: 1. TARABALA: Counts from birth nakshatra to today's transit Moon nakshatra (inclusive). The remainder mod 9 gives the Tara (1=Janma, 2=Sampat/Wealth, 3=Vipat/Danger, 4=Kshema/Prosperity, 5=Pratyak/Obstacle, 6=Sadhana/Achievement, 7=Naidhana/Destruction, 8=Mitra/Friend, 9=Ati-Mitra/Great Friend). 2. CHANDRABALA: Transit Moon's house from natal Moon (favorable in houses 1,3,6,7,10,11). 3. TRANSIT NAKSHATRA QUALITY: The type of today's Moon nakshatra (Dhruva/Chara/Ugra/Tikshna/Kshipra/Mridu/Mishra) with auspicious and inauspicious activities. Combined daily score out of 4 with label (Excellent/Good/Moderate/Challenging). SECTION: WORKFLOW BEFORE: None — birth data computes everything needed. AFTER: asterwise_get_panchanga — for full daily panchanga context. SECTION: INPUT CONTRACT birth — BirthData (date, time, lat, lon, timezone). target_date (optional): YYYY-MM-DD. Defaults to today. SECTION: OUTPUT CONTRACT data.target_date (string) data.birth_nakshatra{}: name (string), index (int 0-26) data.natal_moon_sign_index (int 0-11) data.transit_moon{}: nakshatra (string), nakshatra_index (int), rashi_index (int) data.tarabala{}: tara_number (int 1-9), count_from_birth (int), name (string), meaning (string), is_favorable (bool), interpretation (string) data.chandrabala{}: moon_house_from_natal (int 1-12), is_favorable (bool), favorable_houses[] (int array) data.daily_score{}: score (int 0-4), max_score (4), label (string) data.transit_nakshatra_quality{}: nakshatra (string), quality_type (string), english (string), auspicious_for[] (string array), inauspicious_for[] (string array) data.nakshatra_activities{}: favorable[] (string array), unfavorable[] (string array) SECTION: COMPUTE CLASS MEDIUM_COMPUTE — natal chart + ephemeris Moon position. SECTION: ERROR CONTRACT INVALID_PARAMS (local): BirthData Pydantic violations → MCP INVALID_PARAMS INTERNAL_ERROR: Any upstream API failure → MCP INTERNAL_ERROR SECTION: DO NOT CONFUSE WITH asterwise_get_nakshatra_details — static nakshatra reference, not personalised prediction. asterwise_get_panchanga — daily panchanga (tithi, yoga, karana), not Tarabala scoring. asterwise_get_biorhythm — Western biorhythm cycles, not classical Vedic prediction.
    Connector
  • Computes Vimshottari Dasha from birth data and returns hierarchical period trees plus current Maha/Antar interpretation blocks. SECTION: WHAT THIS TOOL COVERS Computes the classical classical Vimshottari timeline from the Moon's birth nakshatra: Mahadasha and nested sub-periods up to the depth set by levels, with Julian and calendar boundaries and optional modern summaries. It returns data.periods[] and data.interpretation for the active periods. It does not compute Char Dasha, Yogini Dasha, Ashtottari, or transit correlations; use the dedicated tools for those systems. SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_natal_chart — establishes chart and Moon context before interpreting Dasha lords. AFTER: asterwise_get_dasha_transits — correlates active Dasha lords with transits for the same birth data. SECTION: INPUT CONTRACT levels (int, default 3, max 5): tree depth — 1 = Mahadasha only; 2 adds Antardasha; 3 Pratyantar; 4 Sookshma; 5 Prana (much larger payload). Response dates in periods[] use DD/MM/YYYY, not ISO. BirthData fields follow global contract (date YYYY-MM-DD, time HH:MM; time='00:00' is accepted without flag — lagna-sensitive timing may be wrong if birth time is unknown). SECTION: OUTPUT CONTRACT data.periods[] — array of Mahadasha objects: planet (string) start_jd (float) end_jd (float) start_date (string — DD/MM/YYYY, not ISO) end_date (string — DD/MM/YYYY) modern_summary (string or null) sub[] — array of Antardasha objects with the same shape; sub=null at deepest level data.interpretation.current_mahadasha: planet (string) start_date (string) end_date (string) duration_years (float) modern_summary (string or null) favorable_conditions[] (string array) favorable_results[] (string array) unfavorable_conditions[] (string array) unfavorable_results[] (string array) timing_note (string) data.interpretation.current_antardasha — same fields as current_mahadasha plus mahadasha_planet (string) data.birth_time_provided (bool) 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 (~100ms at levels=1, ~1500ms at levels=5) SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): — levels < 1 or levels > 5 → MCP INVALID_PARAMS INVALID_PARAMS (upstream): — None — BirthData validation is upstream beyond Pydantic field constraints. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Period start_date/end_date strings are DD/MM/YYYY; do not parse as ISO. SECTION: DO NOT CONFUSE WITH asterwise_get_char_dasha — classical sign-based periods with ISO dates on periods[], not planet-based Vimshottari. asterwise_get_yogini_dasha — 36-year eight-Yogini cycle with data.periods.root[], not Vimshottari. asterwise_get_ashtottari_dasha — 108-year alternative tree with data.periods.root[] and same levels semantics as this tool.
    Connector

Matching MCP Servers

  • Computes all 10 Tajika Saham (sensitive points) for a Varshaphal solar return chart. Sahams are the Tajika equivalent of Arabic Parts — mathematically derived zodiac points that focus the annual horoscope on specific life themes. SECTION: WHAT THIS TOOL COVERS Saham formula: (A - B + Ascendant) % 360, with a conditional +30° correction applied when the Ascendant does not fall in the forward zodiacal arc from B to A. This conditional is the defining classical Tajika Saham rule — without it, results are wrong. Day and night formulas differ: the Minuend and Subtrahend swap based on whether the solar return falls during daytime or nighttime at the birth location. Punya Saham (Fortune) is always computed first because Yashas (Fame) and Mahatmya (Status) use it as an operand. The Saham lord (planet ruling the sign where the Saham falls) is the Sahamesha — its strength, house placement, and Tajika aspects to the Varsha Ascendant determine whether the theme manifests positively or is obstructed. 10 Sahams returned: punya — Fortune and Luck (Moon-Sun day / Sun-Moon night) vidya — Education and Learning (Sun-Jupiter day) yashas — Fame and Reputation (Jupiter-Punya day) — uses Punya as operand mitra — Friends and Allies (Jupiter-Venus day) mahatmya — Greatness and Status (Punya-Mars day) — uses Punya as operand asha — Desires and Fulfillment (Saturn-Venus day) karmakarya — Action and Profession (Mars-Mercury day) vyapara — Business and Trade (Mars-Saturn day) vivaha — Marriage and Relationships (Venus-Saturn day) santapa — Sorrow and Stress (Saturn-Moon day) SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_varshaphal — understand the base solar return chart (year lord, Muntha, Varsha Ascendant) before interpreting Saham lords. The Saham is meaningless without knowing which house it occupies from the Varsha Ascendant. AFTER: asterwise_get_varshaphal_harsha_bala — assess the Saham lord's positional happiness score to determine ease or difficulty of manifestation. SECTION: INPUT CONTRACT Same as asterwise_get_varshaphal — BirthData plus target_year. target_year (required int): The Gregorian calendar year of the solar return. Not age — the civil year (e.g. 2026). Feeding age instead of year silently produces the wrong return. time (required): Solar return Ascendant is time-sensitive. Accurate birth time is required for reliable Saham interpretation. SECTION: OUTPUT CONTRACT data.target_year (int — calendar year of the solar return) data.ayanamsa (string — ayanamsa system used, e.g. 'lahiri') data.solar_return_utc (string — ISO UTC timestamp of solar return moment) data.is_day_return (bool — true if solar return occurs between sunrise and sunset; determines which Saham formula variant is used) data.varshaphal_ascendant_longitude (float — Varsha Ascendant in degrees; all 10 Saham longitudes are computed relative to this) data.total (int — always 10) data.sahams[] — 10 objects in order [punya, vidya, yashas, mitra, mahatmya, asha, karmakarya, vyapara, vivaha, santapa]: slug (string — lowercase key, e.g. 'punya') name (string — full display name, e.g. 'Punya Saham') theme (string — life area, e.g. 'Fortune and Luck') longitude (float — Saham longitude in degrees 0–360) rashi_index (int — 0–11, 0=Mesha) rashi (string — Sanskrit sign name, e.g. 'Mesha') degree_in_sign (float — degrees within the sign) saham_lord (string — classical lord of the sign where Saham falls) formula_used (string — describes whether day or night formula was applied and which planets were operands, e.g. 'day: Moon - Sun + Asc') (string — methodology note) 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 SLOW_COMPUTE — internally runs the full solar return computation (binary-search Sun longitude + house computation) before deriving Sahams. SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): None — BirthData Pydantic only. INVALID_PARAMS (upstream): None — upstream rejection surfaces as MCP INTERNAL_ERROR. INTERNAL_ERROR: Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Day/night determination uses sunrise/sunset at the birth coordinates for the solar return date. Polar latitudes where sunrise cannot be computed → MCP INTERNAL_ERROR. — target_year is a Gregorian year, not age — always verify the caller passes the civil year. SECTION: DO NOT CONFUSE WITH asterwise_get_varshaphal — returns the full base solar return chart including Muntha, year lord, and planet positions; Saham points are not included there. asterwise_get_varshaphal_harsha_bala — scores planet positional happiness; this tool computes zodiac points, not planet positions. asterwise_get_gemstone_recommendations — birthchart gemstone recommendations, unrelated to Tajika Saham.
    Connector
  • Computes Harsha Bala (positional happiness score) for all 7 classical planets in a Varshaphal solar return chart. Maximum 20 per planet (4 components × 5 points each). SECTION: WHAT THIS TOOL COVERS Harsha Bala is entirely distinct from Pancha Vargeeya Bala. Pancha Vargeeya Bala measures mathematical strength (sign dignity, exaltation arc, divisional chart fractions). Harsha Bala measures whether a planet is positionally comfortable — does it occupy the right house, sign, hemisphere, and return type for its nature? A planet with high Pancha Vargeeya Bala (60/80) but zero Harsha Bala has the capacity to deliver results, but does so through stress, delay, and frustration. A Year Lord (Varsha Pati) with 0 Harsha Bala signals a difficult year even when it wins the Pancha Adhikari election. 4 Components (5 points each, maximum 20): 1. STHANA — Happy house placement in the Varsha chart (measured from Varsha Ascendant, not natal Ascendant): Sun=9th, Moon=3rd, Mars=6th, Mercury=1st, Jupiter=11th, Venus=5th, Saturn=12th. 2. SWAKSHETRA/UCCHA — Planet in its own sign (Swakshetra) or sign of exaltation (Uccha). 3. PUM-STRI (Gender/Hemisphere) — Male planets (Sun, Mars, Jupiter) prefer houses 7–12 (visible hemisphere). Female planets (Moon, Venus, Saturn) prefer houses 1–6 (invisible hemisphere). Mercury earns this component unconditionally. 4. DINA-RATRI (Day/Night) — Male planets (Sun, Mars, Jupiter) prefer a daytime solar return. Female planets (Moon, Venus, Saturn) prefer a nighttime return. Mercury earns this component unconditionally. SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_varshaphal — identify the Year Lord (Varsha Pati) before interpreting Harsha Bala. The Year Lord's Harsha Bala is the most actionable number in this response. AFTER: asterwise_get_varshaphal_saham — use Harsha Bala to assess whether each Saham lord can deliver its theme with ease or difficulty. SECTION: INPUT CONTRACT Same as asterwise_get_varshaphal — BirthData plus target_year. target_year (required int): The Gregorian civil year of the solar return. Not age. time (required): Solar return ascendant and house positions are time-sensitive. SECTION: OUTPUT CONTRACT data.target_year (int) data.ayanamsa (string) data.solar_return_utc (string — ISO UTC of solar return moment) data.is_day_return (bool — true if solar return falls between sunrise and sunset; directly determines Dina-Ratri component results for all planets) data.varshaphal_ascendant_longitude (float — Varsha Ascendant in degrees; all house placements are measured from this) data.planets[] — 7 objects (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn in that order): planet (string — planet name) harsha_bala (int — total score 0–20) max_harsha_bala (int — always 20) varsha_house (int — planet's house in the Varsha chart, 1–12, from Varsha Ascendant) rashi_index (int — 0–11, 0=Mesha) rashi (string — Sanskrit sign name) components{} — four keys: sthana{}: earned (bool), points (int — 0 or 5), happy_house (int), actual_house (int), description (string) swakshetra_uccha{}: earned (bool), points (int — 0 or 5), in_own_sign (bool), in_exaltation (bool), current_rashi_index (int) pum_stri{}: earned (bool), points (int — 0 or 5), gender (string — 'male'|'female'|'neutral'), happy_hemisphere (string), actual_house (int) dina_ratri{}: earned (bool), points (int — 0 or 5), happy_period (string), actual_period (string — 'day' or 'night') interpretation (string — qualitative label: 'Excellent', 'Strong', 'Moderate', 'Weak', or 'Very weak') (string — methodology and interpretation guidance) 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 SLOW_COMPUTE — internally runs the full solar return computation before deriving Harsha Bala. SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): None — BirthData Pydantic only. INVALID_PARAMS (upstream): None — upstream rejection surfaces as MCP INTERNAL_ERROR. INTERNAL_ERROR: Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Rahu and Ketu are excluded — Harsha Bala is defined only for the 7 classical grahas. — Polar latitudes where sunrise/sunset cannot be computed affect is_day_return → MCP INTERNAL_ERROR. — target_year is a Gregorian year, not age. SECTION: DO NOT CONFUSE WITH asterwise_get_varshaphal — returns Pancha Vargeeya Bala (mathematical strength out of 80) for the Pancha Adhikaris; Harsha Bala (positional happiness out of 20) is a completely different measurement returned by this tool. asterwise_get_varshaphal_saham — derives sensitive zodiac points; this tool scores planet positional comfort. asterwise_get_chart_strength — Shadbala for the natal chart, not Tajika Harsha Bala for the solar return.
    Connector
  • Recommends crystals from a Vedic natal chart using house lordship rules for gem selection. This is the only API that derives crystal recommendations from a computed natal chart — not from zodiac sign or chakra preference. SECTION: WHAT THIS TOOL COVERS Classical rules applied: 1. INCLUSION RULE — A planet is recommended only if it lords at least one Trikona house (1st, 5th, or 9th). If a planet lords both a Trikona and a Dusthana (6th, 8th, or 12th), the Trikona lordship prevails and the planet is still recommended. This is the dual-lordship rule — violating it produces wrong exclusions. 2. EXCLUSION RULE — A planet that does not lord any Trikona house is contraindicated. This includes pure Dusthana lords, pure Kendra lords (4th, 7th, 10th), and pure neutral lords. 3. SCORING — Crystals are scored by which Trikona lordship their planet holds: Lagna lord (1st) Navaratna +5, Uparatna +4 — primary Life Stone Yogakaraka Navaratna +5, Uparatna +4 — lords both a non-1st Kendra AND a non-1st Trikona simultaneously 9th lord Navaratna +4, Uparatna +3 — Fortune Stone (Bhagyesh) 5th lord Navaratna +3, Uparatna +2 — Lucky Stone (Panchamesh) 4. YOGAKARAKA — A planet that lords both a non-1st Kendra (4th, 7th, or 10th) AND a non-1st Trikona (5th or 9th) is the supreme benefic for that Lagna. Example: Mars for Cancer Lagna (lords 5th and 10th). 5. DANGEROUS COMBINATIONS — Pairs of recommended crystals from enemy planet camps are flagged in warnings[]: Saturn+Sun, Saturn+Mars, Jupiter+Venus, Moon+Rahu, Moon+Ketu. 6. CLASSICAL VEDIC ONLY — Crystals with vedic_correspondence='none_classical' (Labradorite, Amazonite, Black Obsidian, etc.) are never returned. These stones have no Vedic planetary assignment in the database. SECTION: WORKFLOW BEFORE: None — this tool internally computes the natal chart. No separate natal chart call required. AFTER: asterwise_get_crystal — get full detail (hardness, origins, affirmation, full caution text) on any recommended crystal by slug. AFTER: asterwise_get_remedies — broader classical remedial programme alongside gem recommendations. SECTION: INPUT CONTRACT Standard BirthData (date, time, lat, lon, timezone, ayanamsa). Defaults to Lahiri ayanamsa. time (required): Ascendant (Lagna) is time-sensitive. Inaccurate birth time changes the Lagna → changes all house lords → changes recommendations entirely. SECTION: OUTPUT CONTRACT data.natal_context{} — chart factors used for recommendations: lagna_sign (string — Ascendant sign in English, e.g. 'Libra') lagna_lord (string — classical lord of the 1st house) fifth_sign (string — 5th house sign in English) fifth_lord (string — lord of the 5th house, Panchamesh) ninth_sign (string — 9th house sign in English) ninth_lord (string — lord of the 9th house, Bhagyesh) yogakaraka (string or null — Yogakaraka planet name if one exists for this Lagna; null if none) contraindicated_lords (string array — planets that do not lord any Trikona; their gems are contraindicated) ayanamsa (string — ayanamsa used, e.g. 'lahiri') data.total (int — number of crystals returned, up to 5) data.crystals[] — recommended crystals sorted by match_score descending: slug, name, colors[], hardness_mohs (float), chakras[], element, zodiac_signs[] vedic_planet (string — the planet this crystal corresponds to) vedic_correspondence (string — always 'navaratna' or 'uparatna'; none_classical never appears) western_planet (string or null) keywords[], healing_physical, healing_emotional, healing_spiritual, description origins[], affirmation, caution (string or null — always surface this to end users) match_score (int — house lordship score; higher indicates stronger lordship basis) match_reasons (string array — which house lordship triggered this recommendation) warnings (string array — dangerous combination warnings; may be empty) 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 — full natal chart computation + crystal scoring pass. SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): BirthData Pydantic violations → MCP INVALID_PARAMS INVALID_PARAMS (upstream): Dates before 1800 or after 2100 → MCP INTERNAL_ERROR INTERNAL_ERROR: Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — An empty crystals[] is valid when no Navaratna or Uparatna Vedic gem corresponds to the Trikona lords of this specific chart. — Blue Sapphire (Saturn) and Hessonite (Rahu) carry CRITICAL cautions in their caution field — always surface this to end users before advising wear. — Rahu and Ketu do not own signs in the classical system — they never appear as lagna_lord, fifth_lord, or ninth_lord. SECTION: DO NOT CONFUSE WITH asterwise_get_gemstone_recommendations — also a chart-based gem endpoint but uses a different engine (Atmakaraka + role-based prescription vs house lordship scoring); returns gem names not crystal database entries; does not include match_score or match_reasons. asterwise_get_crystal_recommendations — recommends crystals by zodiac sign, chakra, or intention keyword (no natal chart computation; Western metaphysical matching, not classical Jyotish). asterwise_get_crystal_by_planet — lists all crystals for a Vedic planet without house context — use this for reference, not prescription.
    Connector
  • Computes divisional (varga) chart positions from BirthData; pass chart_type for one varga, or omit chart_type for all sixteen. SECTION: WHAT THIS TOOL COVERS When chart_type is provided, returns only that one divisional chart. When chart_type is omitted, returns all sixteen standard classical divisional charts (D1, D2, D3, D4, D7, D9, D10, D12, D16, D20, D24, D27, D30, D40, D45, D60). D30 omits Sun and Moon per convention. Does not return Shadbala (asterwise_get_chart_strength) or radix-only graha drishti (asterwise_get_natal_chart). SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_natal_chart — anchor D1 before reading higher vargas. AFTER: None. SECTION: INPUT CONTRACT chart_type enum is enforced locally (Pydantic). BirthData follows the global contract. SECTION: OUTPUT CONTRACT When chart_type is provided: data — object with a single key (the requested chart, e.g. 'D9'): planet_name (Sun..Ketu) → { sign (string), sign_num (int), degree (float) } When chart_type is omitted: data — object with keys D1, D2, D3, D4, D7, D9, D10, D12, D16, D20, D24, D27, D30, D40, D45, D60 — each: planet_name → { sign, sign_num, degree } (D30 excludes Sun and Moon entries.) 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): — Invalid chart_type enum → MCP INVALID_PARAMS (via Pydantic) INVALID_PARAMS (upstream): — None — unknown ayanamsa for a varga surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR SECTION: DO NOT CONFUSE WITH asterwise_get_natal_chart — radix chart with houses and drishti, not the full varga dictionary. asterwise_get_chart_strength — embeds vargas inside strength metrics, different primary payload.
    Connector
  • Lists Lal Kitab style totkas per stressed planet from BirthData with priority tiers and typed action rows (remedy, donation, keep, avoid). SECTION: WHAT THIS TOOL COVERS Outputs data.system, ayanamsa, and remedies[] entries tying planets to lk context and nested remedies[] instructions. Distinct from classical mantra/gem rows (asterwise_get_remedies). Best interpreted alongside asterwise_get_lal_kitab_chart for house context. SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_lal_kitab_chart — see chart before applying totkas. AFTER: None. SECTION: INPUT CONTRACT BirthData only. SECTION: OUTPUT CONTRACT data.system (string — 'lal_kitab') data.ayanamsa (string) data.remedies[] — each: planet (string) lk_house (int) rashi (string) pucca_ghar (bool) kachcha_ghar (bool) uchcha (bool) neecha (bool) priority (string — 'high', 'medium', or 'low') remedies[] — { type (string — 'remedy', 'donation', 'keep', or 'avoid'), action (string) } 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): None — BirthData Pydantic only. INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Empty remedies[] possible when no graha needs attention — still success if upstream returns so. SECTION: DO NOT CONFUSE WITH asterwise_get_remedies — mantra/gem prescriptions, not Lal Kitab totkas. asterwise_get_gemstone_recommendations — classical Ratna focus, not household remedies.
    Connector
  • Produces the Lal Kitab house and planet schema plus Rin (debt) flags from BirthData using Lal Kitab placement rules. Lal Kitab uses a distinct astrological system from standard Vedic computation, with its own house-based remedies. SECTION: WHAT THIS TOOL COVERS Returns data.system 'lal_kitab', ayanamsa, planets{} with lk_house and pucca/kachcha flags, twelve houses{} with occupants and significations, and rin_analysis with boolean debts, active_rins[], and rin_remedies[] rows. Do not merge these houses with asterwise_get_natal_chart Bhava Chalit without explicit user intent — frameworks differ. SECTION: WORKFLOW BEFORE: None — standalone for Lal Kitab queries. AFTER: asterwise_get_lal_kitab_remedies — practical totkas aligned to this chart. SECTION: INPUT CONTRACT BirthData global contract; mixing interpretive systems in prose is a caller concern, not validated here. SECTION: OUTPUT CONTRACT data.system (string — 'lal_kitab') data.ayanamsa (string) data.planets{} — Sun..Ketu: longitude (float) rashi_index (int) rashi (string) lk_house (int — 1–12) house_lord (string) is_retrograde (bool) pucca_ghar (bool) kachcha_ghar (bool) uchcha (bool) neecha (bool) pucca_house (int) kachcha_house (int) data.houses{} — keys '1'..'12': house (int) rashi_index (int) rashi (string) lord (string) occupants[] (string array) signification (string) has_benefic (bool) has_malefic (bool) data.rin_analysis: pitru_rin, matru_rin, bhai_rin, stri_rin, dev_rin (bool) active_rins[] (string array) rin_remedies[] — { rin (string), planet (string), totka (string) } 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): None — BirthData Pydantic only. INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Lal Kitab houses are not interchangeable with cusps. SECTION: DO NOT CONFUSE WITH asterwise_get_natal_chart — classical radix, not Lal Kitab lk_house logic. asterwise_get_lal_kitab_remedies — remedy list without full chart geometry.
    Connector
  • Calls atmakaraka and ishta-devata endpoints sequentially and merges their payloads into top-level atmakaraka and ishta_devata objects for one BirthData. SECTION: WHAT THIS TOOL COVERS Returns the karaka layer: eight-karaka mapping, soul significator graha, navamsa-based ishta devata inference, twelfth-house occupants, and D9 positions map. It is not general prediction, medical timing, or matchmaking scoring. Two planets tied by degree use classical highest-longitude resolution without raising an error. SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_natal_chart — understand chart basics before devotional pointers. AFTER: None. SECTION: INPUT CONTRACT Wrapper returns { atmakaraka: <upstream dict>, ishta_devata: <upstream dict> } — not a flat data.* root; consumers must read nested .data fields inside each branch per upstream shape. SECTION: OUTPUT CONTRACT Top-level merge: atmakaraka — upstream POST /v1/astro/atmakaraka body; use atmakaraka.data: karaka_to_planet{} (eight karakas to planet names) planet_to_karaka{} atmakaraka (string) atmakaraka_sign (string) atmakaraka_nakshatra (string) details{} — per karaka: planet, rashi, nakshatra, longitude ishta_devata — upstream POST /v1/astro/ishta-devta body; use ishta_devata.data: atmakaraka (string) karakamsha_lagna (string) karakamsha_lagna_index (int) jivanmuktamsa_planet (string) navamsa_lagna (string) navamsa_lagna_index (int) twelfth_house_sign (string) twelfth_house_index (int) planets_in_12th[] (string array) ishta_devta_planet (string) deity (string) description (string) method (string) d9_positions{} — per planet: { sign (string), sign_num (int) } 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): None — BirthData validated via Pydantic only. INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout on either sequential call → MCP INTERNAL_ERROR Edge cases: — Identical-degree planets: classical tie-break applies; no error. SECTION: DO NOT CONFUSE WITH asterwise_get_natal_chart — general chart; does not compute ishta devata workflow. asterwise_get_char_dasha — timing system using karakas, not deity discovery.
    Connector
  • Evaluates Saturn's seven-and-a-half-year Moon-sign cycle phases against natal data for the current day and returns intensity, upcoming cycles, and historical rows. SECTION: WHAT THIS TOOL COVERS Sade Sati mechanics: natal Moon sign in English, three reference signs (rising/peak/setting), active flag, current phase label, intensity score/label, next occurrence metadata, all_periods[] timeline with nested phase objects, mitigation booleans. "Today" is implicit — no date parameter. Signs are English, not Sanskrit. It is not general Gochar (asterwise_get_gochar) or dasha overlay (asterwise_get_dasha_transits). SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_natal_chart — confirm Moon sign context. AFTER: asterwise_get_gochar — broader transit canvas if needed. SECTION: INPUT CONTRACT No explicit query date — API pins to current day. BirthData global contract applies. SECTION: OUTPUT CONTRACT data.natal_moon_sign (string — English, e.g. 'Libra') data.natal_moon_sign_index (int — 0–11) data.sade_sati_signs: rising (string) peak (string) setting (string) data.is_currently_active (bool) data.current_phase (string — 'rising', 'peak', 'setting', or null) data.current_phase_description (string or null) data.intensity_score (int — 0–10) data.intensity_label (string — 'low', 'moderate', or 'high') data.next_sade_sati: starts (string — YYYY-MM-DD) phase (string) years_away (float) data.all_periods[] — each: sade_sati_number (int) overall_start (string — YYYY-MM-DD) overall_end (string — YYYY-MM-DD) duration_years (float) phases: rising — { name, description, start, end, saturn_sign, intensity } peak — same shape setting — same shape data.mitigated_by_own_sign (bool) data.mitigated_by_exaltation (bool) 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): None — BirthData Pydantic only. INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — English sign names throughout — do not expect Sanskrit. SECTION: DO NOT CONFUSE WITH asterwise_get_gochar — nine-planet daily scan including sade_sati_active flag but less Sade Sati detail than this tool. asterwise_get_transits — ingress/station feed, not Moon-focused Saturn phase model.
    Connector
  • Computes Gochar against the natal Moon and Lagna and returns per-planet transit longitudes, houses, AVK scores, vedha flags, and a roll-up summary. SECTION: WHAT THIS TOOL COVERS Produces a transit snapshot: natal Moon and ascendant signs, nine graha transit rows with nakshatra/pada, houses from Moon and Lagna, favourability flags, optional Ashtakavarga bindu (null for Rahu/Ketu), vedha state, interpretation strings, themes, and quality labels, plus summary counts and sade sati / chandra ashtama flags. It does not list ingress events over a range (asterwise_get_transits), correlate with Vimshottari (asterwise_get_dasha_transits), or return Panchanga elements. SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_natal_chart — anchors what "natal" means for the same birth record. AFTER: asterwise_get_dasha_transits — adds dasha-lord correlation for today. SECTION: INPUT CONTRACT target_date (string, optional — YYYY-MM-DD): date to compute transits for; defaults to today if omitted. BirthData follows the global contract (time='00:00' accepted without unknown-time detection). SECTION: OUTPUT CONTRACT data.natal: moon_sign (string) moon_sign_index (int) ascendant_sign (string) ascendant_sign_index (int) data.target_date (string — YYYY-MM-DD, today) data.transits[] — nine objects (Sun through Ketu): planet (string) transit_sign (string) transit_sign_index (int) transit_degree (float) is_retrograde (bool) nakshatra (string) nakshatra_pada (int) house_from_moon (int — 1–12) house_from_lagna (int — 1–12) is_favorable_from_moon (bool) is_favorable_from_lagna (bool) bindu_override (bool) vedha_active (bool) vedha_blocking_planet (string or null) ashtakavarga_score (int or null — null for Rahu and Ketu) interpretation (string) themes[] (string array) quality (string — 'favorable' or 'unfavorable') data.summary: favorable_count (int) unfavorable_count (int) vedha_blocked_count (int) overall_score (int) sade_sati_active (bool) sade_sati_phase (string or null) sade_sati_interpretation (object or null — populated when sade_sati_active is true; contains phase-specific prose for rising, peak, or setting phase of Sade Sati) chandra_ashtama_active (bool) 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): — target_date must match YYYY-MM-DD when provided (Pydantic pattern on the tool schema) → MCP INVALID_PARAMS INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — ashtakavarga_score is null for Rahu and Ketu. SECTION: DO NOT CONFUSE WITH asterwise_get_transits — ingress and station tables for a chosen date window, not a single-day Gochar snapshot. asterwise_get_dasha_transits — scores how transits meet active dasha lords, not the full nine-planet Gochar row set.
    Connector
  • Computes Panchanga elements for one calendar date at a geographic location and returns tithi, vara, nakshatra, yoga, karana, and end times in UTC. SECTION: WHAT THIS TOOL COVERS Derives classical Panchanga limbs from sidereal astronomy for the given date, latitude, longitude, and timezone — no birth time or natal chart. data.yoga here is the Panchanga Yoga (Sun+Moon nakshatra composite), wholly separate from natal yogas in asterwise_get_yogas. It does not score muhurta windows across ranges (asterwise_get_muhurta), list Choghadiya slices (asterwise_get_choghadiya), or monthly calendars (asterwise_get_panchanga_calendar). SECTION: WORKFLOW BEFORE: None — this tool is standalone. AFTER: asterwise_get_choghadiya — same-day slot quality for the location. SECTION: INPUT CONTRACT date must be YYYY-MM-DD (Pydantic pattern on LocationInput). lat/lon bounds are validated locally. Upstream rejects calendar dates outside 1900–2100. timezone defaults to Asia/Kolkata when the caller leaves the default in LocationInput. SECTION: OUTPUT CONTRACT data.tithi: number (int — 1–30) name (string) paksha (string — 'Shukla' or 'Krishna') degrees_elapsed (float) degrees_remaining (float) end_time (string — ISO UTC) data.vara: number (int — 1=Ravivar through 7=Shanivar) name (string) lord (string) end_time (string) data.nakshatra: index (int — 0–26) name (string) pada (int — 1–4) degrees_elapsed (float) degrees_remaining (float) end_time (string — ISO UTC) data.yoga: index (int — 0–26) name (string) is_inauspicious (bool) degrees_elapsed (float) end_time (string — ISO UTC) data.karana: number (int) name (string) degrees_elapsed (float) degrees_remaining (float) end_time (string — ISO UTC) 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 FAST_LOOKUP SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): — date not YYYY-MM-DD or invalid calendar day → MCP INVALID_PARAMS — lat/lon outside allowed ranges → MCP INVALID_PARAMS INVALID_PARAMS (upstream): — None — dates outside 1900–2100 surface as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Panchanga yoga is unrelated to asterwise_get_yogas natal combinations. SECTION: DO NOT CONFUSE WITH asterwise_get_yogas — natal chart yogas, not Panchanga Sun–Moon yoga. asterwise_get_panchanga_calendar — whole-month daily rows, not a single day.
    Connector
  • Returns one row per civil day for a calendar month at a location with condensed tithi, vara, nakshatra, yoga, karana, and rahu_kaal columns. SECTION: WHAT THIS TOOL COVERS Month-wide Panchanga suitable for planners; each day includes ending times where applicable and local Rahu Kaal bounds. Year must be 1900–2100 and month 1–12 (Pydantic on PanchangaCalendarInput). It is not single-day detailed Panchanga (asterwise_get_panchanga) nor muhurta search (asterwise_get_muhurta). SECTION: WORKFLOW BEFORE: None — this tool is standalone. AFTER: asterwise_get_panchanga — expand any single day at full detail. SECTION: INPUT CONTRACT year/month/lat/lon validated locally. Timezone handling follows upstream response fields (data.timezone echo). SECTION: OUTPUT CONTRACT data.year (int) data.month (int) data.timezone (string) data.ayanamsa (string) data.days[] — 28–31 objects: date (string — YYYY-MM-DD) tithi — { name (string), number (int), paksha (string), end_time (string — ISO UTC) } vara — { name (string), number (int), lord (string) } nakshatra — { name (string), index (int), pada (int), end_time (string — ISO UTC) } yoga — { name (string), index (int), is_inauspicious (bool), end_time (string — ISO UTC) } karana — { name (string), number (int), end_time (string — ISO UTC) } rahu_kaal — { start (string — HH:MM local), end (string — HH:MM local) } 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 FAST_LOOKUP SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): — year outside 1900–2100 → MCP INVALID_PARAMS — month outside 1–12 → MCP INVALID_PARAMS — lat/lon out of range → MCP INVALID_PARAMS INVALID_PARAMS (upstream): — None — further rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Day count follows the civil month (28–31 entries). SECTION: DO NOT CONFUSE WITH asterwise_get_panchanga — deep single-day Panchanga with degree fields, not a month grid. asterwise_get_muhurta — activity-ranked windows, not a passive calendar.
    Connector
  • Builds a KP natal chart with sub-lords on grahas and twelve cusps from BirthData using the KP ayanamsa in the response. SECTION: WHAT THIS TOOL COVERS Krishnamurti Paddhati charting: lagna row, planet rows with nakshatra_index and sub_lord, house_cusps with matching lords. Recommend BirthData.ayanamsa='kp' for coherent physics — any enum value is accepted locally and forwarded. Accurate birth time matters; midnight placeholder yields unreliable sub-lords for event timing. Not radix (asterwise_get_natal_chart) nor prashna (asterwise_get_prashna_chart). SECTION: WORKFLOW BEFORE: RECOMMENDED — cross-check birth record before trusting sub-lords. AFTER: asterwise_get_kp_significators — house-level significator chains. SECTION: INPUT CONTRACT ayanamsa choice is not forced locally — mismatched settings still post to upstream. time='00:00' is accepted without warning. SECTION: OUTPUT CONTRACT data.ayanamsa (string — 'kp') data.lagna: rashi (string) rashi_index (int) longitude (float) nakshatra_lord (string) sub_lord (string) data.planets{} — Sun..Ketu: longitude (float) rashi_index (int) rashi (string) degree (float) is_retrograde (bool) house (int) nakshatra_index (int — 0–26) nakshatra_lord (string) sub_lord (string) data.house_cusps{} — keys '1'..'12': longitude (float) rashi_index (int) rashi (string) nakshatra_lord (string) sub_lord (string) 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): None — BirthData Pydantic only. INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Sub-lord chains degrade when true birth time unknown. SECTION: DO NOT CONFUSE WITH asterwise_get_natal_chart — classical bundle without KP sub-lords. asterwise_get_kp_ruling_planets — live moment rulers, not natal cusps.
    Connector
  • Aggregates Shadbala, Bhavbala, Vimshopaka (with per-varga contributions), embedded sixteen vargas, Ashtakavarga, karaka maps, and graha yuddha pairs from BirthData. SECTION: WHAT THIS TOOL COVERS Returns chart strength computations: six-planet Shadbala breakdowns with sthana/kala detail objects, twelve-house Bhavbala totals, Vimshopaka scores with threshold bands and per-D1..D60 fractions, full divisional chart mirror of asterwise_get_divisional_chart, Ashtakavarga mirror of asterwise_get_ashtakavarga, karaka_to_planet / planet_to_karaka, and graha_yuddha.war_pairs. It does not label named yogas (asterwise_get_yogas) or doshas (asterwise_get_doshas). SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_natal_chart — contextualises houses before reading bala tables. AFTER: asterwise_get_yogas — optional configuration pass after strength review. SECTION: INPUT CONTRACT BirthData only; no extra toggles. SECTION: OUTPUT CONTRACT data.shadbala — keyed by Sun..Saturn (excludes Rahu/Ketu): planet (string) sthana_bala, dig_bala, dig_bala_virupas, dig_bala_rupas, kala_bala, cheshta_bala, naisargika_bala, drik_bala, yuddhabala_adjustment, total (float), ratio (float), required_minimum (float), is_purna_bala (bool) sthana_bala_details — { uchcha, saptavargaja, ojhayugma, kendradi, drekkana, total } kala_bala_details — { nathonnatha, paksha, tribhaga, vara, hora, ayana, total } data.bhavbala — keys '1'..'12': bhavadhipati_bala, bhava_dig_bala, bhava_drik_bala, total (float) data.vimshopaka_bala — keyed by planet including Rahu/Ketu: vimshopaka_score (float, max 20) threshold (string — 'zero_capacity', 'moderate', 'good', or 'extremely_auspicious') per_varga — keyed by D1..D60: { contribution (float), fraction (float) } data.divisional_charts — same nested schema as asterwise_get_divisional_chart data.ashtakavarga — same schema as asterwise_get_ashtakavarga data.karakas — { karaka_to_planet{}, planet_to_karaka{} } data.graha_yuddha — { war_pairs[] } Threshold guide: 15+ extremely_auspicious, 10–15 good, 5–10 moderate, below 5 zero_capacity. 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 (~800ms) SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): None — BirthData only; Pydantic handles field bounds. INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Large payload due to embedded vargas and Ashtakavarga duplicates. SECTION: DO NOT CONFUSE WITH asterwise_get_yogas — boolean yoga catalogue, not numeric bala. asterwise_get_ashtakavarga — standalone AVK when strength bundle is not needed.
    Connector
  • Computes full Ashtakavarga bindu matrices, trikona and ekadhipatya reductions, and sarva totals from BirthData for transit support analysis. SECTION: WHAT THIS TOOL COVERS Ashtakavarga: bhinna tables per contributing body (including Lagna), reduced variants, sarva and sarva_reduced arrays, after_trikona/after_ekadhipatya aggregates, birth_time_provided flag. Threshold lore: twenty-eight or more sarva bindus supports transits; below twenty-five implies friction. Not Shadbala totals (asterwise_get_chart_strength) though that bundle duplicates this data when needed. SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_natal_chart — confirm chart before AVK study. AFTER: asterwise_get_gochar — uses AVK scores in transit rows. SECTION: INPUT CONTRACT BirthData only. SECTION: OUTPUT CONTRACT data.bhinna — keys Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Lagna → each twelve-element int array (rashi index 0=Mesha .. 11=Meena), bindu 0..8 data.bhinna_after_trikona — seven planets (no Lagna), same array shape data.bhinna_after_ekadhipatya — same after further reduction data.sarva[] — twelve ints data.sarva_reduced[] — twelve ints data.after_trikona[] — twelve ints data.after_ekadhipatya[] — twelve ints data.birth_time_provided (bool) 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): None — BirthData Pydantic only. INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Rahu/Ketu are not classical bhinna contributors per tradition. SECTION: DO NOT CONFUSE WITH asterwise_get_chart_strength — primary payload is Shadbala/Vimshopaka, though it embeds AVK too. asterwise_get_gochar — applies AVK scores to transits rather than exposing raw matrices.
    Connector