# Astro Agents - full reference (engine 1.0.1) > Deterministic Western + Vedic astrology API for AI agents: JPL DE440 ephemeris, no LLM, reproducible SHA-256 hashes. Pay per call with **x402** (USDC on Base or Solana) or **MPP** (Tempo). No account, no API key. First 3 calls free per caller (x402 Sign-In-With-X). ## Trust and reproducibility - Positions from NASA/JPL DE440 (NASA/JPL), 1800-01-01..2200-01-01, via Skyfield: geocentric apparent, true equinox of date, IAU 2006/2000A. - Historical time zones resolved for you (IANA tz database, DST of the era, Local Mean Time); ambiguous or non-existent local times are flagged, never guessed. - Deterministic, no LLM: same input -> same bytes. Every response carries meta.input_sha256 and meta.result_sha256 (also as X-Input-SHA256 / X-Result-SHA256 headers); POST /v1/verify recomputes one. - Every convention is in the response: ayanamsa (name, true and mean value), house system, orbs, node type, dasha year length, dosha and koota rule sets. - Cross-validated against an independent engine (XALEN, Apache-2.0): ayanamsas agree to < 0.1", 15/16 divisional charts identically, all 11 house systems in structure. Verify any result: `POST /v1/verify` with `{"result": , "result_sha256": "..."}`. The hash is SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals (0.0036 arcsec). ## Common input - `datetime`: local clock time at the place, ISO 8601 (`1990-05-15T14:30`), or with an explicit offset (`1990-05-15T14:30:00+02:00`). Or `date` (YYYY-MM-DD) + `time` (HH:MM). Without a time: computed at 12:00 with a TIME_UNKNOWN warning. - `latitude`, `longitude`: decimal degrees, north and east positive. - `timezone` (optional): IANA name. Default: resolved from the coordinates, with the offset in force on that date (historical DST, Local Mean Time before standard time). - `time_basis` (optional): `civil` (default), `utc`, `lmt` (Local Mean Time), `true_solar` (apparent solar time). - `ambiguous_time` (optional): `earlier` (default) / `later`, for the repeated hour at DST fall-back. ## Errors 400 with `{error, code, field}` (e.g. INVALID_DATETIME, MISSING_LOCATION, OUT_OF_EPHEMERIS_RANGE, HOUSES_UNDEFINED_AT_LATITUDE). Never charged. 402: payment required (x402 + MPP offers). Supported dates: 1800-01-01..2200-01-01. ## POST /v1/time/resolve - Birth time resolver ($0.01) Local birth time + place -> exact UT, historical UTC offset, Delta T, Local Mean Time, true solar time. The step LLMs most often get wrong. Resolves the IANA time zone from coordinates, applies the offset in force on that date (historical DST, Local Mean Time before standard time), flags ambiguous or non-existent local times instead of guessing, and returns Julian Days (UT/TT), Delta T, Local Mean Time, true (apparent) solar time and the equation of time. MCP tool: `resolve_birth_time`. A2A skill: `time/resolve`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." } }, "required": [], "description": "Coordinates or a timezone are needed to interpret a local time." } ``` Example request: ```json { "datetime": "1947-08-15T00:00", "latitude": 28.6139, "longitude": 77.209 } ``` Example response (real, lists shortened): ```json { "endpoint": "time/resolve", "result": { "time": { "local_input": "1947-08-15T00:00", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "1947-08-14T18:30:00Z", "julian_day_ut": 2432412.270996, "julian_day_tt": 2432412.271322, "delta_t_seconds": 28.109, "time_known": true, "local_mean_time": "1947-08-14T23:38:50", "true_solar_time": "1947-08-14T23:34:10", "equation_of_time_minutes": -4.6635 }, "location": { "latitude": 28.6139, "longitude": 77.209 }, "warnings": [ { "code": "HISTORICAL_TIMEZONE", "message": "offset +05:30 for Asia/Kolkata comes from the IANA tz database, whose pre-1970 history is best-effort. If the birth record states the clock offset, pass it inside 'datetime' (e.g. ...T14:30+01:00)." } ] }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "f0c3fe0873f0faf48339eb52c7ea115f4e0cdcb93431e85199c9a41d74f2929a", "result_sha256": "c44090a343c5399be2ecb9728396283b91a07114611f8cd4db69d21da16fe618", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/western/positions - Planetary positions ($0.01) Tropical (or sidereal) longitudes, latitudes, speeds and retrograde flags of Sun..Pluto, nodes, Lilith. Geocentric apparent positions from NASA/JPL DE440 for any moment 1800-2200, with sign, degree, element, modality, daily speed and retrograde status. Location is optional (only used to interpret a local time). MCP tool: `planet_positions`. A2A skill: `western/positions`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "options": { "type": "object", "properties": { "house_system": { "type": "string", "enum": [ "alcabitius", "campanus", "equal", "koch", "meridian", "morinus", "placidus", "porphyry", "regiomontanus", "topocentric", "whole_sign" ], "default": "placidus" }, "zodiac": { "type": "string", "enum": [ "tropical", "sidereal" ], "default": "tropical" }, "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri", "description": "Only with zodiac=sidereal." }, "points": { "description": "'all' or a list from ['sun', 'moon', 'mercury', 'venus', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune', 'pluto', 'mean_node', 'true_node', 'mean_lilith']. Default: 10 planets + true node + mean Lilith.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "mean_node", "true_node", "mean_lilith" ] } } ] }, "aspects": { "description": "'all' or a list from ['conjunction', 'opposition', 'trine', 'square', 'sextile', 'quincunx', 'semisextile', 'semisquare', 'sesquiquadrate', 'quintile', 'biquintile']. Default: the 5 majors.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "conjunction", "opposition", "trine", "square", "sextile", "quincunx", "semisextile", "semisquare", "sesquiquadrate", "quintile", "biquintile" ] } } ] }, "orbs": { "type": "object", "additionalProperties": { "type": "number", "minimum": 0, "maximum": 15 }, "description": "Override orbs per aspect, degrees." }, "luminary_orb_bonus": { "type": "number", "minimum": 0, "maximum": 5, "default": 2 } } } }, "required": [] } ``` Example request: ```json { "datetime": "2026-10-01T12:00:00Z" } ``` Example response (real, lists shortened): ```json { "endpoint": "western/positions", "result": { "subject": { "time": { "local_input": "2026-10-01T12:00:00Z", "time_basis": "civil", "timezone": null, "timezone_source": "offset_in_datetime", "utc_offset": "+00:00", "is_dst": null, "utc": "2026-10-01T12:00:00Z", "julian_day_ut": 2461315.000001, "julian_day_tt": 2461315.000801, "delta_t_seconds": 69.091, "time_known": true } }, "settings": { "zodiac": "tropical" }, "points": [ { "point": "sun", "name": "Sun", "longitude": 188.33017, "sign": "Libra", "sign_index": 6, "degree_in_sign": 8.33017, "position": "8°19'49\" Libra", "element": "air", "modality": "cardinal", "latitude": 0.000187, "speed_longitude": 0.982927, "retrograde": false, "distance_au": 1.001186 }, { "point": "moon", "name": "Moon", "longitude": 71.048302, "sign": "Gemini", "sign_index": 2, "degree_in_sign": 11.048302, "position": "11°02'54\" Gemini", "element": "air", "modality": "mutable", "latitude": 5.056642, "speed_longitude": 14.283559, "retrograde": false, "distance_au": 0.002469 }, { "point": "mercury", "name": "Mercury", "longitude": 211.339088, "sign": "Scorpio", "sign_index": 7, "degree_in_sign": 1.339088, "position": "1°20'21\" Scorpio", "element": "water", "modality": "fixed", "latitude": -1.80707, "speed_longitude": 1.313986, "retrograde": false, "distance_au": 1.169303 } ] }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "34b719359ced9d2d01130742d40810c8dcebdc0abf6c11e22e9161b55c3cd5f6", "result_sha256": "269109e17efc86d60897373ac8244ecff90f9c71f9dd1836d848fddba92fcae1", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/western/aspects - Aspects ($0.02) Aspects (with orb, exactness, applying/separating) for a moment, or for any longitudes you supply. Either give a moment (datetime, optional place) and get the aspects among all planets, or give 'longitudes' {name: degrees} and get the pure geometry. Orbs are explicit and overridable. MCP tool: `aspects`. A2A skill: `western/aspects`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "longitudes": { "type": "object", "description": "Optional {name: degrees} or {name: {longitude, speed}}; when given, no ephemeris is used.", "additionalProperties": true }, "options": { "type": "object", "properties": { "house_system": { "type": "string", "enum": [ "alcabitius", "campanus", "equal", "koch", "meridian", "morinus", "placidus", "porphyry", "regiomontanus", "topocentric", "whole_sign" ], "default": "placidus" }, "zodiac": { "type": "string", "enum": [ "tropical", "sidereal" ], "default": "tropical" }, "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri", "description": "Only with zodiac=sidereal." }, "points": { "description": "'all' or a list from ['sun', 'moon', 'mercury', 'venus', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune', 'pluto', 'mean_node', 'true_node', 'mean_lilith']. Default: 10 planets + true node + mean Lilith.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "mean_node", "true_node", "mean_lilith" ] } } ] }, "aspects": { "description": "'all' or a list from ['conjunction', 'opposition', 'trine', 'square', 'sextile', 'quincunx', 'semisextile', 'semisquare', 'sesquiquadrate', 'quintile', 'biquintile']. Default: the 5 majors.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "conjunction", "opposition", "trine", "square", "sextile", "quincunx", "semisextile", "semisquare", "sesquiquadrate", "quintile", "biquintile" ] } } ] }, "orbs": { "type": "object", "additionalProperties": { "type": "number", "minimum": 0, "maximum": 15 }, "description": "Override orbs per aspect, degrees." }, "luminary_orb_bonus": { "type": "number", "minimum": 0, "maximum": 5, "default": 2 } } } }, "required": [] } ``` Example request: ```json { "longitudes": { "sun": 54.4, "moon": 297.4, "saturn": 295.2, "venus": 12.8 } } ``` Example response (real, lists shortened): ```json { "endpoint": "western/aspects", "result": { "settings": { "aspects": { "types": [ "conjunction", "opposition", "trine" ], "orbs": { "conjunction": 8.0, "opposition": 8.0, "trine": 7.0, "square": 7.0, "sextile": 5.0 }, "luminary_orb_bonus": 2.0 }, "source": "longitudes" }, "aspects": [ { "point_a": "sun", "point_b": "saturn", "aspect": "trine", "angle": 120.0, "orb": 0.8, "orb_allowed": 9.0, "exactness_pct": 91.1 }, { "point_a": "moon", "point_b": "saturn", "aspect": "conjunction", "angle": 0.0, "orb": 2.2, "orb_allowed": 10.0, "exactness_pct": 78.0 }, { "point_a": "sun", "point_b": "moon", "aspect": "trine", "angle": 120.0, "orb": 3.0, "orb_allowed": 9.0, "exactness_pct": 66.7 } ] }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "2cdc593e3cfb8d86604f58a0e70b0ded76974a0e25a362e32797bc132b3e61cf", "result_sha256": "d9b6880d14220f7cafea3de8822c09202288b87349b8cd71f67e169591ad39f0", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/western/natal - Western natal chart ($0.06) Complete natal chart: planets in signs and houses, ascendant, MC, 11 house systems, aspects, summary. Everything a natal reading needs, computed exactly: positions, house cusps (Placidus by default; Koch, Whole Sign, Equal, Porphyry, Regiomontanus, Campanus, Topocentric, Alcabitius, Morinus, Meridian), ascendant/MC/DSC/IC, aspects with orbs and applying/separating state, element and modality balance, chart ruler, sect and Part of Fortune. MCP tool: `natal_chart`. A2A skill: `western/natal`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "options": { "type": "object", "properties": { "house_system": { "type": "string", "enum": [ "alcabitius", "campanus", "equal", "koch", "meridian", "morinus", "placidus", "porphyry", "regiomontanus", "topocentric", "whole_sign" ], "default": "placidus" }, "zodiac": { "type": "string", "enum": [ "tropical", "sidereal" ], "default": "tropical" }, "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri", "description": "Only with zodiac=sidereal." }, "points": { "description": "'all' or a list from ['sun', 'moon', 'mercury', 'venus', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune', 'pluto', 'mean_node', 'true_node', 'mean_lilith']. Default: 10 planets + true node + mean Lilith.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "mean_node", "true_node", "mean_lilith" ] } } ] }, "aspects": { "description": "'all' or a list from ['conjunction', 'opposition', 'trine', 'square', 'sextile', 'quincunx', 'semisextile', 'semisquare', 'sesquiquadrate', 'quintile', 'biquintile']. Default: the 5 majors.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "conjunction", "opposition", "trine", "square", "sextile", "quincunx", "semisextile", "semisquare", "sesquiquadrate", "quintile", "biquintile" ] } } ] }, "orbs": { "type": "object", "additionalProperties": { "type": "number", "minimum": 0, "maximum": 15 }, "description": "Override orbs per aspect, degrees." }, "luminary_orb_bonus": { "type": "number", "minimum": 0, "maximum": 5, "default": 2 } } } }, "required": [ "latitude", "longitude" ] } ``` Example request: ```json { "datetime": "1990-05-15T14:30", "latitude": 48.8566, "longitude": 2.3522 } ``` Example response (real, lists shortened): ```json { "endpoint": "western/natal", "result": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Europe/Paris", "timezone_source": "resolved_from_coordinates", "utc_offset": "+02:00", "is_dst": true, "utc": "1990-05-15T12:30:00Z", "julian_day_ut": 2448027.020834, "julian_day_tt": 2448027.021495, "delta_t_seconds": 57.14, "time_known": true, "local_mean_time": "1990-05-15T12:39:24", "true_solar_time": "1990-05-15T12:43:06", "equation_of_time_minutes": 3.7054 }, "location": { "latitude": 48.8566, "longitude": 2.3522 } }, "settings": { "zodiac": "tropical", "house_system": "placidus", "aspects": { "types": [ "conjunction", "opposition", "trine" ], "orbs": { "conjunction": 8.0, "opposition": 8.0, "trine": 7.0, "square": 7.0, "sextile": 5.0 }, "luminary_orb_bonus": 2.0 } }, "angles": { "ascendant": { "longitude": 160.24557, "sign": "Virgo", "sign_index": 5, "degree_in_sign": 10.24557, "position": "10°14'44\" Virgo", "element": "earth", "modality": "mutable" }, "midheaven": { "longitude": 64.783203, "sign": "Gemini", "sign_index": 2, "degree_in_sign": 4.783203, "position": "4°47'00\" Gemini", "element": "air", "modality": "mutable" }, "descendant": { "longitude": 340.24557, "sign": "Pisces", "sign_index": 11, "degree_in_sign": 10.24557, "position": "10°14'44\" Pisces", "element": "water", "modality": "mutable" }, "imum_coeli": { "longitude": 244.783203, "sign": "Sagittarius", "sign_index": 8, "degree_in_sign": 4.783203, "position": "4°47'00\" Sagittarius", "element": "fire", "modality": "mutable" } }, "houses": [ { "house": 1, "cusp": 160.24557, "sign": "Virgo", "sign_index": 5, "degree_in_sign": 10.24557, "position": "10°14'44\" Virgo", "element": "earth", "modality": "mutable" }, { "house": 2, "cusp": 182.316905, "sign": "Libra", "sign_index": 6, "degree_in_sign": 2.316905, "position": "2°19'01\" Libra", "element": "air", "modality": "cardinal" }, { "house": 3, "cusp": 210.401537, "sign": "Scorpio", "sign_index": 7, "degree_in_sign": 0.401537, "position": "0°24'06\" Scorpio", "element": "water", "modality": "fixed" } ], "sidereal_time": { "armc_deg": 62.829109, "true_obliquity_deg": 23.442164 }, "points": [ { "point": "sun", "name": "Sun", "longitude": 54.416197, "sign": "Taurus", "sign_index": 1, "degree_in_sign": 24.416197, "position": "24°24'58\" Taurus", "element": "earth", "modality": "fixed", "latitude": -1.9e-05, "speed_longitude": 0.964154, "retrograde": false, "distance_au": 1.010905, "house": 9 }, { "point": "moon", "name": "Moon", "longitude": 297.419463, "sign": "Capricorn", "sign_index": 9, "degree_in_sign": 27.419463, "position": "27°25'10\" Capricorn", "element": "earth", "modality": "cardinal", "latitude": -1.124087, "speed_longitude": 12.360083, "retrograde": false, "distance_au": 0.002643, "house": 5 }, { "point": "mercury", "name": "Mercury", "longitude": 38.009973, "sign": "Taurus", "sign_index": 1, "degree_in_sign": 8.009973, "position": "8°00'36\" Taurus", "element": "earth", "modality": "fixed", "latitude": -2.523528, "speed_longitude": -0.118848, "retrograde": true, "distance_au": 0.602159, "house": 9 } ], "aspects": [ { "point_a": "jupiter", "point_b": "uranus", "aspect": "opposition", "angle": 180.0, "orb": 0.362323, "orb_allowed": 8.0, "exactness_pct": 95.5, "state": "separating" }, { "point_a": "jupiter", "point_b": "ascendant", "aspect": "sextile", "angle": 60.0, "orb": 0.699881, "orb_allowed": 5.0, "exactness_pct": 86.0 }, { "point_a": "sun", "point_b": "saturn", "aspect": "trine", "angle": 120.0, "orb": 0.832861, "orb_allowed": 9.0, "exactness_pct": 90.7, "state": "applying" } ], "summary": { "sun_sign": "Taurus", "moon_sign": "Capricorn", "rising_sign": "Virgo", "element_balance": { "earth": 6, "fire": 1, "water": 3 }, "modality_balance": { "fixed": 3, "cardinal": 6, "mutable": 1 }, "retrograde_planets": [ "mercury", "saturn", "uranus" ], "chart_ruler": { "traditional": "Mercury", "modern": "Mercury" }, "sect": "day", "part_of_fortune": { "longitude": 43.248836, "sign": "Taurus", "sign_index": 1, "degree_in_sign": 13.248836, "position": "13°14'56\" Taurus", "element": "earth", "modality": "fixed", "formula": "ASC + Moon - Sun (day) / ASC + Sun - Moon (night)" } } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "bfef1219bc6db2225ab6fd459d5c15b6d448ee730cad073399b878047d800c65", "result_sha256": "be1fb244a2d60d64f2996cbccab5d7603af0c17e9127b5cb558c58e72f56adfe", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/western/transits - Transits ($0.08) Transits to a natal chart at a moment, and exact hit times over a window of up to a year. 'transit': aspects from the sky at a moment to every natal point, with the natal house each transiting planet occupies. 'window': the exact UTC minute every transiting planet perfects each aspect to each natal point over up to 366 days (62 with the Moon), retrograde passes included. MCP tool: `transits`. A2A skill: `western/transits`. Input schema: ```json { "type": "object", "required": [ "natal" ], "properties": { "natal": { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." } }, "required": [ "latitude", "longitude" ], "description": "Birth data." }, "transit": { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." } }, "description": "The transit moment. A bare local time is read in the natal place's zone." }, "window": { "type": "object", "properties": { "start": { "type": "string" }, "end": { "type": "string" }, "include_moon": { "type": "boolean" } }, "description": "UTC dates YYYY-MM-DD, at most 366 days apart." }, "options": { "type": "object", "properties": { "house_system": { "type": "string", "enum": [ "alcabitius", "campanus", "equal", "koch", "meridian", "morinus", "placidus", "porphyry", "regiomontanus", "topocentric", "whole_sign" ], "default": "placidus" }, "zodiac": { "type": "string", "enum": [ "tropical", "sidereal" ], "default": "tropical" }, "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri", "description": "Only with zodiac=sidereal." }, "points": { "description": "'all' or a list from ['sun', 'moon', 'mercury', 'venus', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune', 'pluto', 'mean_node', 'true_node', 'mean_lilith']. Default: 10 planets + true node + mean Lilith.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "mean_node", "true_node", "mean_lilith" ] } } ] }, "aspects": { "description": "'all' or a list from ['conjunction', 'opposition', 'trine', 'square', 'sextile', 'quincunx', 'semisextile', 'semisquare', 'sesquiquadrate', 'quintile', 'biquintile']. Default: the 5 majors.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "conjunction", "opposition", "trine", "square", "sextile", "quincunx", "semisextile", "semisquare", "sesquiquadrate", "quintile", "biquintile" ] } } ] }, "orbs": { "type": "object", "additionalProperties": { "type": "number", "minimum": 0, "maximum": 15 }, "description": "Override orbs per aspect, degrees." }, "luminary_orb_bonus": { "type": "number", "minimum": 0, "maximum": 5, "default": 2 } } } } } ``` Example request: ```json { "natal": { "datetime": "1990-05-15T14:30", "latitude": 48.8566, "longitude": 2.3522 }, "transit": { "datetime": "2026-10-01T12:00" }, "window": { "start": "2026-10-01", "end": "2026-12-31" } } ``` Example response (real, lists shortened): ```json { "endpoint": "western/transits", "result": { "natal": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Europe/Paris", "timezone_source": "resolved_from_coordinates", "utc_offset": "+02:00", "is_dst": true, "utc": "1990-05-15T12:30:00Z", "julian_day_ut": 2448027.020834, "julian_day_tt": 2448027.021495, "delta_t_seconds": 57.14, "time_known": true, "local_mean_time": "1990-05-15T12:39:24", "true_solar_time": "1990-05-15T12:43:06", "equation_of_time_minutes": 3.7054 }, "location": { "latitude": 48.8566, "longitude": 2.3522 } }, "settings": { "zodiac": "tropical", "house_system": "placidus" }, "points": [ { "point": "sun", "name": "Sun", "longitude": 54.416197, "sign": "Taurus", "sign_index": 1, "degree_in_sign": 24.416197, "position": "24°24'58\" Taurus", "element": "earth", "modality": "fixed", "latitude": -1.9e-05, "speed_longitude": 0.964154, "retrograde": false, "distance_au": 1.010905, "house": 9 }, { "point": "moon", "name": "Moon", "longitude": 297.419463, "sign": "Capricorn", "sign_index": 9, "degree_in_sign": 27.419463, "position": "27°25'10\" Capricorn", "element": "earth", "modality": "cardinal", "latitude": -1.124087, "speed_longitude": 12.360083, "retrograde": false, "distance_au": 0.002643, "house": 5 }, { "point": "mercury", "name": "Mercury", "longitude": 38.009973, "sign": "Taurus", "sign_index": 1, "degree_in_sign": 8.009973, "position": "8°00'36\" Taurus", "element": "earth", "modality": "fixed", "latitude": -2.523528, "speed_longitude": -0.118848, "retrograde": true, "distance_au": 0.602159, "house": 9 } ], "angles": { "ascendant": { "longitude": 160.24557, "sign": "Virgo", "sign_index": 5, "degree_in_sign": 10.24557, "position": "10°14'44\" Virgo", "element": "earth", "modality": "mutable" }, "midheaven": { "longitude": 64.783203, "sign": "Gemini", "sign_index": 2, "degree_in_sign": 4.783203, "position": "4°47'00\" Gemini", "element": "air", "modality": "mutable" }, "descendant": { "longitude": 340.24557, "sign": "Pisces", "sign_index": 11, "degree_in_sign": 10.24557, "position": "10°14'44\" Pisces", "element": "water", "modality": "mutable" }, "imum_coeli": { "longitude": 244.783203, "sign": "Sagittarius", "sign_index": 8, "degree_in_sign": 4.783203, "position": "4°47'00\" Sagittarius", "element": "fire", "modality": "mutable" } } }, "settings": { "aspects": { "types": [ "conjunction", "opposition", "trine" ], "orbs": { "conjunction": 2.0, "opposition": 2.0, "trine": 2.0, "square": 2.0, "sextile": 1.5 }, "luminary_orb_bonus": 0.0 } }, "transit": { "time": { "local_input": "2026-10-01T12:00", "time_basis": "civil", "timezone": "Europe/Paris", "timezone_source": "resolved_from_coordinates", "utc_offset": "+02:00", "is_dst": true, "utc": "2026-10-01T10:00:00Z", "julian_day_ut": 2461314.916668, "julian_day_tt": 2461314.917467, "delta_t_seconds": 69.091, "time_known": true, "local_mean_time": "2026-10-01T10:09:24", "true_solar_time": "2026-10-01T10:19:43", "equation_of_time_minutes": 10.3174 }, "points": [ { "point": "sun", "name": "Sun", "longitude": 188.248256, "sign": "Libra", "sign_index": 6, "degree_in_sign": 8.248256, "position": "8°14'54\" Libra", "element": "air", "modality": "cardinal", "latitude": 0.000187, "speed_longitude": 0.982874, "retrograde": false, "distance_au": 1.00121, "natal_house": 2 }, { "point": "moon", "name": "Moon", "longitude": 69.858053, "sign": "Gemini", "sign_index": 2, "degree_in_sign": 9.858053, "position": "9°51'29\" Gemini", "element": "air", "modality": "mutable", "latitude": 5.077628, "speed_longitude": 14.284505, "retrograde": false, "distance_au": 0.002469, "natal_house": 10 }, { "point": "mercury", "name": "Mercury", "longitude": 211.229501, "sign": "Scorpio", "sign_index": 7, "degree_in_sign": 1.229501, "position": "1°13'46\" Scorpio", "element": "water", "modality": "fixed", "latitude": -1.797208, "speed_longitude": 1.315753, "retrograde": false, "distance_au": 1.170399, "natal_house": 3 } ], "aspects_to_natal": [ { "point_a": "transit:moon", "point_b": "natal:ascendant", "aspect": "square", "angle": 90.0, "orb": 0.387516, "orb_allowed": 2.0, "exactness_pct": 80.6, "state": "applying" }, { "point_a": "transit:moon", "point_b": "natal:true_node", "aspect": "trine", "angle": 120.0, "orb": 0.399413, "orb_allowed": 2.0, "exactness_pct": 80.0, "state": "applying" }, { "point_a": "transit:venus", "point_b": "natal:mercury", "aspect": "opposition", "angle": 180.0, "orb": 0.412961, "orb_allowed": 2.0, "exactness_pct": 79.4, "state": "separating" } ] }, "window": { "start": "2026-10-01", "end": "2026-12-31", "include_moon": false, "precision": "+/- 1 minute", "count": 95, "hits": [ { "transit_point": "sun", "natal_point": "uranus", "aspect": "square", "exact_utc": "2026-10-02T08:49Z", "transit_retrograde": false }, { "transit_point": "sun", "natal_point": "jupiter", "aspect": "square", "exact_utc": "2026-10-02T17:40Z", "transit_retrograde": false }, { "transit_point": "sun", "natal_point": "true_node", "aspect": "trine", "exact_utc": "2026-10-03T11:02Z", "transit_retrograde": false } ] } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "08c48864dfa514242c6a89576b3dcf43109c60a7c35c6939e996f3b2acde2f98", "result_sha256": "7e7a7b2568e4629efff09bbaa2b3757bb2da232061273d5aa32beb896236d9f0", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/western/synastry - Synastry ($0.12) Relationship comparison: cross-aspects, house overlays both ways, composite midpoints. Two natal charts compared: every cross-aspect with orbs, where each person's planets fall in the other's houses, harmonious/challenging counts, and composite (midpoint) positions and angles. MCP tool: `synastry`. A2A skill: `western/synastry`. Input schema: ```json { "type": "object", "required": [ "person_a", "person_b" ], "properties": { "person_a": { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." } }, "required": [ "latitude", "longitude" ] }, "person_b": { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." } }, "required": [ "latitude", "longitude" ] }, "options": { "type": "object", "properties": { "house_system": { "type": "string", "enum": [ "alcabitius", "campanus", "equal", "koch", "meridian", "morinus", "placidus", "porphyry", "regiomontanus", "topocentric", "whole_sign" ], "default": "placidus" }, "zodiac": { "type": "string", "enum": [ "tropical", "sidereal" ], "default": "tropical" }, "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri", "description": "Only with zodiac=sidereal." }, "points": { "description": "'all' or a list from ['sun', 'moon', 'mercury', 'venus', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune', 'pluto', 'mean_node', 'true_node', 'mean_lilith']. Default: 10 planets + true node + mean Lilith.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "mean_node", "true_node", "mean_lilith" ] } } ] }, "aspects": { "description": "'all' or a list from ['conjunction', 'opposition', 'trine', 'square', 'sextile', 'quincunx', 'semisextile', 'semisquare', 'sesquiquadrate', 'quintile', 'biquintile']. Default: the 5 majors.", "oneOf": [ { "type": "string", "enum": [ "all" ] }, { "type": "array", "items": { "type": "string", "enum": [ "conjunction", "opposition", "trine", "square", "sextile", "quincunx", "semisextile", "semisquare", "sesquiquadrate", "quintile", "biquintile" ] } } ] }, "orbs": { "type": "object", "additionalProperties": { "type": "number", "minimum": 0, "maximum": 15 }, "description": "Override orbs per aspect, degrees." }, "luminary_orb_bonus": { "type": "number", "minimum": 0, "maximum": 5, "default": 2 } } } } } ``` Example request: ```json { "person_a": { "datetime": "1990-05-15T14:30", "latitude": 48.8566, "longitude": 2.3522 }, "person_b": { "datetime": "1992-08-03T09:15", "latitude": 45.764, "longitude": 4.8357 } } ``` Example response (real, lists shortened): ```json { "endpoint": "western/synastry", "result": { "person_a": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Europe/Paris", "timezone_source": "resolved_from_coordinates", "utc_offset": "+02:00", "is_dst": true, "utc": "1990-05-15T12:30:00Z", "julian_day_ut": 2448027.020834, "julian_day_tt": 2448027.021495, "delta_t_seconds": 57.14, "time_known": true, "local_mean_time": "1990-05-15T12:39:24", "true_solar_time": "1990-05-15T12:43:06", "equation_of_time_minutes": 3.7054 }, "location": { "latitude": 48.8566, "longitude": 2.3522 } }, "points": [ { "point": "sun", "name": "Sun", "longitude": 54.416197, "sign": "Taurus", "sign_index": 1, "degree_in_sign": 24.416197, "position": "24°24'58\" Taurus", "element": "earth", "modality": "fixed", "latitude": -1.9e-05, "speed_longitude": 0.964154, "retrograde": false, "distance_au": 1.010905, "house": 9 }, { "point": "moon", "name": "Moon", "longitude": 297.419463, "sign": "Capricorn", "sign_index": 9, "degree_in_sign": 27.419463, "position": "27°25'10\" Capricorn", "element": "earth", "modality": "cardinal", "latitude": -1.124087, "speed_longitude": 12.360083, "retrograde": false, "distance_au": 0.002643, "house": 5 }, { "point": "mercury", "name": "Mercury", "longitude": 38.009973, "sign": "Taurus", "sign_index": 1, "degree_in_sign": 8.009973, "position": "8°00'36\" Taurus", "element": "earth", "modality": "fixed", "latitude": -2.523528, "speed_longitude": -0.118848, "retrograde": true, "distance_au": 0.602159, "house": 9 } ], "angles": { "ascendant": { "longitude": 160.24557, "sign": "Virgo", "sign_index": 5, "degree_in_sign": 10.24557, "position": "10°14'44\" Virgo", "element": "earth", "modality": "mutable" }, "midheaven": { "longitude": 64.783203, "sign": "Gemini", "sign_index": 2, "degree_in_sign": 4.783203, "position": "4°47'00\" Gemini", "element": "air", "modality": "mutable" }, "descendant": { "longitude": 340.24557, "sign": "Pisces", "sign_index": 11, "degree_in_sign": 10.24557, "position": "10°14'44\" Pisces", "element": "water", "modality": "mutable" }, "imum_coeli": { "longitude": 244.783203, "sign": "Sagittarius", "sign_index": 8, "degree_in_sign": 4.783203, "position": "4°47'00\" Sagittarius", "element": "fire", "modality": "mutable" } } }, "person_b": { "subject": { "time": { "local_input": "1992-08-03T09:15", "time_basis": "civil", "timezone": "Europe/Paris", "timezone_source": "resolved_from_coordinates", "utc_offset": "+02:00", "is_dst": true, "utc": "1992-08-03T07:15:00Z", "julian_day_ut": 2448837.802088, "julian_day_tt": 2448837.802768, "delta_t_seconds": 58.788, "time_known": true, "local_mean_time": "1992-08-03T07:34:20", "true_solar_time": "1992-08-03T07:28:12", "equation_of_time_minutes": -6.1364 }, "location": { "latitude": 45.764, "longitude": 4.8357 } }, "points": [ { "point": "sun", "name": "Sun", "longitude": 131.200205, "sign": "Leo", "sign_index": 4, "degree_in_sign": 11.200205, "position": "11°12'01\" Leo", "element": "fire", "modality": "fixed", "latitude": -5.9e-05, "speed_longitude": 0.957455, "retrograde": false, "distance_au": 1.014645, "house": 11 }, { "point": "moon", "name": "Moon", "longitude": 193.764851, "sign": "Libra", "sign_index": 6, "degree_in_sign": 13.764851, "position": "13°45'53\" Libra", "element": "air", "modality": "cardinal", "latitude": -5.01898, "speed_longitude": 14.171772, "retrograde": false, "distance_au": 0.002477, "house": 2 }, { "point": "mercury", "name": "Mercury", "longitude": 130.450348, "sign": "Leo", "sign_index": 4, "degree_in_sign": 10.450348, "position": "10°27'01\" Leo", "element": "fire", "modality": "fixed", "latitude": -4.877185, "speed_longitude": -0.74787, "retrograde": true, "distance_au": 0.599715, "house": 11 } ], "angles": { "ascendant": { "longitude": 161.713528, "sign": "Virgo", "sign_index": 5, "degree_in_sign": 11.713528, "position": "11°42'49\" Virgo", "element": "earth", "modality": "mutable" }, "midheaven": { "longitude": 67.507493, "sign": "Gemini", "sign_index": 2, "degree_in_sign": 7.507493, "position": "7°30'27\" Gemini", "element": "air", "modality": "mutable" }, "descendant": { "longitude": 341.713528, "sign": "Pisces", "sign_index": 11, "degree_in_sign": 11.713528, "position": "11°42'49\" Pisces", "element": "water", "modality": "mutable" }, "imum_coeli": { "longitude": 247.507493, "sign": "Sagittarius", "sign_index": 8, "degree_in_sign": 7.507493, "position": "7°30'27\" Sagittarius", "element": "fire", "modality": "mutable" } } }, "settings": { "zodiac": "tropical", "house_system": "placidus", "aspects": { "types": [ "conjunction", "opposition", "trine" ], "orbs": { "conjunction": 8.0, "opposition": 8.0, "trine": 7.0, "square": 7.0, "sextile": 5.0 }, "luminary_orb_bonus": 2.0 } }, "cross_aspects": [ { "point_a": "a:true_node", "point_b": "b:mercury", "aspect": "opposition", "angle": 180.0, "orb": 0.192882, "orb_allowed": 8.0, "exactness_pct": 97.6 }, { "point_a": "a:midheaven", "point_b": "b:mars", "aspect": "conjunction", "angle": 0.0, "orb": 0.287077, "orb_allowed": 8.0, "exactness_pct": 96.4 }, { "point_a": "a:mean_lilith", "point_b": "b:mean_lilith", "aspect": "square", "angle": 90.0, "orb": 0.325766, "orb_allowed": 7.0, "exactness_pct": 95.3 } ], "aspect_counts": { "harmonious": 27, "challenging": 28, "conjunctions": 11 }, "house_overlays": { "a_points_in_b_houses": [ { "point": "sun", "position": "24°24'58\" Taurus", "house": 9 }, { "point": "moon", "position": "27°25'10\" Capricorn", "house": 5 }, { "point": "mercury", "position": "8°00'36\" Taurus", "house": 9 } ], "b_points_in_a_houses": [ { "point": "sun", "position": "11°12'01\" Leo", "house": 11 }, { "point": "moon", "position": "13°45'53\" Libra", "house": 2 }, { "point": "mercury", "position": "10°27'01\" Leo", "house": 11 } ] }, "composite_midpoints": { "points": [ { "point": "sun", "longitude": 92.808201, "sign": "Cancer", "sign_index": 3, "degree_in_sign": 2.808201, "position": "2°48'30\" Cancer", "element": "water", "modality": "cardinal" }, { "point": "moon", "longitude": 245.592157, "sign": "Sagittarius", "sign_index": 8, "degree_in_sign": 5.592157, "position": "5°35'32\" Sagittarius", "element": "fire", "modality": "mutable" }, { "point": "mercury", "longitude": 84.23016, "sign": "Gemini", "sign_index": 2, "degree_in_sign": 24.23016, "position": "24°13'49\" Gemini", "element": "air", "modality": "mutable" } ], "angles": { "ascendant": { "longitude": 160.979549, "sign": "Virgo", "sign_index": 5, "degree_in_sign": 10.979549, "position": "10°58'46\" Virgo", "element": "earth", "modality": "mutable" }, "midheaven": { "longitude": 66.145348, "sign": "Gemini", "sign_index": 2, "degree_in_sign": 6.145348, "position": "6°08'43\" Gemini", "element": "air", "modality": "mutable" } }, "method": "shorter-arc midpoints of each pair of positions" } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "8a915595782b77a68c6846741bda67321452b71797d9ed101f1d901745b1ae84", "result_sha256": "d73954df219854b1f2ad98476b58986d82ee19cfffc91b8adaea011df6eb4f01", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/vedic/nakshatra - Nakshatras ($0.02) Sidereal nakshatra, pada and lord of every graha; janma nakshatra with gana, yoni, nadi, varna. The 27 lunar mansions for each of the 9 grahas at a moment (Lahiri by default, 6 ayanamsas), with the birth star's attributes used in matching. Or pass 'longitude_sidereal' for a direct lookup. MCP tool: `nakshatras`. A2A skill: `vedic/nakshatra`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "longitude_sidereal": { "type": "number", "description": "Optional direct lookup, degrees 0-360." }, "options": { "type": "object", "properties": { "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri" }, "node_type": { "type": "string", "enum": [ "mean", "true" ], "default": "mean", "description": "Rahu/Ketu from the mean or the true (osculating) lunar node." }, "house_system": { "type": "string", "enum": [ "whole_sign", "equal", "placidus", "porphyry", "koch" ], "default": "whole_sign", "description": "Bhava system; 'equal' puts the lagna degree mid-house." }, "include_outer_planets": { "type": "boolean", "default": false } } } }, "required": [] } ``` Example request: ```json { "datetime": "1990-05-15T14:30", "timezone": "Asia/Kolkata" } ``` Example response (real, lists shortened): ```json { "endpoint": "vedic/nakshatra", "result": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "input", "utc_offset": "+05:30", "is_dst": false, "utc": "1990-05-15T09:00:00Z", "julian_day_ut": 2448026.875001, "julian_day_tt": 2448026.875662, "delta_t_seconds": 57.139, "time_known": true } }, "settings": { "zodiac": "sidereal", "ayanamsa": { "name": "lahiri", "true_deg": 23.725764 }, "node_type": "mean" }, "janma_nakshatra": { "nakshatra": "Uttara Ashadha", "nakshatra_index": 21, "pada": 2, "nakshatra_lord": "Sun", "deity": "Vishvedevas", "fraction_elapsed": 0.392032 }, "janma_nakshatra_attributes": { "yoni": "Mongoose", "gana": "Manushya", "nadi": "Antya", "lord": "Sun" }, "grahas": [ { "graha": "Sun", "longitude": 30.549815, "rashi": "Vrishabha", "sign": "Taurus", "sign_index": 1, "degree_in_sign": 0.549815, "position": "0°32'59\" Taurus", "sign_lord": "Venus", "nakshatra": "Krittika", "nakshatra_index": 3, "pada": 2, "nakshatra_lord": "Sun", "deity": "Agni", "degree_in_nakshatra": 3.883149, "fraction_elapsed": 0.291236 }, { "graha": "Moon", "longitude": 271.893763, "rashi": "Makara", "sign": "Capricorn", "sign_index": 9, "degree_in_sign": 1.893763, "position": "1°53'38\" Capricorn", "sign_lord": "Saturn", "nakshatra": "Uttara Ashadha", "nakshatra_index": 21, "pada": 2, "nakshatra_lord": "Sun", "deity": "Vishvedevas", "degree_in_nakshatra": 5.227097, "fraction_elapsed": 0.392032 }, { "graha": "Mars", "longitude": 324.515246, "rashi": "Kumbha", "sign": "Aquarius", "sign_index": 10, "degree_in_sign": 24.515246, "position": "24°30'55\" Aquarius", "sign_lord": "Saturn", "nakshatra": "Purva Bhadrapada", "nakshatra_index": 25, "pada": 2, "nakshatra_lord": "Jupiter", "deity": "Aja Ekapada", "degree_in_nakshatra": 4.515246, "fraction_elapsed": 0.338643 } ] }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "5a55d4b18e9c8466a1c1fcbb69acf84b058d3a91569b78049366fb207bc3b2e2", "result_sha256": "b06f53384a24ffa061b80b7fce083ee7f8e1a1d07d22e7f6342ea60a06a48767", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/vedic/panchang - Panchang ($0.02) Tithi, vara, nakshatra, yoga, karana with the exact time each ends, plus sunrise and sunset. The Hindu almanac for any moment and place: the five limbs with their end times (to the minute), paksha, Moon and Sun rashi, sunrise/sunset, and the vara by the sunrise-to-sunrise rule. MCP tool: `panchang`. A2A skill: `vedic/panchang`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "options": { "type": "object", "properties": { "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri" }, "node_type": { "type": "string", "enum": [ "mean", "true" ], "default": "mean", "description": "Rahu/Ketu from the mean or the true (osculating) lunar node." }, "house_system": { "type": "string", "enum": [ "whole_sign", "equal", "placidus", "porphyry", "koch" ], "default": "whole_sign", "description": "Bhava system; 'equal' puts the lagna degree mid-house." }, "include_outer_planets": { "type": "boolean", "default": false } } } }, "required": [ "latitude", "longitude" ] } ``` Example request: ```json { "datetime": "2026-10-01T06:00", "latitude": 25.3176, "longitude": 82.9739 } ``` Example response (real, lists shortened): ```json { "endpoint": "vedic/panchang", "result": { "subject": { "time": { "local_input": "2026-10-01T06:00", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "2026-10-01T00:30:00Z", "julian_day_ut": 2461314.520834, "julian_day_tt": 2461314.521634, "delta_t_seconds": 69.091, "time_known": true, "local_mean_time": "2026-10-01T06:01:53", "true_solar_time": "2026-10-01T06:12:05", "equation_of_time_minutes": 10.1889 }, "location": { "latitude": 25.3176, "longitude": 82.9739 } }, "panchang": { "tithi": { "index": 20, "name": "Panchami", "paksha": "Krishna (waning)", "number_in_paksha": 5, "fraction_elapsed": 0.695407, "ends_at": "2026-10-01T07:06Z" }, "nakshatra": { "name": "Krittika", "index": 3, "pada": 4, "lord": "Sun", "deity": "Agni", "fraction_elapsed": 0.997833, "ends_at": "2026-10-01T00:33Z" }, "yoga": { "index": 16, "name": "Siddhi", "ends_at": "2026-10-01T15:48Z" }, "karana": { "index": 40, "name": "Taitila", "ends_at": "2026-10-01T07:06Z" }, "moon": { "longitude": 39.971112, "rashi": "Vrishabha", "sign": "Taurus" }, "sun": { "longitude": 163.626223, "rashi": "Kanya", "sign": "Virgo" }, "moon_phase_angle": 236.34489, "ayanamsa": { "name": "lahiri", "true_deg": 24.233005 }, "sunrise": "2026-10-01T00:20Z", "sunset": "2026-10-01T12:15Z", "vara": { "name": "Guruvara (Thursday)", "lord": "Jupiter", "rule": "the Vedic day runs from sunrise to sunrise" } } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "a054b165615cc9ab4d48adc647369051dc41d86eae83afd831b923c250f2645c", "result_sha256": "d0cbd72a6f167caae2fac301f81534026d87c549daba9134646e63bcc889db98", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/vedic/kundli - Kundli (Vedic birth chart) ($0.15) Sidereal D1 + D9: lagna, 9 grahas with rashi, nakshatra, pada, house, dignity, combustion, bhavas. The Jyotish birth chart: ayanamsa (Lahiri default; Raman, KP, Yukteshwar, Fagan-Bradley, True Chitrapaksha), lagna, grahas with rashi, nakshatra/pada/lord, bhava, dignity (exalted, debilitated, moolatrikona, own sign), retrograde and combustion, house table with lords and occupants, and the Navamsa (D9). MCP tool: `kundli`. A2A skill: `vedic/kundli`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "options": { "type": "object", "properties": { "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri" }, "node_type": { "type": "string", "enum": [ "mean", "true" ], "default": "mean", "description": "Rahu/Ketu from the mean or the true (osculating) lunar node." }, "house_system": { "type": "string", "enum": [ "whole_sign", "equal", "placidus", "porphyry", "koch" ], "default": "whole_sign", "description": "Bhava system; 'equal' puts the lagna degree mid-house." }, "include_outer_planets": { "type": "boolean", "default": false } } } }, "required": [ "latitude", "longitude" ] } ``` Example request: ```json { "datetime": "1990-05-15T14:30", "latitude": 28.6139, "longitude": 77.209 } ``` Example response (real, lists shortened): ```json { "endpoint": "vedic/kundli", "result": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "1990-05-15T09:00:00Z", "julian_day_ut": 2448026.875001, "julian_day_tt": 2448026.875662, "delta_t_seconds": 57.139, "time_known": true, "local_mean_time": "1990-05-15T14:08:50", "true_solar_time": "1990-05-15T14:12:32", "equation_of_time_minutes": 3.7067 }, "location": { "latitude": 28.6139, "longitude": 77.209 } }, "settings": { "zodiac": "sidereal", "ayanamsa": { "name": "lahiri", "true_deg": 23.725764, "mean_deg": 23.722507, "true_dms": "23°43'33\"" }, "node_type": "mean", "house_system": "whole_sign", "varga_rules": "Parashara (BPHS); D24 counts forward from Cancer in even signs" }, "lagna": { "longitude": 151.904824, "rashi": "Kanya", "sign": "Virgo", "sign_index": 5, "degree_in_sign": 1.904824, "position": "1°54'17\" Virgo", "sign_lord": "Mercury", "nakshatra": "Uttara Phalguni", "nakshatra_index": 12, "pada": 2, "nakshatra_lord": "Sun", "deity": "Aryaman", "degree_in_nakshatra": 5.238157, "fraction_elapsed": 0.392862 }, "grahas": [ { "graha": "Sun", "longitude": 30.549815, "rashi": "Vrishabha", "sign": "Taurus", "sign_index": 1, "degree_in_sign": 0.549815, "position": "0°32'59\" Taurus", "sign_lord": "Venus", "nakshatra": "Krittika", "nakshatra_index": 3, "pada": 2, "nakshatra_lord": "Sun", "deity": "Agni", "degree_in_nakshatra": 3.883149, "fraction_elapsed": 0.291236, "house": 9, "retrograde": false, "speed": 0.964203, "dignity": null, "navamsa_sign": "Capricorn" }, { "graha": "Moon", "longitude": 271.893763, "rashi": "Makara", "sign": "Capricorn", "sign_index": 9, "degree_in_sign": 1.893763, "position": "1°53'38\" Capricorn", "sign_lord": "Saturn", "nakshatra": "Uttara Ashadha", "nakshatra_index": 21, "pada": 2, "nakshatra_lord": "Sun", "deity": "Vishvedevas", "degree_in_nakshatra": 5.227097, "fraction_elapsed": 0.392032, "house": 5, "retrograde": false, "speed": 12.326869, "dignity": null, "combust": false, "distance_from_sun": 118.656052, "navamsa_sign": "Capricorn" }, { "graha": "Mars", "longitude": 324.515246, "rashi": "Kumbha", "sign": "Aquarius", "sign_index": 10, "degree_in_sign": 24.515246, "position": "24°30'55\" Aquarius", "sign_lord": "Saturn", "nakshatra": "Purva Bhadrapada", "nakshatra_index": 25, "pada": 2, "nakshatra_lord": "Jupiter", "deity": "Aja Ekapada", "degree_in_nakshatra": 4.515246, "fraction_elapsed": 0.338643, "house": 6, "retrograde": false, "speed": 0.742659, "dignity": null, "combust": false, "distance_from_sun": 66.034569, "navamsa_sign": "Taurus" } ], "bhavas": [ { "house": 1, "sign": "Virgo", "rashi": "Kanya", "lord": "Mercury", "occupants": [] }, { "house": 2, "sign": "Libra", "rashi": "Tula", "lord": "Venus", "occupants": [] }, { "house": 3, "sign": "Scorpio", "rashi": "Vrishchika", "lord": "Mars", "occupants": [] } ], "summary": { "lagna_sign": "Virgo", "lagna_rashi": "Kanya", "lagna_lord": "Mercury", "moon_sign": "Capricorn", "moon_rashi": "Makara", "sun_sign_sidereal": "Taurus", "janma_nakshatra": "Uttara Ashadha", "janma_nakshatra_pada": 2, "janma_nakshatra_lord": "Sun", "exalted": [ "Venus" ], "debilitated": [], "retrograde": [ "Mercury", "Saturn" ], "combust": [] }, "vargas": { "D1": { "varga": "D1", "meaning": "Rashi (body, overall life)", "lagna_sign": "Virgo", "placements": { "Sun": "Taurus", "Moon": "Capricorn", "Mars": "Aquarius", "Mercury": "Aries", "Jupiter": "Gemini", "Venus": "Pisces", "Saturn": "Capricorn", "Rahu": "Capricorn", "Ketu": "Cancer" }, "houses": [ { "house": 1, "sign": "Virgo", "occupants": [] }, { "house": 2, "sign": "Libra", "occupants": [] }, { "house": 3, "sign": "Scorpio", "occupants": [] } ] }, "D9": { "varga": "D9", "meaning": "Navamsa (spouse, dharma, planetary strength)", "lagna_sign": "Capricorn", "placements": { "Sun": "Capricorn", "Moon": "Capricorn", "Mars": "Taurus", "Mercury": "Leo", "Jupiter": "Aquarius", "Venus": "Sagittarius", "Saturn": "Capricorn", "Rahu": "Gemini", "Ketu": "Sagittarius" }, "houses": [ { "house": 1, "sign": "Capricorn", "occupants": [ "Sun", "Moon", "Saturn" ] }, { "house": 2, "sign": "Aquarius", "occupants": [ "Jupiter" ] }, { "house": 3, "sign": "Pisces", "occupants": [] } ] } } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "fcd314ed8ac513bf91b6019201559d8441d19e20d0e0cc0c918cae67703f8670", "result_sha256": "80cea312fedebd8ffdd1b8a5c0e78b32bb972dfc1405e5cb6bcf4228236c00b2", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/vedic/kundli-full - Kundli with all 16 vargas ($0.32) The kundli plus all Shodashavarga divisional charts D1..D60 (Parashara rules). Everything in /vedic/kundli plus D1, D2, D3, D4, D7, D9, D10, D12, D16, D20, D24, D27, D30, D40, D45 and D60, each with its lagna, placements and house table. MCP tool: `kundli_full`. A2A skill: `vedic/kundli-full`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "options": { "type": "object", "properties": { "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri" }, "node_type": { "type": "string", "enum": [ "mean", "true" ], "default": "mean", "description": "Rahu/Ketu from the mean or the true (osculating) lunar node." }, "house_system": { "type": "string", "enum": [ "whole_sign", "equal", "placidus", "porphyry", "koch" ], "default": "whole_sign", "description": "Bhava system; 'equal' puts the lagna degree mid-house." }, "include_outer_planets": { "type": "boolean", "default": false } } } }, "required": [ "latitude", "longitude" ] } ``` Example request: ```json { "datetime": "1990-05-15T14:30", "latitude": 28.6139, "longitude": 77.209 } ``` Example response (real, lists shortened): ```json { "endpoint": "vedic/kundli-full", "result": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "1990-05-15T09:00:00Z", "julian_day_ut": 2448026.875001, "julian_day_tt": 2448026.875662, "delta_t_seconds": 57.139, "time_known": true, "local_mean_time": "1990-05-15T14:08:50", "true_solar_time": "1990-05-15T14:12:32", "equation_of_time_minutes": 3.7067 }, "location": { "latitude": 28.6139, "longitude": 77.209 } }, "settings": { "zodiac": "sidereal", "ayanamsa": { "name": "lahiri", "true_deg": 23.725764, "mean_deg": 23.722507, "true_dms": "23°43'33\"" }, "node_type": "mean", "house_system": "whole_sign", "varga_rules": "Parashara (BPHS); D24 counts forward from Cancer in even signs" }, "lagna": { "longitude": 151.904824, "rashi": "Kanya", "sign": "Virgo", "sign_index": 5, "degree_in_sign": 1.904824, "position": "1°54'17\" Virgo", "sign_lord": "Mercury", "nakshatra": "Uttara Phalguni", "nakshatra_index": 12, "pada": 2, "nakshatra_lord": "Sun", "deity": "Aryaman", "degree_in_nakshatra": 5.238157, "fraction_elapsed": 0.392862 }, "grahas": [ { "graha": "Sun", "longitude": 30.549815, "rashi": "Vrishabha", "sign": "Taurus", "sign_index": 1, "degree_in_sign": 0.549815, "position": "0°32'59\" Taurus", "sign_lord": "Venus", "nakshatra": "Krittika", "nakshatra_index": 3, "pada": 2, "nakshatra_lord": "Sun", "deity": "Agni", "degree_in_nakshatra": 3.883149, "fraction_elapsed": 0.291236, "house": 9, "retrograde": false, "speed": 0.964203, "dignity": null, "navamsa_sign": "Capricorn" }, { "graha": "Moon", "longitude": 271.893763, "rashi": "Makara", "sign": "Capricorn", "sign_index": 9, "degree_in_sign": 1.893763, "position": "1°53'38\" Capricorn", "sign_lord": "Saturn", "nakshatra": "Uttara Ashadha", "nakshatra_index": 21, "pada": 2, "nakshatra_lord": "Sun", "deity": "Vishvedevas", "degree_in_nakshatra": 5.227097, "fraction_elapsed": 0.392032, "house": 5, "retrograde": false, "speed": 12.326869, "dignity": null, "combust": false, "distance_from_sun": 118.656052, "navamsa_sign": "Capricorn" }, { "graha": "Mars", "longitude": 324.515246, "rashi": "Kumbha", "sign": "Aquarius", "sign_index": 10, "degree_in_sign": 24.515246, "position": "24°30'55\" Aquarius", "sign_lord": "Saturn", "nakshatra": "Purva Bhadrapada", "nakshatra_index": 25, "pada": 2, "nakshatra_lord": "Jupiter", "deity": "Aja Ekapada", "degree_in_nakshatra": 4.515246, "fraction_elapsed": 0.338643, "house": 6, "retrograde": false, "speed": 0.742659, "dignity": null, "combust": false, "distance_from_sun": 66.034569, "navamsa_sign": "Taurus" } ], "bhavas": [ { "house": 1, "sign": "Virgo", "rashi": "Kanya", "lord": "Mercury", "occupants": [] }, { "house": 2, "sign": "Libra", "rashi": "Tula", "lord": "Venus", "occupants": [] }, { "house": 3, "sign": "Scorpio", "rashi": "Vrishchika", "lord": "Mars", "occupants": [] } ], "summary": { "lagna_sign": "Virgo", "lagna_rashi": "Kanya", "lagna_lord": "Mercury", "moon_sign": "Capricorn", "moon_rashi": "Makara", "sun_sign_sidereal": "Taurus", "janma_nakshatra": "Uttara Ashadha", "janma_nakshatra_pada": 2, "janma_nakshatra_lord": "Sun", "exalted": [ "Venus" ], "debilitated": [], "retrograde": [ "Mercury", "Saturn" ], "combust": [] }, "vargas": { "D1": { "varga": "D1", "meaning": "Rashi (body, overall life)", "lagna_sign": "Virgo", "placements": { "Sun": "Taurus", "Moon": "Capricorn", "Mars": "Aquarius", "Mercury": "Aries", "Jupiter": "Gemini", "Venus": "Pisces", "Saturn": "Capricorn", "Rahu": "Capricorn", "Ketu": "Cancer" }, "houses": [ { "house": 1, "sign": "Virgo", "occupants": [] }, { "house": 2, "sign": "Libra", "occupants": [] }, { "house": 3, "sign": "Scorpio", "occupants": [] } ] }, "D2": { "varga": "D2", "meaning": "Hora (wealth)", "lagna_sign": "Cancer", "placements": { "Sun": "Cancer", "Moon": "Cancer", "Mars": "Cancer", "Mercury": "Leo", "Jupiter": "Cancer", "Venus": "Leo", "Saturn": "Cancer", "Rahu": "Leo", "Ketu": "Leo" }, "houses": [ { "house": 1, "sign": "Cancer", "occupants": [ "Sun", "Moon", "Mars" ] }, { "house": 2, "sign": "Leo", "occupants": [ "Mercury", "Venus", "Rahu" ] }, { "house": 3, "sign": "Virgo", "occupants": [] } ] }, "D3": { "varga": "D3", "meaning": "Drekkana (siblings, courage)", "lagna_sign": "Virgo", "placements": { "Sun": "Taurus", "Moon": "Capricorn", "Mars": "Libra", "Mercury": "Leo", "Jupiter": "Libra", "Venus": "Cancer", "Saturn": "Capricorn", "Rahu": "Taurus", "Ketu": "Scorpio" }, "houses": [ { "house": 1, "sign": "Virgo", "occupants": [] }, { "house": 2, "sign": "Libra", "occupants": [ "Mars", "Jupiter" ] }, { "house": 3, "sign": "Scorpio", "occupants": [ "Ketu" ] } ] }, "D4": { "varga": "D4", "meaning": "Chaturthamsa (property, fortune)", "lagna_sign": "Virgo", "placements": { "Sun": "Taurus", "Moon": "Capricorn", "Mars": "Scorpio", "Mercury": "Cancer", "Jupiter": "Sagittarius", "Venus": "Virgo", "Saturn": "Capricorn", "Rahu": "Cancer", "Ketu": "Capricorn" }, "houses": [ { "house": 1, "sign": "Virgo", "occupants": [ "Venus" ] }, { "house": 2, "sign": "Libra", "occupants": [] }, { "house": 3, "sign": "Scorpio", "occupants": [ "Mars" ] } ] }, "D7": { "varga": "D7", "meaning": "Saptamsa (children)", "lagna_sign": "Pisces", "placements": { "Sun": "Scorpio", "Moon": "Cancer", "Mars": "Cancer", "Mercury": "Cancer", "Jupiter": "Virgo", "Venus": "Capricorn", "Saturn": "Cancer", "Rahu": "Scorpio", "Ketu": "Taurus" }, "houses": [ { "house": 1, "sign": "Pisces", "occupants": [] }, { "house": 2, "sign": "Aries", "occupants": [] }, { "house": 3, "sign": "Taurus", "occupants": [ "Ketu" ] } ] }, "D9": { "varga": "D9", "meaning": "Navamsa (spouse, dharma, planetary strength)", "lagna_sign": "Capricorn", "placements": { "Sun": "Capricorn", "Moon": "Capricorn", "Mars": "Taurus", "Mercury": "Leo", "Jupiter": "Aquarius", "Venus": "Sagittarius", "Saturn": "Capricorn", "Rahu": "Gemini", "Ketu": "Sagittarius" }, "houses": [ { "house": 1, "sign": "Capricorn", "occupants": [ "Sun", "Moon", "Saturn" ] }, { "house": 2, "sign": "Aquarius", "occupants": [ "Jupiter" ] }, { "house": 3, "sign": "Pisces", "occupants": [] } ] }, "D10": { "varga": "D10", "meaning": "Dasamsa (career)", "lagna_sign": "Taurus", "placements": { "Sun": "Capricorn", "Moon": "Virgo", "Mars": "Libra", "Mercury": "Leo", "Jupiter": "Scorpio", "Venus": "Taurus", "Saturn": "Virgo", "Rahu": "Aquarius", "Ketu": "Leo" }, "houses": [ { "house": 1, "sign": "Taurus", "occupants": [ "Venus" ] }, { "house": 2, "sign": "Gemini", "occupants": [] }, { "house": 3, "sign": "Cancer", "occupants": [] } ] }, "D12": { "varga": "D12", "meaning": "Dwadasamsa (parents)", "lagna_sign": "Virgo", "placements": { "Sun": "Taurus", "Moon": "Capricorn", "Mars": "Scorpio", "Mercury": "Virgo", "Jupiter": "Sagittarius", "Venus": "Libra", "Saturn": "Capricorn", "Rahu": "Leo", "Ketu": "Aquarius" }, "houses": [ { "house": 1, "sign": "Virgo", "occupants": [ "Mercury" ] }, { "house": 2, "sign": "Libra", "occupants": [ "Venus" ] }, { "house": 3, "sign": "Scorpio", "occupants": [ "Mars" ] } ] }, "D16": { "varga": "D16", "meaning": "Shodasamsa (vehicles, comforts)", "lagna_sign": "Capricorn", "placements": { "Sun": "Leo", "Moon": "Taurus", "Mars": "Virgo", "Mercury": "Scorpio", "Jupiter": "Leo", "Venus": "Libra", "Saturn": "Aries", "Rahu": "Capricorn", "Ketu": "Capricorn" }, "houses": [ { "house": 1, "sign": "Capricorn", "occupants": [ "Rahu", "Ketu" ] }, { "house": 2, "sign": "Aquarius", "occupants": [] }, { "house": 3, "sign": "Pisces", "occupants": [] } ] }, "D20": { "varga": "D20", "meaning": "Vimsamsa (spiritual progress)", "lagna_sign": "Virgo", "placements": { "Sun": "Sagittarius", "Moon": "Taurus", "Mars": "Aries", "Mercury": "Capricorn", "Jupiter": "Gemini", "Venus": "Leo", "Saturn": "Taurus", "Rahu": "Pisces", "Ketu": "Pisces" }, "houses": [ { "house": 1, "sign": "Virgo", "occupants": [] }, { "house": 2, "sign": "Libra", "occupants": [] }, { "house": 3, "sign": "Scorpio", "occupants": [] } ] }, "D24": { "varga": "D24", "meaning": "Chaturvimsamsa (education)", "lagna_sign": "Leo", "placements": { "Sun": "Cancer", "Moon": "Leo", "Mars": "Pisces", "Mercury": "Cancer", "Jupiter": "Leo", "Venus": "Libra", "Saturn": "Leo", "Rahu": "Virgo", "Ketu": "Virgo" }, "houses": [ { "house": 1, "sign": "Leo", "occupants": [ "Moon", "Jupiter", "Saturn" ] }, { "house": 2, "sign": "Virgo", "occupants": [ "Rahu", "Ketu" ] }, { "house": 3, "sign": "Libra", "occupants": [ "Venus" ] } ] }, "D27": { "varga": "D27", "meaning": "Saptavimsamsa / Bhamsa (strengths and weaknesses)", "lagna_sign": "Leo", "placements": { "Sun": "Cancer", "Moon": "Leo", "Mars": "Leo", "Mercury": "Aries", "Jupiter": "Sagittarius", "Venus": "Gemini", "Saturn": "Leo", "Rahu": "Libra", "Ketu": "Aries" }, "houses": [ { "house": 1, "sign": "Leo", "occupants": [ "Moon", "Mars", "Saturn" ] }, { "house": 2, "sign": "Virgo", "occupants": [] }, { "house": 3, "sign": "Libra", "occupants": [ "Rahu" ] } ] }, "D30": { "varga": "D30", "meaning": "Trimsamsa (misfortunes)", "lagna_sign": "Taurus", "placements": { "Sun": "Taurus", "Moon": "Taurus", "Mars": "Gemini", "Mercury": "Sagittarius", "Jupiter": "Sagittarius", "Venus": "Pisces", "Saturn": "Taurus", "Rahu": "Pisces", "Ketu": "Pisces" }, "houses": [ { "house": 1, "sign": "Taurus", "occupants": [ "Sun", "Moon", "Saturn" ] }, { "house": 2, "sign": "Gemini", "occupants": [ "Mars" ] }, { "house": 3, "sign": "Cancer", "occupants": [] } ] }, "D40": { "varga": "D40", "meaning": "Khavedamsa (maternal legacy)", "lagna_sign": "Sagittarius", "placements": { "Sun": "Libra", "Moon": "Sagittarius", "Mars": "Sagittarius", "Mercury": "Scorpio", "Jupiter": "Capricorn", "Venus": "Scorpio", "Saturn": "Sagittarius", "Rahu": "Virgo", "Ketu": "Virgo" }, "houses": [ { "house": 1, "sign": "Sagittarius", "occupants": [ "Moon", "Mars", "Saturn" ] }, { "house": 2, "sign": "Capricorn", "occupants": [ "Jupiter" ] }, { "house": 3, "sign": "Aquarius", "occupants": [] } ] }, "D45": { "varga": "D45", "meaning": "Akshavedamsa (paternal legacy, character)", "lagna_sign": "Aquarius", "placements": { "Sun": "Leo", "Moon": "Gemini", "Mars": "Leo", "Mercury": "Capricorn", "Jupiter": "Scorpio", "Venus": "Aries", "Saturn": "Gemini", "Rahu": "Gemini", "Ketu": "Gemini" }, "houses": [ { "house": 1, "sign": "Aquarius", "occupants": [] }, { "house": 2, "sign": "Pisces", "occupants": [] }, { "house": 3, "sign": "Aries", "occupants": [ "Venus" ] } ] }, "D60": { "varga": "D60", "meaning": "Shashtiamsa (past karma, overall)", "lagna_sign": "Sagittarius", "placements": { "Sun": "Gemini", "Moon": "Aries", "Mars": "Pisces", "Mercury": "Leo", "Jupiter": "Capricorn", "Venus": "Aries", "Saturn": "Aries", "Rahu": "Sagittarius", "Ketu": "Gemini" }, "houses": [ { "house": 1, "sign": "Sagittarius", "occupants": [ "Rahu" ] }, { "house": 2, "sign": "Capricorn", "occupants": [ "Jupiter" ] }, { "house": 3, "sign": "Aquarius", "occupants": [] } ] } } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "54032642b444c615b6542415a92ee8b7e86fdc662efaeab1cd257058ddca8133", "result_sha256": "70353b5e079c4a6d5d31dd6225d52cc64894ddff6fc0959e8c127d0525e1b23e", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/vedic/dashas - Vimshottari dashas ($0.10) Vimshottari maha/antar/pratyantar periods with exact dates, birth balance, and the running periods. The 120-year Vimshottari sequence from the Moon's exact nakshatra position: balance at birth, all 9 mahadashas with sub-periods down to 4 levels, and (with on_date) the periods running on a date. MCP tool: `vimshottari_dasha`. A2A skill: `vedic/dashas`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "on_date": { "type": "string", "description": "YYYY-MM-DD (UTC): also report what is active on this date." }, "options": { "type": "object", "properties": { "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri" }, "node_type": { "type": "string", "enum": [ "mean", "true" ], "default": "mean", "description": "Rahu/Ketu from the mean or the true (osculating) lunar node." }, "house_system": { "type": "string", "enum": [ "whole_sign", "equal", "placidus", "porphyry", "koch" ], "default": "whole_sign", "description": "Bhava system; 'equal' puts the lagna degree mid-house." }, "include_outer_planets": { "type": "boolean", "default": false }, "depth": { "type": "integer", "minimum": 1, "maximum": 4, "default": 2, "description": "1 mahadasha, 2 +antardasha, 3 +pratyantardasha, 4 +sookshma." }, "year_length": { "type": "string", "enum": [ "julian", "gregorian", "sidereal", "savana" ], "default": "julian", "description": "Dasha year: 365.25 (default), 365.2425, 365.256363 or 360 days." } } } }, "required": [ "latitude", "longitude" ] } ``` Example request: ```json { "datetime": "1990-05-15T14:30", "latitude": 28.6139, "longitude": 77.209, "on_date": "2026-10-01" } ``` Example response (real, lists shortened): ```json { "endpoint": "vedic/dashas", "result": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "1990-05-15T09:00:00Z", "julian_day_ut": 2448026.875001, "julian_day_tt": 2448026.875662, "delta_t_seconds": 57.139, "time_known": true, "local_mean_time": "1990-05-15T14:08:50", "true_solar_time": "1990-05-15T14:12:32", "equation_of_time_minutes": 3.7067 }, "location": { "latitude": 28.6139, "longitude": 77.209 } }, "settings": { "zodiac": "sidereal", "ayanamsa": { "name": "lahiri", "true_deg": 23.725764, "mean_deg": 23.722507, "true_dms": "23°43'33\"" }, "node_type": "mean", "house_system": "whole_sign", "varga_rules": "Parashara (BPHS); D24 counts forward from Cancer in even signs" }, "moon": { "longitude": 271.893763, "rashi": "Makara", "sign": "Capricorn", "sign_index": 9, "degree_in_sign": 1.893763, "position": "1°53'38\" Capricorn", "sign_lord": "Saturn", "nakshatra": "Uttara Ashadha", "nakshatra_index": 21, "pada": 2, "nakshatra_lord": "Sun", "deity": "Vishvedevas", "degree_in_nakshatra": 5.227097, "fraction_elapsed": 0.392032 }, "dasha": { "system": "vimshottari", "year_length": { "name": "julian", "days": 365.25 }, "depth": 2, "birth_nakshatra_lord": "Sun", "moon_nakshatra_fraction_elapsed": 0.392032, "balance_at_birth": { "lord": "Sun", "years": 3, "months": 7, "days": 23, "total_days": 1332.361337 }, "mahadashas": [ { "lord": "Sun", "level": "mahadasha", "years": 6, "start": "1988-01-07T05:40Z", "end": "1994-01-06T17:40Z", "sub_periods": [ { "lord": "Sun", "level": "antardasha", "start": "1988-01-07T05:40Z", "end": "1988-04-25T19:28Z" }, { "lord": "Moon", "level": "antardasha", "start": "1988-04-25T19:28Z", "end": "1988-10-25T10:28Z" }, { "lord": "Mars", "level": "antardasha", "start": "1988-10-25T10:28Z", "end": "1989-03-02T06:34Z" } ] }, { "lord": "Moon", "level": "mahadasha", "years": 10, "start": "1994-01-06T17:40Z", "end": "2004-01-07T05:40Z", "sub_periods": [ { "lord": "Moon", "level": "antardasha", "start": "1994-01-06T17:40Z", "end": "1994-11-07T02:40Z" }, { "lord": "Mars", "level": "antardasha", "start": "1994-11-07T02:40Z", "end": "1995-06-08T04:10Z" }, { "lord": "Rahu", "level": "antardasha", "start": "1995-06-08T04:10Z", "end": "1996-12-07T01:10Z" } ] }, { "lord": "Mars", "level": "mahadasha", "years": 7, "start": "2004-01-07T05:40Z", "end": "2011-01-06T23:40Z", "sub_periods": [ { "lord": "Mars", "level": "antardasha", "start": "2004-01-07T05:40Z", "end": "2004-06-04T09:07Z" }, { "lord": "Rahu", "level": "antardasha", "start": "2004-06-04T09:07Z", "end": "2005-06-22T21:25Z" }, { "lord": "Jupiter", "level": "antardasha", "start": "2005-06-22T21:25Z", "end": "2006-05-29T19:01Z" } ] } ], "current": [ { "level": "mahadasha", "lord": "Rahu", "start": "2011-01-06T23:40Z", "end": "2029-01-06T11:40Z" }, { "level": "antardasha", "lord": "Moon", "start": "2026-06-20T02:22Z", "end": "2027-12-19T23:22Z" } ] } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "ee901f5e82008a60e291eea9bc1f250071e18dd38ba471970272c235d0a44f36", "result_sha256": "a30a0e72fabe6126926d822a8567f0da5116ab04e38a8089b4e07eec9d07ed68", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/vedic/doshas - Doshas ($0.15) Manglik (Kuja), Kaal Sarp and Sade Sati / Dhaiya, each with the exact rule applied and dates. Manglik from lagna, Moon and Venus with severity and commonly cited cancellations; Kaal Sarp with type and direction (partial cases flagged); Sade Sati cycles and Dhaiya phases with start/end dates over 100 years, plus the status on a given date. MCP tool: `doshas`. A2A skill: `vedic/doshas`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "on_date": { "type": "string", "description": "YYYY-MM-DD (UTC): also report what is active on this date." }, "options": { "type": "object", "properties": { "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri" }, "node_type": { "type": "string", "enum": [ "mean", "true" ], "default": "mean", "description": "Rahu/Ketu from the mean or the true (osculating) lunar node." }, "house_system": { "type": "string", "enum": [ "whole_sign", "equal", "placidus", "porphyry", "koch" ], "default": "whole_sign", "description": "Bhava system; 'equal' puts the lagna degree mid-house." }, "include_outer_planets": { "type": "boolean", "default": false } } } }, "required": [ "latitude", "longitude" ] } ``` Example request: ```json { "datetime": "1990-05-15T14:30", "latitude": 28.6139, "longitude": 77.209, "on_date": "2026-10-01" } ``` Example response (real, lists shortened): ```json { "endpoint": "vedic/doshas", "result": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "1990-05-15T09:00:00Z", "julian_day_ut": 2448026.875001, "julian_day_tt": 2448026.875662, "delta_t_seconds": 57.139, "time_known": true, "local_mean_time": "1990-05-15T14:08:50", "true_solar_time": "1990-05-15T14:12:32", "equation_of_time_minutes": 3.7067 }, "location": { "latitude": 28.6139, "longitude": 77.209 } }, "settings": { "zodiac": "sidereal", "ayanamsa": { "name": "lahiri", "true_deg": 23.725764, "mean_deg": 23.722507, "true_dms": "23°43'33\"" }, "node_type": "mean", "house_system": "whole_sign", "varga_rules": "Parashara (BPHS); D24 counts forward from Cancer in even signs" }, "doshas": { "manglik": { "present": true, "severity": "mild", "rule": "Mars in house [1, 2, 4, 7, 8, 12] counted by sign from the lagna or the Moon (Venus reported for reference)", "mars_sign": "Aquarius", "from": { "lagna": { "mars_house": 6, "manglik": false }, "moon": { "mars_house": 2, "manglik": true }, "venus": { "mars_house": 12, "manglik": true } }, "counted_from_with_dosha": [ "moon", "venus" ], "commonly_cited_cancellations_present": [], "note": "Matching two manglik charts is traditionally held to neutralise the dosha." }, "kaal_sarp": { "present": false, "partial": false, "rule": "all seven planets Sun..Saturn lie on one side of the Rahu-Ketu axis", "rahu_house": 5, "planets_rahu_to_ketu": [ "Sun", "Mars", "Mercury" ], "planets_ketu_to_rahu": [ "Moon", "Saturn" ] }, "sade_sati": { "moon_sign": "Capricorn", "rule": "Saturn (sidereal) in the 12th, 1st or 2nd sign from the natal Moon sign; Dhaiya when in the 4th or 8th", "resolution": "1 day", "span": { "from": "1990-05-15", "to": "2090-05-15" }, "sade_sati_cycles": [ { "start": "1990-05-15", "end": "1995-06-02" }, { "start": "1995-08-10", "end": "1996-02-17" }, { "start": "2017-01-27", "end": "2017-06-21" } ], "phases": [ { "phase": "sade_sati:peak (over the Moon)", "start": "1990-05-15", "start_is_birth": true, "end": "1990-06-21" }, { "phase": "sade_sati:rising (12th from Moon)", "start": "1990-06-21", "start_is_birth": false, "end": "1990-12-15" }, { "phase": "sade_sati:peak (over the Moon)", "start": "1990-12-15", "start_is_birth": false, "end": "1993-03-06" } ], "on_date": { "date": "2026-10-01", "active": [], "in_sade_sati": false } } } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "5620146d7f38d1bdd4283ac32a71173b71c3d60429762462e3703d4852b6cb20", "result_sha256": "5c2d7c82b6c240842f10c62d0073e62d1d2d50acfba45a9976456209ab0054a5", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/vedic/gun-milan - Gun Milan (Ashtakoota matching) ($0.25) 36-point Ashtakoota marriage compatibility: all 8 kootas with reasons, doshas and Manglik check. Varna, Vashya, Tara, Yoni, Graha Maitri, Gana, Bhakoot and Nadi scored from both Moons, each with the attributes and rule behind the score, Nadi/Bhakoot dosha flags with commonly cited cancellations, and both partners' Manglik status. Boy = person_a, girl = person_b by convention. MCP tool: `gun_milan`. A2A skill: `vedic/gun-milan`. Input schema: ```json { "type": "object", "required": [ "person_a", "person_b" ], "properties": { "person_a": { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." } }, "required": [ "latitude", "longitude" ], "description": "Groom / boy (traditional convention)." }, "person_b": { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." } }, "required": [ "latitude", "longitude" ], "description": "Bride / girl." }, "options": { "type": "object", "properties": { "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri" }, "node_type": { "type": "string", "enum": [ "mean", "true" ], "default": "mean", "description": "Rahu/Ketu from the mean or the true (osculating) lunar node." }, "house_system": { "type": "string", "enum": [ "whole_sign", "equal", "placidus", "porphyry", "koch" ], "default": "whole_sign", "description": "Bhava system; 'equal' puts the lagna degree mid-house." }, "include_outer_planets": { "type": "boolean", "default": false } } } } } ``` Example request: ```json { "person_a": { "datetime": "1990-05-15T14:30", "latitude": 28.6139, "longitude": 77.209 }, "person_b": { "datetime": "1992-08-03T09:15", "latitude": 19.076, "longitude": 72.8777 } } ``` Example response (real, lists shortened): ```json { "endpoint": "vedic/gun-milan", "result": { "settings": { "zodiac": "sidereal", "ayanamsa": { "name": "lahiri", "true_deg": 23.725764, "mean_deg": 23.722507, "true_dms": "23°43'33\"" }, "node_type": "mean", "house_system": "whole_sign", "varga_rules": "Parashara (BPHS); D24 counts forward from Cancer in even signs", "ruleset": "ashtakoota-north-indian/majority-v1", "convention": "person_a = groom/boy, person_b = bride/girl" }, "person_a": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "1990-05-15T09:00:00Z", "julian_day_ut": 2448026.875001, "julian_day_tt": 2448026.875662, "delta_t_seconds": 57.139, "time_known": true, "local_mean_time": "1990-05-15T14:08:50", "true_solar_time": "1990-05-15T14:12:32", "equation_of_time_minutes": 3.7067 } }, "moon": { "longitude": 271.893763, "rashi_index": 9, "sign": "Capricorn", "nakshatra_index": 20, "nakshatra": "Uttara Ashadha", "pada": 2, "varna": "Vaishya", "vashya": "Chatushpada", "yoni": "Mongoose", "gana": "Manushya", "nadi": "Antya", "rashi_lord": "Saturn" } }, "person_b": { "subject": { "time": { "local_input": "1992-08-03T09:15", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "1992-08-03T03:45:00Z", "julian_day_ut": 2448837.656255, "julian_day_tt": 2448837.656935, "delta_t_seconds": 58.788, "time_known": true, "local_mean_time": "1992-08-03T08:36:30", "true_solar_time": "1992-08-03T08:30:21", "equation_of_time_minutes": -6.1484 } }, "moon": { "longitude": 167.934588, "rashi_index": 5, "sign": "Virgo", "nakshatra_index": 12, "nakshatra": "Hasta", "pada": 3, "varna": "Vaishya", "vashya": "Manava", "yoni": "Buffalo", "gana": "Deva", "nadi": "Adi", "rashi_lord": "Mercury" } }, "kootas": { "varna": { "score": 1, "boy": "Vaishya", "girl": "Vaishya", "rule": "1 point if VARNA_RANK[groom] >= VARNA_RANK[bride], else 0", "max": 1 }, "vashya": { "score": 1.0, "boy": "Chatushpada", "girl": "Manava", "rule": "group by Moon sign (Sagittarius and Capricorn split at 15 deg); groom row x bride column", "max": 2 }, "tara": { "score": 3.0, "girl_to_boy": { "remainder": 9, "tara": "Parama Mitra", "auspicious": true }, "boy_to_girl": { "remainder": 2, "tara": "Sampat", "auspicious": true }, "rule": "count = ((to_nak - from_nak) % 27) + 1 (inclusive); remainder = count % 9, with 0 read as 9. Do this bride->groom and groom->bride. Each direction whose remainder is not in {3,5,7} scores 1.5; the total is 0, 1.5 or 3.", "max": 3 }, "yoni": { "score": 2, "boy": "Mongoose", "girl": "Buffalo", "sworn_enemies": false, "rule": "14x14 yoni matrix: same 4, friendly 3, neutral 2, inimical 1, sworn enemies 0", "max": 4 }, "graha_maitri": { "score": 4, "boy_lord": "Saturn", "girl_lord": "Mercury", "boy_lord_sees_girl_lord_as": "friend", "girl_lord_sees_boy_lord_as": "neutral", "rule": "naisargika friendship of the Moon-sign lords: FF 5, FN 4, NN 3, FE 1, NE 0.5, EE 0", "max": 5 }, "gana": { "score": 6, "boy": "Manushya", "girl": "Deva", "rule": "3x3 gana matrix, groom row x bride column", "max": 6 }, "bhakoot": { "score": 0, "boy_sign": "Capricorn", "girl_sign": "Virgo", "distance": "9/5", "rule": "0 for sign distances 2/12, 5/9, 6/8; otherwise 7", "max": 7 }, "nadi": { "score": 8, "boy": "Antya", "girl": "Adi", "rule": "8 if the nadis differ, else 0 (nadi dosha). Same nakshatra is still 0 in the score.", "max": 8 } }, "total": 25.0, "max": 36, "verdict": "25-32: good match", "doshas": { "bhakoot_dosha": { "present": true, "type": "9/5", "commonly_cited_cancellations_present": [], "cancellation_rules": [] } }, "manglik": { "person_a": { "present": true, "severity": "mild", "rule": "Mars in house [1, 2, 4, 7, 8, 12] counted by sign from the lagna or the Moon (Venus reported for reference)", "mars_sign": "Aquarius", "from": { "lagna": { "mars_house": 6, "manglik": false }, "moon": { "mars_house": 2, "manglik": true }, "venus": { "mars_house": 12, "manglik": true } }, "counted_from_with_dosha": [ "moon", "venus" ], "commonly_cited_cancellations_present": [], "note": "Matching two manglik charts is traditionally held to neutralise the dosha." }, "person_b": { "present": false, "severity": "none", "rule": "Mars in house [1, 2, 4, 7, 8, 12] counted by sign from the lagna or the Moon (Venus reported for reference)", "mars_sign": "Taurus", "from": { "lagna": { "mars_house": 10, "manglik": false }, "moon": { "mars_house": 9, "manglik": false }, "venus": { "mars_house": 10, "manglik": false } }, "counted_from_with_dosha": [], "commonly_cited_cancellations_present": [], "note": "Matching two manglik charts is traditionally held to neutralise the dosha." }, "match": "only one partner is manglik: traditionally a concern (check the cancellations listed)" } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "333503420c23e7efab574e1d03ea74ac43b2938a4c0e025e133e3e28d45baf64", "result_sha256": "a935a8920bb8bd214b49237d32b2dfcd3f79b101265f3010cc120b2572097246", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## POST /v1/vedic/report - Complete Vedic report ($0.50) Kundli + Vimshottari dashas + doshas + janma panchang in one call. The full Jyotish dossier for one person in a single deterministic call: everything in /vedic/kundli, /vedic/dashas (2 levels, running periods with on_date), /vedic/doshas and the panchang at birth. MCP tool: `vedic_report`. A2A skill: `vedic/report`. Input schema: ```json { "type": "object", "properties": { "datetime": { "type": "string", "description": "Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'.", "examples": [ "1990-05-15T14:30" ] }, "date": { "type": "string", "description": "YYYY-MM-DD (use with 'time' instead of 'datetime')." }, "time": { "type": "string", "description": "HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning)." }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "description": "Decimal degrees, north positive." }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "description": "Decimal degrees, east positive." }, "timezone": { "type": "string", "description": "IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date." }, "time_basis": { "type": "string", "enum": [ "civil", "utc", "lmt", "true_solar" ], "default": "civil", "description": "What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time." }, "ambiguous_time": { "type": "string", "enum": [ "earlier", "later" ], "default": "earlier", "description": "Which occurrence to use when a local time happens twice (DST fall-back)." }, "on_date": { "type": "string", "description": "YYYY-MM-DD (UTC): also report what is active on this date." }, "options": { "type": "object", "properties": { "ayanamsa": { "type": "string", "enum": [ "fagan_bradley", "krishnamurti", "lahiri", "raman", "true_chitrapaksha", "yukteshwar" ], "default": "lahiri" }, "node_type": { "type": "string", "enum": [ "mean", "true" ], "default": "mean", "description": "Rahu/Ketu from the mean or the true (osculating) lunar node." }, "house_system": { "type": "string", "enum": [ "whole_sign", "equal", "placidus", "porphyry", "koch" ], "default": "whole_sign", "description": "Bhava system; 'equal' puts the lagna degree mid-house." }, "include_outer_planets": { "type": "boolean", "default": false }, "depth": { "type": "integer", "minimum": 1, "maximum": 4, "default": 2, "description": "1 mahadasha, 2 +antardasha, 3 +pratyantardasha, 4 +sookshma." }, "year_length": { "type": "string", "enum": [ "julian", "gregorian", "sidereal", "savana" ], "default": "julian", "description": "Dasha year: 365.25 (default), 365.2425, 365.256363 or 360 days." } } } }, "required": [ "latitude", "longitude" ] } ``` Example request: ```json { "datetime": "1990-05-15T14:30", "latitude": 28.6139, "longitude": 77.209, "on_date": "2026-10-01" } ``` Example response (real, lists shortened): ```json { "endpoint": "vedic/report", "result": { "subject": { "time": { "local_input": "1990-05-15T14:30", "time_basis": "civil", "timezone": "Asia/Kolkata", "timezone_source": "resolved_from_coordinates", "utc_offset": "+05:30", "is_dst": false, "utc": "1990-05-15T09:00:00Z", "julian_day_ut": 2448026.875001, "julian_day_tt": 2448026.875662, "delta_t_seconds": 57.139, "time_known": true, "local_mean_time": "1990-05-15T14:08:50", "true_solar_time": "1990-05-15T14:12:32", "equation_of_time_minutes": 3.7067 }, "location": { "latitude": 28.6139, "longitude": 77.209 } }, "settings": { "zodiac": "sidereal", "ayanamsa": { "name": "lahiri", "true_deg": 23.725764, "mean_deg": 23.722507, "true_dms": "23°43'33\"" }, "node_type": "mean", "house_system": "whole_sign", "varga_rules": "Parashara (BPHS); D24 counts forward from Cancer in even signs" }, "lagna": { "longitude": 151.904824, "rashi": "Kanya", "sign": "Virgo", "sign_index": 5, "degree_in_sign": 1.904824, "position": "1°54'17\" Virgo", "sign_lord": "Mercury", "nakshatra": "Uttara Phalguni", "nakshatra_index": 12, "pada": 2, "nakshatra_lord": "Sun", "deity": "Aryaman", "degree_in_nakshatra": 5.238157, "fraction_elapsed": 0.392862 }, "grahas": [ { "graha": "Sun", "longitude": 30.549815, "rashi": "Vrishabha", "sign": "Taurus", "sign_index": 1, "degree_in_sign": 0.549815, "position": "0°32'59\" Taurus", "sign_lord": "Venus", "nakshatra": "Krittika", "nakshatra_index": 3, "pada": 2, "nakshatra_lord": "Sun", "deity": "Agni", "degree_in_nakshatra": 3.883149, "fraction_elapsed": 0.291236, "house": 9, "retrograde": false, "speed": 0.964203, "dignity": null, "navamsa_sign": "Capricorn" }, { "graha": "Moon", "longitude": 271.893763, "rashi": "Makara", "sign": "Capricorn", "sign_index": 9, "degree_in_sign": 1.893763, "position": "1°53'38\" Capricorn", "sign_lord": "Saturn", "nakshatra": "Uttara Ashadha", "nakshatra_index": 21, "pada": 2, "nakshatra_lord": "Sun", "deity": "Vishvedevas", "degree_in_nakshatra": 5.227097, "fraction_elapsed": 0.392032, "house": 5, "retrograde": false, "speed": 12.326869, "dignity": null, "combust": false, "distance_from_sun": 118.656052, "navamsa_sign": "Capricorn" }, { "graha": "Mars", "longitude": 324.515246, "rashi": "Kumbha", "sign": "Aquarius", "sign_index": 10, "degree_in_sign": 24.515246, "position": "24°30'55\" Aquarius", "sign_lord": "Saturn", "nakshatra": "Purva Bhadrapada", "nakshatra_index": 25, "pada": 2, "nakshatra_lord": "Jupiter", "deity": "Aja Ekapada", "degree_in_nakshatra": 4.515246, "fraction_elapsed": 0.338643, "house": 6, "retrograde": false, "speed": 0.742659, "dignity": null, "combust": false, "distance_from_sun": 66.034569, "navamsa_sign": "Taurus" } ], "bhavas": [ { "house": 1, "sign": "Virgo", "rashi": "Kanya", "lord": "Mercury", "occupants": [] }, { "house": 2, "sign": "Libra", "rashi": "Tula", "lord": "Venus", "occupants": [] }, { "house": 3, "sign": "Scorpio", "rashi": "Vrishchika", "lord": "Mars", "occupants": [] } ], "summary": { "lagna_sign": "Virgo", "lagna_rashi": "Kanya", "lagna_lord": "Mercury", "moon_sign": "Capricorn", "moon_rashi": "Makara", "sun_sign_sidereal": "Taurus", "janma_nakshatra": "Uttara Ashadha", "janma_nakshatra_pada": 2, "janma_nakshatra_lord": "Sun", "exalted": [ "Venus" ], "debilitated": [], "retrograde": [ "Mercury", "Saturn" ], "combust": [] }, "vargas": { "D1": { "varga": "D1", "meaning": "Rashi (body, overall life)", "lagna_sign": "Virgo", "placements": { "Sun": "Taurus", "Moon": "Capricorn", "Mars": "Aquarius", "Mercury": "Aries", "Jupiter": "Gemini", "Venus": "Pisces", "Saturn": "Capricorn", "Rahu": "Capricorn", "Ketu": "Cancer" }, "houses": [ { "house": 1, "sign": "Virgo", "occupants": [] }, { "house": 2, "sign": "Libra", "occupants": [] }, { "house": 3, "sign": "Scorpio", "occupants": [] } ] }, "D9": { "varga": "D9", "meaning": "Navamsa (spouse, dharma, planetary strength)", "lagna_sign": "Capricorn", "placements": { "Sun": "Capricorn", "Moon": "Capricorn", "Mars": "Taurus", "Mercury": "Leo", "Jupiter": "Aquarius", "Venus": "Sagittarius", "Saturn": "Capricorn", "Rahu": "Gemini", "Ketu": "Sagittarius" }, "houses": [ { "house": 1, "sign": "Capricorn", "occupants": [ "Sun", "Moon", "Saturn" ] }, { "house": 2, "sign": "Aquarius", "occupants": [ "Jupiter" ] }, { "house": 3, "sign": "Pisces", "occupants": [] } ] } }, "dasha": { "system": "vimshottari", "year_length": { "name": "julian", "days": 365.25 }, "depth": 2, "birth_nakshatra_lord": "Sun", "moon_nakshatra_fraction_elapsed": 0.392032, "balance_at_birth": { "lord": "Sun", "years": 3, "months": 7, "days": 23, "total_days": 1332.361337 }, "mahadashas": [ { "lord": "Sun", "level": "mahadasha", "years": 6, "start": "1988-01-07T05:40Z", "end": "1994-01-06T17:40Z", "sub_periods": [ { "lord": "Sun", "level": "antardasha", "start": "1988-01-07T05:40Z", "end": "1988-04-25T19:28Z" }, { "lord": "Moon", "level": "antardasha", "start": "1988-04-25T19:28Z", "end": "1988-10-25T10:28Z" }, { "lord": "Mars", "level": "antardasha", "start": "1988-10-25T10:28Z", "end": "1989-03-02T06:34Z" } ] }, { "lord": "Moon", "level": "mahadasha", "years": 10, "start": "1994-01-06T17:40Z", "end": "2004-01-07T05:40Z", "sub_periods": [ { "lord": "Moon", "level": "antardasha", "start": "1994-01-06T17:40Z", "end": "1994-11-07T02:40Z" }, { "lord": "Mars", "level": "antardasha", "start": "1994-11-07T02:40Z", "end": "1995-06-08T04:10Z" }, { "lord": "Rahu", "level": "antardasha", "start": "1995-06-08T04:10Z", "end": "1996-12-07T01:10Z" } ] }, { "lord": "Mars", "level": "mahadasha", "years": 7, "start": "2004-01-07T05:40Z", "end": "2011-01-06T23:40Z", "sub_periods": [ { "lord": "Mars", "level": "antardasha", "start": "2004-01-07T05:40Z", "end": "2004-06-04T09:07Z" }, { "lord": "Rahu", "level": "antardasha", "start": "2004-06-04T09:07Z", "end": "2005-06-22T21:25Z" }, { "lord": "Jupiter", "level": "antardasha", "start": "2005-06-22T21:25Z", "end": "2006-05-29T19:01Z" } ] } ], "current": [ { "level": "mahadasha", "lord": "Rahu", "start": "2011-01-06T23:40Z", "end": "2029-01-06T11:40Z" }, { "level": "antardasha", "lord": "Moon", "start": "2026-06-20T02:22Z", "end": "2027-12-19T23:22Z" } ] }, "doshas": { "manglik": { "present": true, "severity": "mild", "rule": "Mars in house [1, 2, 4, 7, 8, 12] counted by sign from the lagna or the Moon (Venus reported for reference)", "mars_sign": "Aquarius", "from": { "lagna": { "mars_house": 6, "manglik": false }, "moon": { "mars_house": 2, "manglik": true }, "venus": { "mars_house": 12, "manglik": true } }, "counted_from_with_dosha": [ "moon", "venus" ], "commonly_cited_cancellations_present": [], "note": "Matching two manglik charts is traditionally held to neutralise the dosha." }, "kaal_sarp": { "present": false, "partial": false, "rule": "all seven planets Sun..Saturn lie on one side of the Rahu-Ketu axis", "rahu_house": 5, "planets_rahu_to_ketu": [ "Sun", "Mars", "Mercury" ], "planets_ketu_to_rahu": [ "Moon", "Saturn" ] }, "sade_sati": { "moon_sign": "Capricorn", "rule": "Saturn (sidereal) in the 12th, 1st or 2nd sign from the natal Moon sign; Dhaiya when in the 4th or 8th", "resolution": "1 day", "span": { "from": "1990-05-15", "to": "2090-05-15" }, "sade_sati_cycles": [ { "start": "1990-05-15", "end": "1995-06-02" }, { "start": "1995-08-10", "end": "1996-02-17" }, { "start": "2017-01-27", "end": "2017-06-21" } ], "phases": [ { "phase": "sade_sati:peak (over the Moon)", "start": "1990-05-15", "start_is_birth": true, "end": "1990-06-21" }, { "phase": "sade_sati:rising (12th from Moon)", "start": "1990-06-21", "start_is_birth": false, "end": "1990-12-15" }, { "phase": "sade_sati:peak (over the Moon)", "start": "1990-12-15", "start_is_birth": false, "end": "1993-03-06" } ], "on_date": { "date": "2026-10-01", "active": [], "in_sade_sati": false } } }, "janma_panchang": { "tithi": { "index": 21, "name": "Shashthi", "paksha": "Krishna (waning)", "number_in_paksha": 6, "fraction_elapsed": 0.111996, "ends_at": "1990-05-16T07:17Z" }, "nakshatra": { "name": "Uttara Ashadha", "index": 21, "pada": 2, "lord": "Sun", "deity": "Vishvedevas", "fraction_elapsed": 0.392032, "ends_at": "1990-05-16T00:41Z" }, "yoga": { "index": 23, "name": "Shubha", "ends_at": "1990-05-15T16:36Z" }, "karana": { "index": 41, "name": "Gara", "ends_at": "1990-05-15T18:48Z" }, "moon": { "longitude": 271.893763, "rashi": "Makara", "sign": "Capricorn" }, "sun": { "longitude": 30.549815, "rashi": "Vrishabha", "sign": "Taurus" }, "moon_phase_angle": 241.343948, "ayanamsa": { "name": "lahiri", "true_deg": 23.725764 }, "sunrise": "1990-05-15T00:01Z", "sunset": "1990-05-15T13:35Z", "vara": { "name": "Mangalavara (Tuesday)", "lord": "Mars", "rule": "the Vedic day runs from sunrise to sunrise" } } }, "meta": { "engine": "astro-agents/1.0.1", "ephemeris": "NASA/JPL DE440 (1800-01-01..2200-01-01)", "astronomy_library": "skyfield/1.55", "frame": "geocentric apparent positions, true ecliptic and equinox of date (IAU 2006/2000A)", "deterministic": true, "llm_used": false, "input_sha256": "16b25afa9026aa6cb1520d068ac2a9d88be916c4fc9a39a69367acf4abcc186d", "result_sha256": "c68a80cbe6c18cc542ad5b329470212285f0fedd9776ea934cc7d188a827e6b8", "reproducibility": "result_sha256 = SHA-256 of the result serialized as JSON with sorted keys, no whitespace, UTF-8, floats rounded to 6 decimals. Same input + same engine version => same hash." }, "example_note": "real output of engine 1.0.1; lists shortened to 3 items" } ``` ## Payment 1. POST the request without payment -> HTTP 402. 2. x402: the 402 body / `PAYMENT-REQUIRED` header lists `accepts` (USDC on Base `eip155:8453` and/or Solana mainnet). Sign and resend with `PAYMENT-SIGNATURE`. Settlement via PayAI / Coinbase CDP; the receipt comes back in `PAYMENT-RESPONSE`. 3. MPP: the `WWW-Authenticate: Payment` challenge (Tempo, intent `charge`) is bound to the exact request body. Pay and resend with `Authorization: Payment `; receipt in `Payment-Receipt`. 4. Free calls: the first 3 per caller. Send `SIGN-IN-WITH-X` (x402 sign-in-with-x extension, advertised in the 402) to tie them to your wallet; otherwise they are tracked per IP. 5. The result is computed before payment is settled: a 400 is never charged. ## Other interfaces - MCP (Streamable HTTP, stateless, JSON): `https://astro-agent.dev/mcp` - one tool per endpoint plus free `astro_catalog` and `verify_result_hash`. Free calls apply; afterwards tools point to the paid REST route. - A2A v1.0 JSON-RPC: `https://astro-agent.dev/a2a`, method `message/send`, data part `{"skill": "", "input": {...}}}`.