|
|
@@ -33,6 +33,9 @@ async def get_planetary_positions(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Get planetary positions enhanced with zodiac signs, degrees, and retrograde flags.
|
|
|
|
|
|
+ Use for quick position lookups without full chart calculation. For complete natal
|
|
|
+ chart interpretation, use calculate_natal_chart instead.
|
|
|
+
|
|
|
Args:
|
|
|
datetime: ISO 8601 datetime (UTC). Defaults to now.
|
|
|
lat: Observer latitude in decimal degrees.
|
|
|
@@ -42,9 +45,9 @@ async def get_planetary_positions(
|
|
|
bodies: Optional list of body names to filter (e.g., ["sun", "moon"]).
|
|
|
|
|
|
Returns:
|
|
|
- Object with 'input' (echoed params), 'timestamp', 'julian_day',
|
|
|
- and 'bodies' array. Each body includes ecliptic_lon, ecliptic_lat,
|
|
|
- sign, degree_within_sign, retrograde flag, speed_lon, and distance.
|
|
|
+ Object with input echo, timestamp, julian_day, and bodies array. Each body
|
|
|
+ includes ecliptic_lon, ecliptic_lat, sign, degree_within_sign, retrograde flag,
|
|
|
+ speed_lon, and distance.
|
|
|
"""
|
|
|
resolved_lat = lat if lat is not None else 0.0
|
|
|
resolved_lon = lon if lon is not None else 0.0
|
|
|
@@ -120,25 +123,38 @@ async def calculate_natal_chart(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate a complete natal chart from birth data.
|
|
|
|
|
|
- Args:
|
|
|
- birth_datetime: ISO 8601 birth datetime (UTC).
|
|
|
- latitude: Birth latitude in decimal degrees.
|
|
|
- longitude: Birth longitude in decimal degrees.
|
|
|
- elevation: Birth elevation in meters.
|
|
|
- house_system: House system to use (default: Placidus).
|
|
|
- orb_limits: Optional dict of {aspect_name: max_orb_degrees}.
|
|
|
- include_overview: If True, add element/modality/hemisphere balance,
|
|
|
- stelliums, empty houses, chart ruler, house rulers, groupings.
|
|
|
- include_patterns: If True, add aspect pattern detection (T-square,
|
|
|
- Grand Trine, Grand Cross, Yod) and chart shape.
|
|
|
- include_karmic: If True, add nodal axis, Saturn info, Pluto polarity point,
|
|
|
- Part of Fortune, 12th house analysis, and karmic aspect filters.
|
|
|
- top_n_aspects: If set, limit aspects to the N tightest by orb.
|
|
|
-
|
|
|
- Returns:
|
|
|
- Complete natal chart structure with planets, houses, aspects, angles,
|
|
|
- and optionally overview, patterns, and karmic analysis.
|
|
|
- """
|
|
|
+PRIMARY TOOL for natal astrology. Returns planetary positions, houses, aspects,
|
|
|
+and angles. Use the optional flags to add interpretation layers.
|
|
|
+
|
|
|
+WORKFLOW:
|
|
|
+1. Basic chart: call without flags to get planets, houses, aspects, angles.
|
|
|
+2. Add overview (include_overview=true): element/modality/hemisphere balance,
|
|
|
+ stelliums, empty houses, chart ruler, house rulers, retrograde list.
|
|
|
+3. Add patterns (include_patterns=true): T-square, Grand Trine, Grand Cross,
|
|
|
+ Yod detection + chart shape (bundle, bowl, splash, locomotive, seesaw, splay).
|
|
|
+4. Add karmic (include_karmic=true): nodal axis, Saturn, Pluto polarity point,
|
|
|
+ Part of Fortune, 12th house, nodal/Saturn hard aspects.
|
|
|
+5. Full reading: all three flags true.
|
|
|
+
|
|
|
+For interpretation guidance, fetch resource: astro://guides/natal-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ birth_datetime: ISO 8601 birth datetime with timezone (e.g., "1990-05-15T10:30:00+01:00").
|
|
|
+ latitude: Birth latitude in decimal degrees (-90 to 90).
|
|
|
+ longitude: Birth longitude in decimal degrees (-180 to 180).
|
|
|
+ elevation: Birth elevation in meters (default: 0).
|
|
|
+ house_system: "placidus" (default), "equal", or "whole_sign".
|
|
|
+ orb_limits: Optional per-aspect orb overrides, e.g., {"conjunction": 10}.
|
|
|
+ include_overview: Add element/modality/hemisphere balance, stelliums, empty houses,
|
|
|
+ chart ruler, house rulers, planet groupings, retrograde list.
|
|
|
+ include_patterns: Add aspect pattern detection and chart shape classification.
|
|
|
+ include_karmic: Add nodal axis, Saturn, Pluto polarity point, Part of Fortune,
|
|
|
+ 12th house, and karmic aspect filters.
|
|
|
+ top_n_aspects: Limit aspects output to the N tightest by orb.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Dict with: input, chart_type, planets, houses, aspects, angles, lunar_phase,
|
|
|
+ and optionally: overview, aspect_patterns, chart_shape, karmic."""
|
|
|
sky = await call_sky_state(
|
|
|
datetime=birth_datetime,
|
|
|
lat=latitude,
|
|
|
@@ -295,22 +311,26 @@ async def calculate_transit_chart(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate a transit chart: transiting planets vs natal positions.
|
|
|
|
|
|
- Args:
|
|
|
- birth_datetime: ISO 8601 birth datetime (UTC).
|
|
|
- transit_datetime: ISO 8601 transit datetime (UTC).
|
|
|
- latitude: Birth latitude in decimal degrees.
|
|
|
- longitude: Birth longitude in decimal degrees.
|
|
|
- transit_latitude: Current location latitude for transit calculation.
|
|
|
- Defaults to birth latitude if not provided.
|
|
|
- transit_longitude: Current location longitude for transit calculation.
|
|
|
- Defaults to birth longitude if not provided.
|
|
|
- elevation: Birth elevation in meters.
|
|
|
- house_system: House system for natal houses (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
-
|
|
|
- Returns:
|
|
|
- Transit chart with transiting planets, aspects to natal, and house placements.
|
|
|
- """
|
|
|
+Shows how current (or future) transiting planets aspect the natal chart. Useful for
|
|
|
+identifying active transit windows and their themes. For daily transit snapshots,
|
|
|
+use get_transit_preview instead.
|
|
|
+
|
|
|
+For interpretation guidance, fetch resource: astro://guides/natal-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ birth_datetime: ISO 8601 birth datetime (UTC).
|
|
|
+ transit_datetime: ISO 8601 transit datetime (UTC).
|
|
|
+ latitude: Birth latitude in decimal degrees.
|
|
|
+ longitude: Birth longitude in decimal degrees.
|
|
|
+ transit_latitude: Current location latitude for transit calculation. Defaults to birth latitude.
|
|
|
+ transit_longitude: Current location longitude for transit calculation. Defaults to birth longitude.
|
|
|
+ elevation: Birth elevation in meters.
|
|
|
+ house_system: House system for natal houses (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Transit chart with natal_planets, transiting_planets, aspects (transit-to-natal),
|
|
|
+ and houses."""
|
|
|
# Default transit location to birth location if not specified
|
|
|
t_lat = transit_latitude if transit_latitude is not None else latitude
|
|
|
t_lon = transit_longitude if transit_longitude is not None else longitude
|
|
|
@@ -432,21 +452,34 @@ async def calculate_synastry_chart(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate a synastry (relationship) chart for two people.
|
|
|
|
|
|
- Args:
|
|
|
- person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
- person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
- elevation: Birth elevation in meters.
|
|
|
- house_system: House system (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
- top_n_aspects: Limit interaspects to top N by orb.
|
|
|
- karmic_filter: Only return Saturn/Pluto/Node interaspects.
|
|
|
- significator_filter: Only return Venus-Mars, Moon-Venus, Sun-Moon, Sun-Saturn.
|
|
|
- include_davison_full: Compute full Davison chart (planets, houses, aspects).
|
|
|
-
|
|
|
- Returns:
|
|
|
- Synastry chart with interaspects, house overlays, composite, Davison chart,
|
|
|
- and summary sections.
|
|
|
- """
|
|
|
+PRIMARY TOOL for relationship astrology. Returns interchart aspects, house overlays,
|
|
|
+composite chart, and Davison chart data. Use filters to focus on specific themes.
|
|
|
+
|
|
|
+WORKFLOW:
|
|
|
+1. Basic synastry: call without flags → get all interaspects + house overlays.
|
|
|
+2. Karmic focus: karmic_filter=true → only Saturn/Pluto/Node interaspects.
|
|
|
+3. Romantic focus: significator_filter=true → only Venus-Mars, Moon-Venus, Sun-Moon, Sun-Saturn.
|
|
|
+4. Include Davison: include_davison_full=true → full Davison chart with planets/houses/aspects.
|
|
|
+
|
|
|
+For interpretation guidance, fetch resource: astro://guides/relationship-astrology
|
|
|
+
|
|
|
+For karmic relationship analysis, also see: get_karmic_relationship_summary
|
|
|
+
|
|
|
+Args:
|
|
|
+ person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
+ person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
+ elevation: Birth elevation in meters.
|
|
|
+ house_system: House system (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+ top_n_aspects: Limit interaspects to top N by orb.
|
|
|
+ karmic_filter: Only return Saturn/Pluto/Node interaspects.
|
|
|
+ significator_filter: Only return Venus-Mars, Moon-Venus, Sun-Moon, Sun-Saturn pairs.
|
|
|
+ include_davison_full: Compute full Davison chart (planets, houses, aspects, angles).
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Dict with: input, chart_type, chart1_natal, chart2_natal, interaspects,
|
|
|
+ house_overlays, composite_chart, davison_chart, summary (top_aspects,
|
|
|
+ saturn_contacts, node_contacts, venus_mars_contacts, sun_moon_contacts)."""
|
|
|
sky1 = await call_sky_state(datetime=person1_datetime, lat=person1_latitude, lon=person1_longitude, elevation=elevation)
|
|
|
sky2 = await call_sky_state(datetime=person2_datetime, lat=person2_latitude, lon=person2_longitude, elevation=elevation)
|
|
|
|
|
|
@@ -665,29 +698,27 @@ async def get_transit_preview(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Daily transit-to-natal aspect snapshot over a time range.
|
|
|
|
|
|
- For each day, shows which transiting planets are aspecting which natal planets,
|
|
|
- with orb, applying/separating status, and significance score (0-10).
|
|
|
+Shows which transiting planets aspect which natal planets for each day. Significance
|
|
|
+score (0-10) based on aspect type, planet importance, and orb tightness.
|
|
|
|
|
|
- Significance is based on:
|
|
|
- - Aspect type (conjunction/opposition > square > trine > sextile)
|
|
|
- - Transiting planet (Saturn/Jupiter/Pluto > Mars > Sun > Venus/Mercury > Moon)
|
|
|
- - Natal planet (Sun/Moon > Jupiter/Saturn > others)
|
|
|
- - Orb tightness (tighter = more significant)
|
|
|
+Use this for identifying active transit windows and forecasting themes. For a single
|
|
|
+transit moment, use calculate_transit_chart instead.
|
|
|
|
|
|
- Args:
|
|
|
- birth_datetime: ISO 8601 birth datetime (UTC).
|
|
|
- latitude: Birth latitude in decimal degrees.
|
|
|
- longitude: Birth longitude in decimal degrees.
|
|
|
- start_date: ISO date string for the start of the range (YYYY-MM-DD).
|
|
|
- end_date: ISO date string for the end of the range (YYYY-MM-DD).
|
|
|
- transit_latitude: Current location latitude. Defaults to birth latitude.
|
|
|
- transit_longitude: Current location longitude. Defaults to birth longitude.
|
|
|
- min_significance: Minimum significance score to include (0-10). Default 0 = all.
|
|
|
+For interpretation guidance, fetch resource: astro://guides/natal-astrology
|
|
|
|
|
|
- Returns:
|
|
|
- Daily snapshots with active transit-to-natal aspects, sorted by date.
|
|
|
- Each day includes the aspects active on that day with their details.
|
|
|
- """
|
|
|
+Args:
|
|
|
+ birth_datetime: ISO 8601 birth datetime (UTC).
|
|
|
+ latitude: Birth latitude in decimal degrees.
|
|
|
+ longitude: Birth longitude in decimal degrees.
|
|
|
+ start_date: Start of range (YYYY-MM-DD).
|
|
|
+ end_date: End of range (YYYY-MM-DD). Maximum 365 days.
|
|
|
+ transit_latitude: Current location latitude. Defaults to birth latitude.
|
|
|
+ transit_longitude: Current location longitude. Defaults to birth longitude.
|
|
|
+ min_significance: Minimum significance score (0-10) to include. Default 0 = all.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Daily snapshots with active transit-to-natal aspects, sorted by date.
|
|
|
+ Each day: date, aspects (with orb, applying/separating, significance), count."""
|
|
|
from datetime import datetime, timedelta, timezone
|
|
|
|
|
|
from . import astrology
|
|
|
@@ -826,18 +857,31 @@ async def person_manage(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Manage persons in the birth data database.
|
|
|
|
|
|
+ Store and retrieve birth data for individuals. Persons can be referenced by
|
|
|
+ ID or nickname in all _byId tool variants.
|
|
|
+
|
|
|
+ Actions:
|
|
|
+ - add: Create a new person (requires: name, birth_datetime, latitude, longitude)
|
|
|
+ - get: Retrieve by person_id or nickname
|
|
|
+ - list: List all persons
|
|
|
+ - update: Modify fields (requires: person_id)
|
|
|
+ - delete: Remove person (requires: person_id)
|
|
|
+
|
|
|
+ After adding persons, use the _byId tools (e.g., calculate_natal_chart_by_id)
|
|
|
+ so you don't need to pass birth data repeatedly.
|
|
|
+
|
|
|
Args:
|
|
|
action: One of: add, get, list, update, delete.
|
|
|
person_id: Required for get, update, delete.
|
|
|
name: Person's full name (required for add).
|
|
|
- nickname: Optional short name for quick lookup.
|
|
|
+ nickname: Optional short name for quick lookup (used with _byId tools).
|
|
|
birth_datetime: ISO 8601 UTC datetime (required for add).
|
|
|
birthplace: Optional birth place name (e.g., "Zurich, Switzerland").
|
|
|
latitude: Birth latitude (required for add).
|
|
|
longitude: Birth longitude (required for add).
|
|
|
elevation: Birth elevation in meters.
|
|
|
alive: Whether the person is alive (default: True).
|
|
|
- private: Whether the person is hidden from public listing (default: False).
|
|
|
+ private: Hidden from public listing (default: False).
|
|
|
gender: Person's gender (male/female/other).
|
|
|
description: Short one-line description or summary.
|
|
|
notes: Freeform longer notes.
|
|
|
@@ -936,19 +980,24 @@ async def calculate_composite_chart(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate a composite chart (midpoint method) for two people.
|
|
|
|
|
|
- The composite chart represents the relationship itself as a single chart,
|
|
|
- calculated by taking the midpoint of each pair of planetary positions.
|
|
|
+The composite chart represents the relationship itself as a single chart, calculated
|
|
|
+by taking the midpoint of each pair of planetary positions. It shows the relationship's
|
|
|
+identity, structure, and public face.
|
|
|
|
|
|
- Args:
|
|
|
- person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
- person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
- elevation: Birth elevation in meters.
|
|
|
- house_system: House system (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
+For relationship timing, use get_composite_transit_preview.
|
|
|
|
|
|
- Returns:
|
|
|
- Composite chart with planets, houses, aspects, and angles.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resource: astro://guides/relationship-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
+ person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
+ elevation: Birth elevation in meters.
|
|
|
+ house_system: House system (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Composite chart with planets, houses, aspects, angles, and composite_location.
|
|
|
+ Composite orbs: 3° max (tighter than natal). Use tight orbs for interpretation."""
|
|
|
sky1 = await call_sky_state(datetime=person1_datetime, lat=person1_latitude, lon=person1_longitude, elevation=elevation)
|
|
|
sky2 = await call_sky_state(datetime=person2_datetime, lat=person2_latitude, lon=person2_longitude, elevation=elevation)
|
|
|
|
|
|
@@ -1048,19 +1097,24 @@ async def calculate_davison_chart(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate a Davison chart (midpoint in time and space) for two people.
|
|
|
|
|
|
- The Davison chart is a real moment in time (unlike the composite which is
|
|
|
- purely symbolic). It can be progressed and directed like a natal chart.
|
|
|
+The Davison chart is a real moment in time (unlike the composite which is purely
|
|
|
+symbolic). It represents the relationship's inner experience and emotional tone.
|
|
|
+It can be progressed and directed like a natal chart.
|
|
|
|
|
|
- Args:
|
|
|
- person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
- person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
- elevation: Birth elevation in meters.
|
|
|
- house_system: House system (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
+For relationship timing, use get_davison_transit_preview.
|
|
|
|
|
|
- Returns:
|
|
|
- Full Davison chart with planets, houses, aspects, and angles.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resource: astro://guides/relationship-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
+ person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
+ elevation: Birth elevation in meters.
|
|
|
+ house_system: House system (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Davison chart with: chart_type, date_midpoint_jd, location_midpoint,
|
|
|
+ planets, houses, aspects, angles."""
|
|
|
davison = astrology.compute_davison_chart(0.0, 0.0, person1_datetime, person2_datetime)
|
|
|
mid_lat = (person1_latitude + person2_latitude) / 2
|
|
|
mid_lon = (person1_longitude + person2_longitude) / 2
|
|
|
@@ -1139,19 +1193,22 @@ async def get_composite_transit_preview(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Daily transit-to-composite chart aspect snapshot over a time range.
|
|
|
|
|
|
- Calculates the composite chart for two people, then shows transiting
|
|
|
- aspects to composite planet positions for each day in the range.
|
|
|
+Calculates the composite chart for two people, then shows transiting aspects to
|
|
|
+composite planet positions for each day. Use for timing relationship events and
|
|
|
+identifying when relationship themes are activated.
|
|
|
|
|
|
- Args:
|
|
|
- person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
- person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
- start_date: ISO date string for the start of the range (YYYY-MM-DD).
|
|
|
- end_date: ISO date string for the end of the range (YYYY-MM-DD).
|
|
|
- min_significance: Minimum significance score (0-10). Default 0 = all.
|
|
|
+For interpretation guidance, fetch resource: astro://guides/relationship-astrology
|
|
|
|
|
|
- Returns:
|
|
|
- Daily snapshots with active transit-to-composite aspects.
|
|
|
- """
|
|
|
+Args:
|
|
|
+ person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
+ person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
+ start_date: Start of range (YYYY-MM-DD).
|
|
|
+ end_date: End of range (YYYY-MM-DD). Maximum 365 days.
|
|
|
+ min_significance: Minimum significance score (0-10) to include. Default 0 = all.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Daily snapshots with active transit-to-composite aspects, sorted by date.
|
|
|
+ Each day: date, aspects (transiting, composite, orb, applying, significance), count."""
|
|
|
from datetime import datetime, timedelta, timezone
|
|
|
|
|
|
# Calculate composite chart
|
|
|
@@ -1266,19 +1323,22 @@ async def get_davison_transit_preview(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Daily transit-to-Davison chart aspect snapshot over a time range.
|
|
|
|
|
|
- Calculates the Davison chart for two people, then shows transiting
|
|
|
- aspects to Davison planet positions for each day in the range.
|
|
|
+Calculates the Davison chart for two people, then shows transiting aspects to
|
|
|
+Davison planet positions for each day. Use for timing relationship milestones
|
|
|
+and long-term evolution tracking.
|
|
|
|
|
|
- Args:
|
|
|
- person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
- person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
- start_date: ISO date string for the start of the range (YYYY-MM-DD).
|
|
|
- end_date: ISO date string for the end of the range (YYYY-MM-DD).
|
|
|
- min_significance: Minimum significance score (0-10). Default 0 = all.
|
|
|
+For interpretation guidance, fetch resource: astro://guides/relationship-astrology
|
|
|
|
|
|
- Returns:
|
|
|
- Daily snapshots with active transit-to-Davison aspects.
|
|
|
- """
|
|
|
+Args:
|
|
|
+ person1_datetime, person1_latitude, person1_longitude: Person 1 birth data.
|
|
|
+ person2_datetime, person2_latitude, person2_longitude: Person 2 birth data.
|
|
|
+ start_date: Start of range (YYYY-MM-DD).
|
|
|
+ end_date: End of range (YYYY-MM-DD). Maximum 365 days.
|
|
|
+ min_significance: Minimum significance score (0-10) to include. Default 0 = all.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Daily snapshots with active transit-to-Davison aspects, sorted by date.
|
|
|
+ Each day: date, aspects (transiting, davison, orb, applying, significance), count."""
|
|
|
from datetime import datetime, timedelta, timezone
|
|
|
|
|
|
# Calculate Davison chart
|
|
|
@@ -1384,19 +1444,27 @@ async def get_karmic_relationship_summary(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Generate a karmic relationship summary from synastry, composite, and Davison charts.
|
|
|
|
|
|
- Combines karmic indicators across all three relationship chart layers:
|
|
|
- - Synastry: Saturn/Pluto/Node interchart aspects
|
|
|
- - Composite: Saturn, Pluto, Node positions
|
|
|
- - Davison: Saturn, Pluto, Node positions
|
|
|
+Combines karmic indicators across all three relationship chart layers:
|
|
|
+- Synastry: Saturn/Pluto/Node interchart aspects
|
|
|
+- Composite: Saturn, Pluto, Node positions
|
|
|
+- Davison: Saturn, Pluto, Node positions
|
|
|
|
|
|
- Args:
|
|
|
- person1_id: ID or nickname of person 1 in the persons database.
|
|
|
- person2_id: ID or nickname of person 2 in the persons database.
|
|
|
- house_system: House system (default: Placidus).
|
|
|
+This is the PRIMARY tool for karmic relationship analysis. It consolidates
|
|
|
+the key indicators into a single structured report with a karmic weight score.
|
|
|
|
|
|
- Returns:
|
|
|
- Structured karmic summary with indicators from all three layers.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resources:
|
|
|
+- astro://guides/karmic-astrology
|
|
|
+- astro://guides/relationship-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person1_id: ID or nickname of person 1 in the persons database.
|
|
|
+ person2_id: ID or nickname of person 2 in the persons database.
|
|
|
+ house_system: House system (default: Placidus).
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Dict with: karmic_weight (composite score), synastry_karmic_aspects,
|
|
|
+ composite_karmic_planets, davison_karmic_planets, summary
|
|
|
+ (saturn/pluto/node contact counts)."""
|
|
|
# Get synastry with karmic filter
|
|
|
synastry = await calculate_synastry_chart_by_id(
|
|
|
person1_id, person2_id,
|
|
|
@@ -1468,9 +1536,13 @@ async def get_karmic_relationship_summary(
|
|
|
def list_house_systems() -> dict[str, Any]:
|
|
|
"""List supported house systems.
|
|
|
|
|
|
- Returns:
|
|
|
- Object with 'systems' array, each containing name and description.
|
|
|
- """
|
|
|
+Returns the available house systems for chart calculation:
|
|
|
+- placidus: Most common in modern Western astrology (default)
|
|
|
+- equal: Each house is exactly 30 degrees from ASC
|
|
|
+- whole_sign: Each house corresponds to one full sign (Vedic/traditional)
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Object with systems array containing id and description for each."""
|
|
|
return {
|
|
|
"systems": [
|
|
|
{"id": "placidus", "name": "Placidus", "description": "Most common system; houses based on time divisions of the diurnal arc. Default."},
|
|
|
@@ -1511,14 +1583,18 @@ async def calculate_natal_chart_by_id(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate natal chart for a person from the database.
|
|
|
|
|
|
- Args:
|
|
|
- person_id: ID or nickname of a person in the persons database.
|
|
|
- house_system: House system (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
+Same as calculate_natal_chart but fetches birth data from the persons database
|
|
|
+by ID or nickname. See calculate_natal_chart for full documentation.
|
|
|
|
|
|
- Returns:
|
|
|
- Complete natal chart structure.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resource: astro://guides/natal-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person_id: ID or nickname of a person in the persons database.
|
|
|
+ house_system: House system (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Complete natal chart structure (see calculate_natal_chart)."""
|
|
|
birth = await _get_person_birth_data(person_id)
|
|
|
if "error" in birth:
|
|
|
return birth
|
|
|
@@ -1543,17 +1619,20 @@ async def calculate_transit_chart_by_id(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate transit chart for a person from the database.
|
|
|
|
|
|
- Args:
|
|
|
- person_id: ID of a person in the persons database.
|
|
|
- transit_datetime: ISO 8601 transit datetime (UTC).
|
|
|
- transit_latitude: Current location latitude. Defaults to birth latitude.
|
|
|
- transit_longitude: Current location longitude. Defaults to birth longitude.
|
|
|
- house_system: House system for natal houses (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
+Same as calculate_transit_chart but fetches birth data from the persons database.
|
|
|
|
|
|
- Returns:
|
|
|
- Transit chart structure.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resource: astro://guides/natal-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person_id: ID of a person in the persons database.
|
|
|
+ transit_datetime: ISO 8601 transit datetime (UTC).
|
|
|
+ transit_latitude: Current location latitude. Defaults to birth latitude.
|
|
|
+ transit_longitude: Current location longitude. Defaults to birth longitude.
|
|
|
+ house_system: House system for natal houses (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Transit chart structure (see calculate_transit_chart)."""
|
|
|
birth = await _get_person_birth_data(person_id)
|
|
|
if "error" in birth:
|
|
|
return birth
|
|
|
@@ -1579,15 +1658,19 @@ async def calculate_synastry_chart_by_id(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate synastry chart for two persons from the database.
|
|
|
|
|
|
- Args:
|
|
|
- person1_id: ID of person 1 in the persons database.
|
|
|
- person2_id: ID of person 2 in the persons database.
|
|
|
- house_system: House system (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
+Same as calculate_synastry_chart but fetches birth data from the persons database
|
|
|
+by ID or nickname. See calculate_synastry_chart for full documentation.
|
|
|
|
|
|
- Returns:
|
|
|
- Synastry chart structure.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resource: astro://guides/relationship-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person1_id: ID of person 1 in the persons database.
|
|
|
+ person2_id: ID of person 2 in the persons database.
|
|
|
+ house_system: House system (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Synastry chart structure (see calculate_synastry_chart)."""
|
|
|
p1 = await _get_person_birth_data(person1_id)
|
|
|
if "error" in p1:
|
|
|
return p1
|
|
|
@@ -1616,15 +1699,18 @@ async def calculate_composite_chart_by_id(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate composite chart for two persons from the database.
|
|
|
|
|
|
- Args:
|
|
|
- person1_id: ID of person 1 in the persons database.
|
|
|
- person2_id: ID of person 2 in the persons database.
|
|
|
- house_system: House system (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
+Same as calculate_composite_chart but fetches birth data from the persons database.
|
|
|
|
|
|
- Returns:
|
|
|
- Composite chart structure.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resource: astro://guides/relationship-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person1_id: ID of person 1 in the persons database.
|
|
|
+ person2_id: ID of person 2 in the persons database.
|
|
|
+ house_system: House system (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Composite chart structure (see calculate_composite_chart)."""
|
|
|
p1 = await _get_person_birth_data(person1_id)
|
|
|
if "error" in p1:
|
|
|
return p1
|
|
|
@@ -1653,15 +1739,18 @@ async def calculate_davison_chart_by_id(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Calculate Davison chart for two persons from the database.
|
|
|
|
|
|
- Args:
|
|
|
- person1_id: ID of person 1 in the persons database.
|
|
|
- person2_id: ID of person 2 in the persons database.
|
|
|
- house_system: House system (default: Placidus).
|
|
|
- orb_limits: Optional orb configuration.
|
|
|
+Same as calculate_davison_chart but fetches birth data from the persons database.
|
|
|
|
|
|
- Returns:
|
|
|
- Davison chart structure.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resource: astro://guides/relationship-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person1_id: ID of person 1 in the persons database.
|
|
|
+ person2_id: ID of person 2 in the persons database.
|
|
|
+ house_system: House system (default: Placidus).
|
|
|
+ orb_limits: Optional orb configuration.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Davison chart structure (see calculate_davison_chart)."""
|
|
|
p1 = await _get_person_birth_data(person1_id)
|
|
|
if "error" in p1:
|
|
|
return p1
|
|
|
@@ -1692,17 +1781,20 @@ async def get_transit_preview_by_id(
|
|
|
) -> dict[str, Any]:
|
|
|
"""Daily transit-to-natal aspect snapshot for a person from the database.
|
|
|
|
|
|
- Args:
|
|
|
- person_id: ID or nickname of a person in the persons database.
|
|
|
- start_date: ISO date string for the start of the range (YYYY-MM-DD).
|
|
|
- end_date: ISO date string for the end of the range (YYYY-MM-DD).
|
|
|
- transit_latitude: Current location latitude. Defaults to birth latitude.
|
|
|
- transit_longitude: Current location longitude. Defaults to birth longitude.
|
|
|
- min_significance: Minimum significance score (0-10). Default 0 = all.
|
|
|
+Same as get_transit_preview but fetches birth data from the persons database.
|
|
|
|
|
|
- Returns:
|
|
|
- Daily snapshots with active transit-to-natal aspects.
|
|
|
- """
|
|
|
+For interpretation guidance, fetch resource: astro://guides/natal-astrology
|
|
|
+
|
|
|
+Args:
|
|
|
+ person_id: ID or nickname of a person in the persons database.
|
|
|
+ start_date: ISO date string for the start of the range (YYYY-MM-DD).
|
|
|
+ end_date: ISO date string for the end of the range (YYYY-MM-DD).
|
|
|
+ transit_latitude: Current location latitude. Defaults to birth latitude.
|
|
|
+ transit_longitude: Current location longitude. Defaults to birth longitude.
|
|
|
+ min_significance: Minimum significance score (0-10). Default 0 = all.
|
|
|
+
|
|
|
+Returns:
|
|
|
+ Daily transit snapshots (see get_transit_preview)."""
|
|
|
birth = await _get_person_birth_data(person_id)
|
|
|
if "error" in birth:
|
|
|
return birth
|