Common Tasks
Short recipes for the things people, and AI agents, ask for most. Each returns plain structured data, positions, houses, dignities, dates, with no interpretation; that layer is yours. For the engine itself see Computing Charts; to drive it from a chat agent over MCP, jump to For agents below.
Every recipe assumes an engine:
Event search (stations, ingresses, rise/set) wants the fuller Node data tier; see Data Tiers for loading it.
Cast a natal chart
chart() takes calendar fields in UT and a place. It returns the bodies
(each enriched with its house and dignities), the angles, the twelve cusps, and
the aspects found among the bodies.
Which house is a planet in?
Each body in a chart carries its 1-based house, so there's nothing to recompute from the cusps.
Essential dignities of a planet
Each body also carries the essential dignities it holds in its sign (domicile,
exaltation, detriment, fall). The standalone dignities() answers the same for
any body-in-sign without a chart.
Score essential dignities (traditional)
For the full traditional treatment, dignityScore() weights all five dignities
(Lilly: rulership 5, exaltation 4, triplicity 3, term 2, face 1; detriment -5,
fall -4) for a planet at a longitude in a day or night chart, and almuten()
finds the planet that rules a given degree most strongly.
The aspects in a chart
chart.aspects is the list of aspects among the bodies, each with the two
bodies, the aspect name, and the orb from exact.
Detect aspect patterns
detectPatterns() finds the classical configurations, T-squares, grand trines,
grand crosses, yods, kites, mystic rectangles, and stelliums by sign and house,
as structured objects. Reported patterns are maximal: a grand cross hides the
T-squares it contains. Orbs follow the engine defaults (plus a quincunx for
yods) and are overridable.
Read a chart's signature
chartSignature() summarises a chart's structure as plain counts: element,
modality, angularity, quadrant, and hemisphere distributions, plus the dominant
element / modality / sign and the classical chart ruler. Counts only, no
interpretation.
When does a planet next station?
stations() returns the retrograde and direct stations in a window, each as
[jd, direction].
When does a planet change sign (ingress)?
A sign ingress is a longitude crossing of a sign cusp (a multiple of 30°).
crossings() returns every JD a body crosses the target longitude in the window.
Lunar phases in a window
Transits to a natal chart
when() answers "when is this configuration true?" over a range. To find when a
transiting planet aspects a natal point, take that point's longitude from the
natal chart and search for the aspect. Each result is an [jdStart, jdEnd]
interval, the window the aspect holds within orb.
Sunrise and sunset at a place
riseSet() returns the JD of the next event after jdStart, or null if it
doesn't occur (e.g. polar day or night).
Parans (co-angular bodies)
parans() finds bodies that are simultaneously on the angles (rising,
culminating, setting, anti-culminating) over a day at a latitude, within a
stated tolerance. Latitude only; the daily pattern is longitude-independent.
The next solar return
solarReturn() returns the JDs in a window where the Sun returns to its natal
longitude; pass the first into chartAt() for the return chart.
A local birth time, done right
The core takes UT. Real birth times are local wall-clock, and a naive conversion
silently lands the chart hours off. caelus-birth resolves the time zone from
the coordinates offline and applies historical daylight-saving rules.
A Vedic snapshot: nakshatra and current dasha
Caelus is sidereal-aware. Take the Moon's longitude in a sidereal zodiac, read its nakshatra, and find the active Vimshottari period for a date. See Vedic & Jyotish for vargas, the other dashas, and the yogas.
For agents over MCP
The same capabilities are exposed as MCP tools, so a chat agent can do real astrological work and get back structured, interpretation-free JSON, the agent supplies the meaning. Connect the server first (see MCP Setup), then reach for:
natal_chart/current_sky: a full chart (bodies with house and dignities, angles, cusps, aspects) for a moment and place.transits: transiting bodies and the aspects they make to a natal chart.find_aspect_dates: when a given aspect is exact across a date range.sky_events: stations, ingresses, lunar phases, rise/set in a window.synastry/composite: geometry between two charts.dignities,void_of_course,planetary_hours,returns,progressions: the classical building blocks.aspect_patterns/chart_signature: the named configurations (T-squares, grand trines, yods, stelliums) and a chart's element, modality, and quadrant counts with its ruler.similar_skies,electional_search,cosmic_weather: when the sky last resembled a moment, the best window for a set of aspects, and a date's active configurations and stations.
Each tool returns numbers and structured objects, never an interpretation, so it composes cleanly into whatever reasoning or prose the agent is doing. The full list and schemas live in MCP Setup.
See also
- Recipes for the advanced surface: the
when()query language, configuration matching, and rendering a chart wheel. - Playground to run charts and wheels live in the browser.
- API Reference for the full package surface.