Casts a Prashna chart for the query instant using supplied date, time, place, and a single-topic keyword, then returns houses, Moon diagnostics, verdict, and cusps.
SECTION: WHAT THIS TOOL COVERS
Horary workflow: maps one of the approved keywords to a primary house, evaluates Moon (phase, VOC, affliction), applies ithsala flags, aggregates graha dignities/houses from Prashna Lagna, and emits verdict/confidence/score. Not natal life analysis (asterwise_get_natal_chart) and not KP cusps from birth (asterwise_get_kp_chart).
SECTION: WORKFLOW
BEFORE: None — standalone for horary.
AFTER: None.
SECTION: INPUT CONTRACT
question must be exactly one of: self, wealth, siblings, property, children, health, marriage, death, travel, career, gains, loss. Full sentences are not validated locally and are rejected upstream → MCP INTERNAL_ERROR at the tool layer. PrashnaInput enforces date/time/lat/lon/ayanamsa patterns locally.
SECTION: OUTPUT CONTRACT
data.ayanamsa (string)
data.question (string — keyword echoed)
data.primary_house (int)
data.ithsala_applying (bool)
data.ithsala_separating (bool)
data.query_utc (string — ISO UTC)
data.lagna:
rashi_index (int)
rashi (string)
longitude (float)
lord (string)
data.house_analysis:
house (int)
rashi_index (int)
rashi (string)
lord (string)
lord_dignity (string)
lord_house (int)
lord_longitude (float)
occupants[] (string array)
data.moon:
longitude (float)
rashi_index (int)
rashi (string)
nakshatra (string)
phase (string — 'waxing' or 'waning')
dignity (string)
void_of_course (bool)
afflicted_moon (bool)
applying_to_benefic (bool)
data.verdict:
verdict (string — 'favorable', 'mixed', or 'unfavorable')
confidence (string — 'high', 'medium', or 'low')
score (int — negative unfavorable, positive favorable)
data.planets{} — per planet: longitude (float), rashi_index (int), rashi (string), house (int), is_retrograde (bool), dignity (string)
data.house_cusps{} — keys '1'..'12': rashi_index (int), rashi (string), lord (string), longitude (float)
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):
— PrashnaInput Pydantic violations (date, time, lat, lon, ayanamsa) → MCP INVALID_PARAMS
INVALID_PARAMS (upstream):
— None — bad question tokens surface as MCP INTERNAL_ERROR at the tool layer.
INTERNAL_ERROR:
— Any upstream API failure or timeout → MCP INTERNAL_ERROR
Edge cases:
— Moon void-of-course flagged classically negative for outcomes.
SECTION: DO NOT CONFUSE WITH
asterwise_get_natal_chart — requires birth data, not query-moment prashna.
asterwise_get_kp_chart — natal KP from birth time, not horary keyword mapping.