Skip to main content
Glama

Natal Chart

ephemeris_natal_chart
Read-onlyIdempotent

Compute a natal birth chart as structured JSON data, including planetary positions, house cusps, angles, retrograde flags, and aspect grids, from a birth datetime and coordinates.

Instructions

Use this when the user wants their natal / birth chart as data rather than a picture — 'give me my chart as JSON', 'list my natal aspects with orbs', 'what exact degree is my Ascendant', 'my placements as a table' — or as the input to a further calculation. Returns raw JSON: all major planets plus Chiron and the major asteroids (Ceres, Pallas, Juno, Vesta) — and, on request, any of ~90 more bodies via additional_objects (Eris, Sedna, Psyche, Fortuna and so on) — angles (ASC/MC/DSC/IC), house cusps, retrograde flags and the major aspect grid; format='llm' gives compact output. Takes coordinates, not a place name.

CREDIT COST: 1 credit per call.

Input Schema

NameRequiredDescriptionDefault
formatNo'llm' = compact; 'json' = full (default).
ayanamsaNoDefault lahiri; sidereal only.
datetimeYesISO 8601; zone required (`Z`/offset, or local time plus `timezone`).
latitudeYesBirth latitude.
timezoneNoIANA zone for a local datetime.
analyticsNoOpt-in extras, free.
longitudeYesBirth longitude.
zodiac_typeNoDefault tropical. `sidereal` subtracts the ayanamsa (~24°) from every longitude.
declinationsNoAdd declinations, out-of-bounds flags and parallels (1.5° orb).
house_systemNoDefault placidus.
visual_configNoRendering options for include_visual.
include_visualNoEmbed a chart-wheel SVG. +2 credits.
asteroid_groupsNoAdd a family: major (Ceres–Vesta), centaur, tno (Eris, Sedna, …) or main_belt (12 large).
additional_objectsNoExtra body ids from GET /catalogs/bodies, e.g. ['eris','sedna']; free; 1600–2200 CE, else listed in omitted_bodies.
include_fixed_starsNoAdd fixed-star conjunctions to bodies and angles.
solar_relationshipsNoAdd combustion, cazimi and under-beams.
include_arabic_partsNoAdd Hermetic Lots / Arabic Parts.
include_minor_aspectsNoAdd minor aspects.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changedv4.29.0
    • changedInput schema / properties / additional_objects / description
      Previous value: -"Extra bodies by name, e.g. ['eris','sedna','psyche','hekate','fortuna','chariklo']; any id in GET /catalogs/bodies. No extra credits. Bodies with their own JPL kernel (centaurs, TNOs, extended asteroids) cover 1600–2200 CE only; outside that they are listed in omitted_bodies with valid_from/valid_to, never approximated."New value: +"Extra body ids from GET /catalogs/bodies, e.g. ['eris','sedna']; free; 1600–2200 CE, else listed in omitted_bodies."
    • changedInput schema / properties / analytics / description
      Previous value: -"Opt-in extras, no extra credits: element_balance (element and modality counts over the classical ten), hemisphere_emphasis, aspect_patterns, harmonics, dignities (essential dignity and score per planet), sect, angle_aspects (aspects to ASC/MC), human_design_gates."New value: +"Opt-in extras, free."
    • changedInput schema / properties / asteroid_groups / description
      Previous value: -"Add a whole family: major (Ceres, Pallas, Juno, Vesta), centaur (Chiron, Pholus), tno (Eris, Sedna, Makemake, Haumea, Quaoar, Orcus, Ixion, Varuna) or main_belt (12 large asteroids)."New value: +"Add a family: major (Ceres–Vesta), centaur, tno (Eris, Sedna, …) or main_belt (12 large)."
    • changedInput schema / properties / ayanamsa / description
      Previous value: -"Sidereal system. Default lahiri. Only read when zodiac_type is `sidereal`."New value: +"Default lahiri; sidereal only."
    • changedInput schema / properties / datetime / description
      Previous value: -"ISO 8601 datetime. A datetime with no zone is rejected; give a `Z` or ±HH:MM suffix, or a local time with the `timezone` argument. Date-only resolves to 12:00 UTC."New value: +"ISO 8601; zone required (`Z`/offset, or local time plus `timezone`)."
    • changedInput schema / properties / declinations / description
      Previous value: -"Add each body's declination and out-of-bounds flag, plus parallel/contraparallel aspects (1.5° orb)."New value: +"Add declinations, out-of-bounds flags and parallels (1.5° orb)."
    • changedInput schema / properties / format / description
      Previous value: -"Output format. 'llm' returns a compact array-based projection optimized for LLM token efficiency (available on all tiers). 'json' returns full verbose JSON."New value: +"'llm' = compact; 'json' = full (default)."
    • changedInput schema / properties / house_system / description
      Previous value: -"House system to use. Defaults to 'placidus' if omitted."New value: +"Default placidus."
    • changedInput schema / properties / include_arabic_parts / description
      Previous value: -"Include Hermetic Lots / Arabic Parts in the natal response (routed as `options.include_hermetic_lots: true`)."New value: +"Add Hermetic Lots / Arabic Parts."
    • changedInput schema / properties / include_fixed_stars / description
      Previous value: -"Add fixed-star conjunctions (Regulus, Algol, Spica and the catalog) against the chart's bodies and angles. Honoured by the endpoint since 4.14.0; same zodiac frame as the chart."New value: +"Add fixed-star conjunctions to bodies and angles."
    • changedInput schema / properties / include_minor_aspects / description
      Previous value: -"Add quincunx, semisextile, semisquare, sesquiquadrate, quintile and biquintile to the aspect grid. Off by default; minors use their own orbs, so this widens the grid without changing any major aspect."New value: +"Add minor aspects."
    • changedInput schema / properties / include_visual / description
      Previous value: -"When true, renders the natal chart wheel as an SVG and embeds it directly in the response. Costs 2 additional credits on top of the base call cost."New value: +"Embed a chart-wheel SVG. +2 credits."
    • changedInput schema / properties / latitude / description
      Previous value: -"Geographic latitude of birth location in decimal degrees (positive = North)."New value: +"Birth latitude."
    • changedInput schema / properties / longitude / description
      Previous value: -"Geographic longitude of birth location in decimal degrees (positive = East)."New value: +"Birth longitude."
    • changedInput schema / properties / solar_relationships / description
      Previous value: -"Classify combustion, cazimi and under-beams for Moon–Saturn relative to the Sun."New value: +"Add combustion, cazimi and under-beams."
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone (e.g. `America/Chicago`); required when the datetime is naive, ignored otherwise."New value: +"IANA zone for a local datetime."
    • changedInput schema / properties / visual_config / description
      Previous value: -"Optional rendering preferences (only used when include_visual=true)."New value: +"Rendering options for include_visual."
    • changedInput schema / properties / visual_config / properties / size / description
      Previous value: -"Canvas size in pixels, 200–4000. Default: 800."New value: +"Pixels, 200–4000. Default 800."
    • changedInput schema / properties / visual_config / properties / theme / description
      Previous value: -"Color theme. Default: light."New value: +"Default light."
    • changedInput schema / properties / zodiac_type / description
      Previous value: -"Zodiac frame. Default tropical. `sidereal` subtracts the ayanamsa (~24°) from every longitude, so signs, dignities and element balance all move; aspects and house numbers do not. The response names the frame it used."New value: +"Default tropical. `sidereal` subtracts the ayanamsa (~24°) from every longitude."
  2. Changed3 schema fields changedv4.27.0
    • changedInput schema / properties / additional_objects / description
      Previous value: -"Extra bodies to add to the chart, by name: e.g. ['eris','sedna','psyche','hekate','fortuna','pandora','asbolus','hylonome','chaos','gonggong','salacia','sappho','eros','nessus','chariklo']. Any body in GET /catalogs/bodies works (use its id/name, lowercase). No extra credits. Bodies with their own JPL kernel (centaurs, trans-Neptunian objects, the extended asteroids) are computed for 1600–2200 CE only; for a chart outside that they are left out and listed in omitted_bodies with their valid_from/valid_to — never approximated."New value: +"Extra bodies by name, e.g. ['eris','sedna','psyche','hekate','fortuna','chariklo']; any id in GET /catalogs/bodies. No extra credits. Bodies with their own JPL kernel (centaurs, TNOs, extended asteroids) cover 1600–2200 CE only; outside that they are listed in omitted_bodies with valid_from/valid_to, never approximated."
    • changedInput schema / properties / analytics / description
      Previous value: -"Optional whole-chart analytics, off by default: element_balance (fire/earth/air/water plus modality counts over the classical ten, unweighted), hemisphere_emphasis (above/below and east/west from the angles), aspect_patterns (aspect matrix + detected patterns), harmonics. No extra credits. Absent from format='llm'."New value: +"Opt-in extras, no extra credits: element_balance (element and modality counts over the classical ten), hemisphere_emphasis, aspect_patterns, harmonics, dignities (essential dignity and score per planet), sect, angle_aspects (aspects to ASC/MC), human_design_gates."
    • changedInput schema / properties / analytics / items / enum
      Previous value: -[
      -  "element_balance",
      -  "hemisphere_emphasis",
      -  "aspect_patterns",
      -  "harmonics"
      -]New value: +[
      +  "element_balance",
      +  "hemisphere_emphasis",
      +  "aspect_patterns",
      +  "harmonics",
      +  "dignities",
      +  "sect",
      +  "angle_aspects",
      +  "human_design_gates"
      +]
  3. Changed14 schema fields changedv4.24.2
    • addedInput schema / properties / additional_objects
      Added value: +{
      +  "description": "Extra bodies to add to the chart, by name: e.g. ['eris','sedna','psyche','hekate','fortuna','pandora','asbolus','hylonome','chaos','gonggong','salacia','sappho','eros','nessus','chariklo']. Any body in GET /catalogs/bodies works (use its id/name, lowercase). No extra credits. Bodies with their own JPL kernel (centaurs, trans-Neptunian objects, the extended asteroids) are computed for 1600–2200 CE only; for a chart outside that they are left out and listed in omitted_bodies with their valid_from/valid_to — never approximated.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 40,
      +  "type": "array"
      +}
    • addedInput schema / properties / analytics
      Added value: +{
      +  "description": "Optional whole-chart analytics, off by default: element_balance (fire/earth/air/water plus modality counts over the classical ten, unweighted), hemisphere_emphasis (above/below and east/west from the angles), aspect_patterns (aspect matrix + detected patterns), harmonics. No extra credits. Absent from format='llm'.",
      +  "items": {
      +    "enum": [
      +      "element_balance",
      +      "hemisphere_emphasis",
      +      "aspect_patterns",
      +      "harmonics"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / asteroid_groups
      Added value: +{
      +  "description": "Add a whole family: major (Ceres, Pallas, Juno, Vesta), centaur (Chiron, Pholus), tno (Eris, Sedna, Makemake, Haumea, Quaoar, Orcus, Ixion, Varuna) or main_belt (12 large asteroids).",
      +  "items": {
      +    "enum": [
      +      "major",
      +      "centaur",
      +      "tno",
      +      "main_belt"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / ayanamsa
      Added value: +{
      +  "description": "Sidereal system. Default lahiri. Only read when zodiac_type is `sidereal`.",
      +  "enum": [
      +    "lahiri",
      +    "fagan_bradley",
      +    "krishnamurti",
      +    "raman",
      +    "yukteshwar"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / datetime / description
      Previous value: -"ISO 8601 datetime; zone required — a `Z`/±HH:MM suffix or the `timezone` argument. Date-only resolves to 12:00 UTC. Full rule: server `instructions`."New value: +"ISO 8601 datetime. A datetime with no zone is rejected; give a `Z` or ±HH:MM suffix, or a local time with the `timezone` argument. Date-only resolves to 12:00 UTC."
    • addedInput schema / properties / declinations
      Added value: +{
      +  "description": "Add each body's declination and out-of-bounds flag, plus parallel/contraparallel aspects (1.5° orb).",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / house_system / enum
      Previous value: -[
      -  "placidus",
      -  "whole_sign",
      -  "equal",
      -  "koch",
      -  "campanus",
      -  "regiomontanus",
      -  "porphyry",
      -  "alcabitius",
      -  "morinus"
      -]New value: +[
      +  "placidus",
      +  "whole_sign",
      +  "equal",
      +  "koch",
      +  "campanus",
      +  "regiomontanus",
      +  "porphyry"
      +]
    • changedInput schema / properties / include_arabic_parts / description
      Previous value: -"Include Hermetic Lots / Arabic Parts in the natal response (routed as `options.include_hermetic_lots: true`). For a standalone lots-only payload without a full natal chart, use `/ephemeris/hermetic-lots` instead."New value: +"Include Hermetic Lots / Arabic Parts in the natal response (routed as `options.include_hermetic_lots: true`)."
    • changedInput schema / properties / include_fixed_stars / description
      Previous value: -"Include fixed-star positions in the natal response (routed as `configuration.fixed_star_options.include: true`). For a standalone fixed-stars payload without a full natal chart, use `/ephemeris/fixed-stars` instead."New value: +"Add fixed-star conjunctions (Regulus, Algol, Spica and the catalog) against the chart's bodies and angles. Honoured by the endpoint since 4.14.0; same zodiac frame as the chart."
    • addedInput schema / properties / include_minor_aspects
      Added value: +{
      +  "description": "Add quincunx, semisextile, semisquare, sesquiquadrate, quintile and biquintile to the aspect grid. Off by default; minors use their own orbs, so this widens the grid without changing any major aspect.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / include_visual / description
      Previous value: -"When true, renders the natal chart wheel as an SVG and embeds it directly in the response. The chart image will display in the conversation alongside the data. Costs 2 additional credits on top of the base call cost."New value: +"When true, renders the natal chart wheel as an SVG and embeds it directly in the response. Costs 2 additional credits on top of the base call cost."
    • changedInput schema / properties / latitude / description
      Previous value: -"Geographic latitude of birth location in decimal degrees (positive = North). Resolve from a place name with location_search; never recall coordinates from memory."New value: +"Geographic latitude of birth location in decimal degrees (positive = North)."
    • addedInput schema / properties / solar_relationships
      Added value: +{
      +  "description": "Classify combustion, cazimi and under-beams for Moon–Saturn relative to the Sun.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / zodiac_type
      Added value: +{
      +  "description": "Zodiac frame. Default tropical. `sidereal` subtracts the ayanamsa (~24°) from every longitude, so signs, dignities and element balance all move; aspects and house numbers do not. The response names the frame it used.",
      +  "enum": [
      +    "tropical",
      +    "sidereal"
      +  ],
      +  "type": "string"
      +}
  4. Changed5 schema fields changedv4.8.0
    • changedInput schema / properties / datetime / description
      Previous value: -"ISO 8601 datetime string, e.g. '1990-04-15T14:30:00' (local time at birth location). Include timezone offset if known, e.g. '1990-04-15T14:30:00-05:00'."New value: +"ISO 8601 datetime; zone required — a `Z`/±HH:MM suffix or the `timezone` argument. Date-only resolves to 12:00 UTC. Full rule: server `instructions`."
    • changedInput schema / properties / include_arabic_parts / description
      Previous value: -"Reserved for future use. Hermetic Lots / Arabic Parts are currently available via the dedicated /ephemeris/hermetic-lots endpoint."New value: +"Include Hermetic Lots / Arabic Parts in the natal response (routed as `options.include_hermetic_lots: true`). For a standalone lots-only payload without a full natal chart, use `/ephemeris/hermetic-lots` instead."
    • changedInput schema / properties / include_fixed_stars / description
      Previous value: -"Reserved for future use. Fixed star positions are currently available via the dedicated /ephemeris/fixed-stars endpoint."New value: +"Include fixed-star positions in the natal response (routed as `configuration.fixed_star_options.include: true`). For a standalone fixed-stars payload without a full natal chart, use `/ephemeris/fixed-stars` instead."
    • changedInput schema / properties / latitude / description
      Previous value: -"Geographic latitude of birth location in decimal degrees (positive = North)."New value: +"Geographic latitude of birth location in decimal degrees (positive = North). Resolve from a place name with location_search; never recall coordinates from memory."
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone name, e.g. 'America/Denver'. Use this if passing local time without a UTC offset in the datetime string."New value: +"IANA timezone (e.g. `America/Chicago`); required when the datetime is naive, ignored otherwise."
  5. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, and non-destructive semantics, and the description adds material context beyond them: explicit credit cost (1 per call, +2 with visual), the critical constraint that it 'takes coordinates, not a place name', the range limits on additional_objects (1600–2200 CE), and what omitted_bodies means. It also discloses the default output payload contents.

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

Conciseness4/5

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

The opening sentence is front-loaded with the selection condition and examples, and every clause carries information (output contents, coordinate requirement, credit cost). It is a single dense run-on block rather than structured bullets, which slightly reduces scanability for an 18-parameter tool.

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

Completeness5/5

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

For a complex 18-parameter tool with no output schema, the description adequately inventories the default return shape (planets, Chiron, asteroids, angles, cusps, retrograde flags, aspect grid) and flags the format toggle. Combined with the 100%-covered schema, an agent has enough context to select and invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so a baseline of 3 applies; the description adds genuine meaning by explaining format='llm' as compact output, framing additional_objects as ~90 optional bodies beyond the default, and clarifying that asteroid_groups selects whole families. It doesn't reinterpret every parameter (e.g., house_system, zodiac_type), but the key decision points are covered.

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

Purpose5/5

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

The description opens with a concrete selection rule and verb ('Use this when the user wants their natal / birth chart as data'), then sharply distinguishes the tool from visual/interpretive siblings by contrasting 'data rather than a picture'. Example utterances ('give me my chart as JSON', 'list my natal aspects with orbs') make the resource and output shape unmistakable.

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

Usage Guidelines4/5

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

It gives clear positive usage conditions with several user phrasings and the 'as the input to a further calculation' case, which is strong routing guidance. It does not explicitly name the alternative sibling (e.g., explore_natal_chart) for the interpretative/picture case, so the alternate branch is implied rather than stated.

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