Skip to main content
Glama
0xctx

astrolog-mcp

by 0xctx

Natal chart data

get_chart_data
Read-onlyIdempotent

Calculate a natal chart from birth date, time, and place, returning Sun, Moon, planet positions, house cusps, angles, and major aspects.

Instructions

Call this when someone asks to calculate a natal chart (birth chart) for a birth date, time and place: where the Sun, Moon, planets, houses and angles fall, and their aspects. Why: the numbers come from the configured engine with fixed settings, so the same input always gives the same numbers. With ENGINE=stub they are placeholders, and the text starts with a PLACEHOLDER line. Returns: a headline of the Sun, Moon and Ascendant positions; each requested body with sign, degree, minute, retrograde flag and house; the twelve house cusps; the four angles (ASC, MC, DSC, IC); the aspects, which are by default the 8 tightest of the five major aspects between bodies; the total count and a truncated flag; and the house system, the harmonic, the version of the engine that made the numbers, UT moment and place. Aspects: "aspects" chooses the set. "major" (default) reads the five major aspects between bodies, and nothing else; its output is unchanged. "all" reads the 17 vibrational aspects, such as semisquare, quincunx, quintile, septile and novile, between bodies and the angles ASC and MC, with each orb 16 degrees divided by the aspect's harmonic, and the five major ones at the wider of that and their major orb (trine 6, square 6, sextile 4), so the "all" set holds every major aspect (with aspect_limit 0, every one is listed). Only "all" reads the angles as targets and adds a strength to each item and set to the list. "aspect_limit" is how many to list, 8 by default; 0 lists every aspect. Harmonic H, from 1 to 10000 and 1 when left out, multiplies every longitude by H, and the houses and angles shown are the harmonic multiples of the natal ones, not recalculated cusps. Input ayanamsa sets the zodiac: tropical by default, or lahiri, fagan_bradley, raman or krishnamurti for sidereal longitudes; a sidereal result names the ayanamsa in meta. Gives positions and facts only, with no interpretation. Pass either place, or latitude, longitude and timezone.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
placeNoBirth place to look up, as a name like 'Austin, TX', or one of these shorthands, which stand alone with no region or country: 'NYC', 'New York', 'LA', 'L.A.', 'SF', 'San Fran', 'DC', 'Philly', 'Vegas', 'Peking' or 'Saigon'. Give this or latitude, longitude and timezone, not both. Anything else must be a place name in the GeoNames table, or latitude, longitude and time zone given directly.
bodiesNoObject codes to return, such as Sun and Moo. Codes: Sun, Moo (Moon), Mer (Mercury), Ven (Venus), Mar (Mars), Jup (Jupiter), Sat (Saturn), Ura (Uranus), Nep (Neptune), Plu (Pluto), Chi (Chiron), Nor (Mean North Node, North Node), Cer (Ceres), Pal (Pallas), Jun (Juno), Ves (Vesta), Eri (Eris), Hau (Haumea), Mak (Makemake), Sed (Sedna). Leave out for all of them.
aspectsNoWhich aspects to list. "major" (default) lists the five major aspects between the bodies. "all" lists the 17 vibrational aspects, such as semisquare, quincunx, quintile, septile and novile, between the bodies and the angles ASC and MC. Each orb is 16 degrees divided by the harmonic, and the five major aspects take the wider of that and their major orb (trine 6, square 6, sextile 4), so the "all" set holds every "major" aspect. For example, quintile has an orb of 3.2 and semisquare 2. The aspect names results use, with other names people use and the angle (no input takes an aspect name): "major" has conjunction (conj, 0°), opposition (opp, 180°), trine (tri, 120°), square (sqr, quartile, 90°), sextile (sex, 60°); "all" adds quintile (qtl, 72°), biquintile (bi-quintile, 144°), septile (sep, 51°26′), biseptile (bi-septile, 102°51′), triseptile (tri-septile, 154°17′), semisquare (semi-square, octile, 45°), sesquiquadrate (sesquisquare, sesqui-square, trioctile, 135°), novile (nonile, 40°), binovile (bi-novile, 80°), quadnovile (quadri-novile, 160°), semisextile (semi-sextile, 30°), quincunx (inconjunct, 150°).major
ayanamsaNoZodiac for the positions: tropical, lahiri, fagan_bradley, raman, krishnamurti. Leave out for tropical. A sidereal value such as lahiri gives sidereal longitudes, with the ayanamsa subtracted from the tropical ones. Pass the value even when a person uses another name for it: tropical is also called Western or sayana; lahiri is also called Lahiri, Chitra Paksha or Indian national ayanamsa; fagan_bradley is also called Fagan-Bradley, Fagan/Bradley or Western sidereal; raman is also called Raman or B. V. Raman; krishnamurti is also called Krishnamurti, KP or K.P..tropical
harmonicNoHarmonic H, a whole number from 1 to 10000. Leave out for 1, the natal chart. Above 1 each longitude is multiplied by H, so the bodies, aspects, houses and angles are harmonic positions; the houses and angles are the harmonic multiples of the natal ones, not recalculated cusps.
latitudeNoBirth latitude in signed decimal degrees, north positive, for example 30.2672. Give with longitude and timezone instead of place.
timezoneNoIANA time zone name for the birth time, such as America/Chicago, America/New_York, America/Los_Angeles, or Europe/London. Give with latitude and longitude instead of place.
longitudeNoBirth longitude in signed decimal degrees, east positive, for example -97.7431. Give with latitude and timezone instead of place.
birth_dateYesBirth date in the local calendar of the birth place, as YYYY-MM-DD, for example 1990-06-15.
birth_timeYesBirth clock time in the local time of the birth place, 24-hour HH:MM, for example 19:30.
aspect_limitNoHow many aspects to list, tightest orb first for major, and by strength for all. Leave out for 8. 0 lists every aspect. The result always gives the total and whether the list was cut.
house_systemNoHouse system that sets the house cusps: one of placidus, koch, equal, campanus, regiomontanus, porphyry, whole_sign. Leave out for placidus. Pass the value even when a person uses another name for it: placidus is also called Placidus or Plac; koch is also called Koch, birthplace houses or GOH; equal is also called Equal house or equal from the Ascendant; campanus is also called Campanus or Camp; regiomontanus is also called Regiomontanus or Regio; porphyry is also called Porphyry or Porph; whole_sign is also called Whole Sign, whole-sign houses, sign houses or WSH.placidus

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
metaYesSettings and provenance behind the numbers.
anglesYesThe four angles: ASC, MC, DSC and IC.
bodiesYesThe requested bodies in object-code order.
housesYesThe twelve house cusps, house 1 to 12.
aspectsYesAspects between bodies. Only when aspects is all, also aspects between bodies and the angles ASC and MC, each item with a strength, and set says all. The total and whether the list was cut are always given.
missingYesRequested object codes the engine did not compute. Empty when all were computed.
headlineYesThe Sun, Moon and Ascendant positions as plain text. Only the bodies requested appear.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.2/5.0
Behavior5/5

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

Annotations cover only the safety profile (readOnly, idempotent, closed-world), yet the description adds real behavioral context: deterministic output from a fixed configured engine, the ENGINE=stub placeholder caveat, the "positions and facts only, no interpretation" contract, and the fact that house/angle values under a harmonic are multiples rather than recalculated cusps. These are non-obvious traits an agent could not infer from the schema or annotations.

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

Conciseness3/5

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

The trigger condition and the deterministic/stub caveats are correctly front-loaded and earn their place. However, the long "Aspects" and "Harmonic H" passages duplicate the schema's own parameter descriptions almost verbatim, bloating a definition that already has a 100%-covered schema sitting beside it.

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

Completeness4/5

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

For a 12-parameter astronomy tool with an output schema present, the description supplies enough semantic framing (determinism, stub behavior, interpretation-free output, harmonic caveat) to call it correctly. It over-delivers on return-value description that the output schema already owns, but nothing an agent needs is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already spells out bodies codes, aspect sets, ayanamsa aliases and house-system aliases in detail, so the description's aspects/harmonic/ayanamsa paragraphs largely restate structured content. It adds marginal framing ("same input always gives the same numbers", "pass either place or lat/long/timezone") but no parameter detail the schema lacks — the baseline 3 applies.

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 opening sentence gives a precise verb and resource — calculate a natal (birth) chart for a date, time and place — and enumerates what it covers (Sun, Moon, planets, houses, angles, aspects). This is unambiguously distinct from the transit/composite/daily-transit siblings without needing to name them.

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?

"Call this when someone asks to calculate a natal chart" is an explicit, actionable trigger condition, and the closing line gives the input-shape rule (place OR lat/long/timezone). It stops short of naming when to prefer a sibling tool such as get_transit_data or get_composite_data, so no exclusions or alternatives appear.

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