Kaynağa Gözat

Agent guides + tool docstrings + MCP resources

Agent guides rewritten for agent consumption:
- agent-guides/natal-astrology.md: workflow-first structure with tool call sequences
- agent-guides/karmic-astrology.md: karmic reading workflow with tool references
- agent-guides/relationship-astrology.md: 4-layer relationship analysis workflow

Tool docstrings improved across all 18 tools:
- Added workflow guidance (when to use each param)
- Added cross-references to agent guides via astro:// URIs
- Added interpretation hints and output structure docs
- _byId variants reference their parent tools

MCP resources added (server.py):
- astro://guides/natal-astrology
- astro://guides/karmic-astrology
- astro://guides/relationship-astrology

Agents can now fetch resources/list to discover guides, then resources/read
to load the full interpretation framework for any chart type.
Lukas Goldschmidt 1 ay önce
ebeveyn
işleme
5fa551bd85

+ 95 - 150
agent-guides/karmic-astrology.md

@@ -1,12 +1,24 @@
 # Karmic Astrology — Agent Interpretation Guide
 
 > For agents using the astro MCP to perform karmic chart interpretation.
+> Resource URI: `astro://guides/karmic-astrology`
+
+## Quick Reference: Tool Call Strategy
+
+```
+karmic natal reading    → calculate_natal_chart(birth_data, include_karmic=true)
+karmic + full analysis  → calculate_natal_chart(birth_data, include_overview=true, include_patterns=true, include_karmic=true)
+karmic synastry         → calculate_synastry_chart(p1, p2, karmic_filter=true)
+karmic relationship     → get_karmic_relationship_summary(p1_id, p2_id)
+```
+
+---
 
 ## Framework
 
 Karmic astrology interprets the natal chart as a map of the soul's journey across lifetimes. The core principle: **the chart shows karmic conditions, not fixed fate**. Free will operates in how one responds to these conditions.
 
-### Reading Order for Karmic Analysis
+**Reading Order for Karmic Analysis:**
 
 1. **Lunar Nodes by sign and house** — the backbone of karmic interpretation
 2. **Saturn by sign, house, and aspects** — karma, responsibility, lessons
@@ -18,195 +30,128 @@ Karmic astrology interprets the natal chart as a map of the soul's journey acros
 
 ---
 
-## Lunar Nodes: The Karmic Axis
-
-### South Node — Past Life Patterns
-
-The South Node represents:
-- Overdeveloped tendencies from previous incarnations
-- The comfort zone that can hold you back
-- Innate talents and skills (the "easy mode")
-- Emotional patterns and habits that feel familiar but limiting
-
-**Interpretation approach**: Study the South Node sign first as the karmic inheritance — strengths turned into limitations, automatic reactions, comfort zones.
-
-### North Node — Evolutionary Direction
-
-The North Node represents:
-- Qualities the soul is now trying to develop
-- The unfamiliar but necessary growth path
-- Present-life intention and soul's "to-do list"
-
-**Interpretation approach**: Clarify the North Node sign as the developmental path — qualities and life areas that feel challenging but are essential for evolution.
-
-### The Nodes as an Axis
-
-- The soul is in **transition from South Node patterns to North Node development**
-- Not "abandoning" one sign for the other, but **re-balancing both**
-- The house shows *where* the karmic drama plays out
-
-### Node Pairs by Sign — Quick Reference
-
-| North Node | South Node | Core Theme |
-|---|---|---|
-| Aries | Libra | Independence vs. over-cooperation |
-| Taurus | Scorpio | Stability vs. crisis-seeking |
-| Gemini | Sagittarius | Curiosity vs. rigid certainty |
-| Cancer | Capricorn | Emotional openness vs. control |
-| Leo | Aquarius | Self-expression vs. detachment |
-| Virgo | Pisces | Discernment vs. escapism |
-| Libra | Aries | Cooperation vs. self-assertion |
-| Scorpio | Taurus | Transformation vs. stagnation |
-| Sagittarius | Gemini | Faith vs. scattered thinking |
-| Capricorn | Cancer | Self-reliance vs. dependence |
-| Aquarius | Leo | Collective vs. personal drama |
-| Pisces | Virgo | Surrender vs. perfectionism |
-
-**Each pair**: North Node qualities to develop (+) / South Node tendencies to release (−)
-
-### Key Nodal Aspects
-
-- **Planets conjunct South Node**: Past-life energy, gifts and attachments you fall back into
-- **Planets conjunct North Node**: Present-life growth catalysts
-- **Planets square the nodes**: "Skipped steps" — unresolved issues that must be re-engaged
-- **Saturn conjunct North Node**: Karmic contract; relationship/lesson pushes growth
-- **Saturn square Nodes**: Karmic block; timing/life paths hard to synchronize
-- **Pluto conjunct South Node**: Intense past-life pattern involving power, control, trauma
-
----
-
-## Saturn: Lord of Karma
-
-### Saturn's Karmic Meaning
-
-- **Karmic debts & unfinished business** — areas where you "owe work"
-- **Fears and inhibitions** — karmic memory of having failed or been wounded
-- **Discipline and mastery** — where the soul must mature through effort
-- **Potential for strength** — once integrated, becomes your most solid foundation
-
-### Saturn Interpretation Steps
-
-1. **Sign**: Style of karma and psychological coloration
-2. **House**: Life area where karma is most active
-3. **Aspects**: Specific karmic stories (hard aspects = tension points)
-4. **Condition**: Direct vs. retrograde (retrograde = unfinished duties)
-
-### Saturn Retrograde
-
-- Points to unfinished past-life duties, misused authority, avoided responsibility
-- Life tends to feel internally heavy: self-criticism, delays, sense of "being behind"
-- Framed as correction and maturation, not punishment
-- Once tasks are embraced, Saturn offers stability and inner peace
-
-### Key Saturn Aspects (Karmic Meaning)
-
-| Aspect | Past-Life Theme | Present-Life Lesson |
-|---|---|---|
-| Saturn–Sun | Misuse of authority or being controlled by it | Healthy ego, integrity |
-| Saturn–Moon | Family/emotional wounding, abandonment | Emotional maturity |
-| Saturn–Venus | Love/money exploited or withheld | Self-worth, boundaries |
-| Saturn–Mars | Violence, aggression, or cowardice | Disciplined action |
-| Saturn–Jupiter | Excess, dogmatism, rigid moral codes | Faith with realism |
-
----
-
-## Pluto: Evolutionary Astrology Layer
-
-*From Jeffrey Wolf Green's Evolutionary Astrology*
+## Standard Karmic Reading Workflow
 
-### Pluto = The Soul
+### Step 1: Nodal Axis
 
-- Pluto by sign and house describes **core past-life desires** that shaped prior incarnations
-- Shows the soul's deepest unconscious security needs and complexes
-- Evolutionary astrology starts every interpretation from Pluto
+**Data from**: `calculate_natal_chart` with `include_karmic=true` → `karmic.nodal_axis`
 
-### The Two Trinities
+1. **South Node sign**: Past-life patterns, comfort zone, innate talents that can become limitations
+2. **North Node sign**: Growth direction, qualities the soul is developing, the "unfamiliar but necessary" path
+3. **Nodal axis houses**: *Where* the karmic drama plays out in life
+4. **Nodal axis aspects** (from `karmic.nodal_aspects`):
+   - Planets conjunct South Node: Past-life energy, gifts and attachments you fall back into
+   - Planets conjunct North Node: Present-life growth catalysts
+   - Planets square the nodes: "Skipped steps" — unresolved issues that must be re-engaged
 
-**Trinity of the Past:**
-1. Pluto — core past-life desires
-2. South Node — operational mode (how desires were expressed)
-3. Ruler of South Node — specific archetypal themes
+### Step 2: Saturn — Lord of Karma
 
-**Trinity of the Future:**
-1. Pluto's Polarity Point (PPP) — archetypes to embrace for evolution
-2. North Node — new operational mode to develop
-3. Ruler of North Node — arenas for evolutionary integration
+**Data from**: `karmic.saturn` + `karmic.saturn_aspects`
 
-### Pluto's Polarity Point (PPP)
+1. **Saturn sign**: Style of karma and psychological coloration
+2. **Saturn house**: Life area where karma is most active
+3. **Saturn retrograde**: Unfinished past-life duties, misused authority, avoided responsibility
+4. **Saturn hard aspects** (conjunction, square, opposition) to personal planets:
+   - Saturn–Sun: Misuse of authority or being controlled by it → lesson: healthy ego, integrity
+   - Saturn–Moon: Family/emotional wounding → lesson: emotional maturity
+   - Saturn–Venus: Love/money exploited or withheld → lesson: self-worth, boundaries
+   - Saturn–Mars: Violence, aggression, or cowardice → lesson: disciplined action
+   - Saturn–Jupiter: Excess, dogmatism → lesson: faith with realism
 
-- Simply the degree opposite Pluto
-- Shows what must be developed to **balance Pluto's existing center of gravity**
-- Engaging the PPP house/sign is how the soul evolves out of repetitive past-life patterns
+### Step 3: Pluto — Evolutionary Layer
 
-### Reading Sequence (Evolutionary Astrology)
+**Data from**: `karmic.pluto_polarity_point`
 
-1. Pluto by sign and house
-2. South Node by sign and house
-3. Ruler of the South Node
-4. Pluto's polarity point
-5. North Node by sign and house
-6. Ruler of the North Node
+1. **Pluto sign and house**: Core past-life desires that shaped prior incarnations
+2. **Pluto's Polarity Point (PPP)**: The point opposite Pluto — what must be developed to balance Pluto's existing center of gravity. Engaging the PPP house/sign is how the soul evolves out of repetitive past-life patterns.
 
----
+### Step 4: Retrograde Planets
 
-## Retrograde Planets and Karma
+**Data from**: `overview.retrograde_planets` (from `include_overview=true`)
 
 - Retrograde planets indicate **unfinished business from past lives**
 - They "break the time barrier," carrying karmic material into the present incarnation
-- Schulman describes **three vibrational modes** for retrograde planets
 - Prioritize retrograde **personal planets** (Mercury, Venus, Mars) in karmic reading
 - Retrograde **Saturn** and **Pluto** add significant karmic weight
 
----
+### Step 5: 12th House — Spiritual Karma
 
-## 12th House: Spiritual Karma
+**Data from**: `karmic.twelfth_house`
 
 - The 12th house holds **spiritual and collective karma**
 - Planets here indicate unconscious patterns and past-life memories
 - The 12th house ruler's sign and house show how spiritual lessons manifest
 - Strong 12th house emphasis can indicate past lives of isolation, monasticism, or hidden service
 
+### Step 6: Synthesis
+
+1. Start with the **nodal axis** — what is the soul moving from and toward?
+2. Add **Saturn** — where must discipline and responsibility be applied?
+3. Add **Pluto** — what deep soul desires and transformations are at work?
+4. Check **retrogrades** — which functions carry unfinished business?
+5. Check **12th house** — what spiritual or hidden karma is present?
+6. Identify **repeated themes** across all indicators
+
 ---
 
 ## Karmic Synastry: Relationship Karma
 
-When analyzing two charts for karmic connections:
+**Call**: `calculate_synastry_chart` with `karmic_filter=true` or `get_karmic_relationship_summary`
+
+### Key Indicators Across All Three Layers
+
+**Synastry (interchart aspects):**
+- One person's Saturn on the other's South Node: Past-life bonds with themes of duty, control, or unfinished business
+- One person's Pluto on the other's South Node: Powerful past-life intensity (power, trauma, obsession)
+- One person's planet conjunct the other's North Node: Fated connection; the planet person helps the Node person grow
+- One person's planet conjunct the other's South Node: "I've known you forever" feeling; past-life familiarity
+- Saturn square either person's nodes: Karmic tension block; forces confrontation with unfinished lessons
 
-### Key Indicators
+**Composite chart:**
+- Composite Saturn sign/house: Where the relationship itself carries karmic weight
+- Composite Pluto sign/house: Power dynamics and transformation potential
+- Composite Node axis: The relationship's karmic purpose
 
-- **One person's Saturn on the other's South Node**: Past-life bonds with themes of duty, control, or unfinished business
-- **One person's Pluto on the other's South Node**: Powerful past-life intensity (power, trauma, obsession)
-- **One person's planet conjunct the other's North Node**: Fated connection; the planet person helps the Node person grow
-- **One person's planet conjunct the other's South Node**: "I've known you forever" feeling; past-life familiarity
-- **Saturn square either person's nodes**: Karmic tension block; forces confrontation with unfinished lessons
+**Davison chart:**
+- Davison Saturn: The relationship's structural karma
+- Davison Pluto: Deep transformation within the relationship
+- Davison Node axis: Long-term karmic evolution of the relationship
+
+### Node Pairs by Sign — Quick Reference
+
+| North Node | South Node | Core Theme |
+|---|---|---|
+| Aries | Libra | Independence vs. over-cooperation |
+| Taurus | Scorpio | Stability vs. crisis-seeking |
+| Gemini | Sagittarius | Curiosity vs. rigid certainty |
+| Cancer | Capricorn | Emotional openness vs. control |
+| Leo | Aquarius | Self-expression vs. detachment |
+| Virgo | Pisces | Discernment vs. escapism |
+| Libra | Aries | Cooperation vs. self-assertion |
+| Scorpio | Taurus | Transformation vs. stagnation |
+| Sagittarius | Gemini | Faith vs. scattered thinking |
+| Capricorn | Cancer | Self-reliance vs. dependence |
+| Aquarius | Leo | Collective vs. personal drama |
+| Pisces | Virgo | Surrender vs. perfectionism |
 
 ---
 
 ## Transit Triggers for Karmic Periods
 
+**Call**: `get_transit_preview` with date range
+
 | Transit | Karmic Meaning |
 |---|---|
-| **Saturn conjunct South Node** | Confronting past-life patterns; karmic reckoning |
-| **Saturn conjunct North Node** | Pushed toward growth; serious life-direction lessons |
-| **Pluto conjunct South Node** | Deep transformation of past-life patterns; can be slow and intense |
-| **Pluto conjunct North Node** | Transformative growth; power struggles around life direction |
-| **Node return (~18.6 years)** | Completion of a karmic cycle; major nodal activation |
-| **Eclipse conjunct natal nodes** | Fateful turning point; activation of nodal axis |
-| **Saturn return (~28-30)** | Karmic turning point; conscious engagement with nodal axis |
+| Saturn conjunct South Node | Confronting past-life patterns; karmic reckoning |
+| Saturn conjunct North Node | Pushed toward growth; serious life-direction lessons |
+| Pluto conjunct South Node | Deep transformation of past-life patterns; slow and intense |
+| Pluto conjunct North Node | Transformative growth; power struggles around life direction |
+| Node return (~18.6 years) | Completion of a karmic cycle; major nodal activation |
+| Eclipse conjunct natal nodes | Fateful turning point; activation of nodal axis |
+| Saturn return (~28-30) | Karmic turning point; conscious engagement with nodal axis |
 
 ---
 
-## Synthesizing a Karmic Reading
-
-1. Start with the **nodal axis** — what is the soul moving from and toward?
-2. Add **Saturn** — where must discipline and responsibility be applied?
-3. Add **Pluto** — what deep soul desires and transformations are at work?
-4. Check **retrogrades** — which functions carry unfinished business?
-5. Check **12th house** — what spiritual or hidden karma is present?
-6. Identify **repeated themes** across all indicators
-7. For relationships, overlay **karmic synastry** indicators
-8. Note **transit activations** — when karmic themes are triggered
-
 ## Important Caveats
 
 - Karma explains the "why," not the "what will happen"

+ 100 - 202
agent-guides/natal-astrology.md

@@ -1,264 +1,154 @@
 # Natal Astrology — Agent Interpretation Guide
 
 > For agents using the astro MCP to perform natal chart interpretation.
+> Resource URI: `astro://guides/natal-astrology`
 
-## Framework
-
-A natal chart is a symbolic map of personality, potential, and life themes. The art of interpretation is **synthesis** — weaving individual data points (planets, signs, houses, aspects) into a coherent narrative about the person.
+## Quick Reference: Tool Call Strategy
 
-### Core Principle
-
-> **Planets** = *what* is happening (psychological functions)
-> **Signs** = *how* the energy behaves (style, flavor)
-> **Houses** = *where* in life it plays out (life areas)
-> **Aspects** = *how the parts interact* (support, tension, fusion)
+```
+natal chart basic       → calculate_natal_chart(birth_data)
+natal + overview        → calculate_natal_chart(birth_data, include_overview=true)
+natal + patterns        → calculate_natal_chart(birth_data, include_patterns=true)
+natal + karmic          → calculate_natal_chart(birth_data, include_karmic=true)
+natal reading (full)    → calculate_natal_chart(birth_data, include_overview=true, include_patterns=true)
+karmic natal reading    → calculate_natal_chart(birth_data, include_overview=true, include_patterns=true, include_karmic=true)
+transit check           → get_transit_preview(birth_data, start, end)
+current transits        → get_transit_preview(birth_data, today, today+30d)
+```
 
 ---
 
-## Reading Order
-
-Use this checklist for every natal reading:
-
-### 1. Chart Overview
-- **Element balance**: Which elements dominate? Which are missing?
-- **Modality balance**: Cardinal/fixed/mutable distribution
-- **Hemisphere emphasis**: Upper/lower, east/west
-- **Chart shape**: Bundle, bowl, splash, etc.
-- **Stelliums**: Any sign or house with 3+ planets?
-
-### 2. The Big Three
-- **Sun** (sign + house): Core identity and purpose
-- **Moon** (sign + house): Emotional needs and instincts
-- **Ascendant** (sign): Persona and approach to life
-- **Chart ruler**: Ruler of the Ascendant — its sign, house, and aspects
-
-### 3. Angles and Their Rulers
-- Signs on the 1st, 4th, 7th, 10th house cusps
-- Rulers of these angles — their condition
-- Planets conjunct any angle (highly emphasized)
-
-### 4. Personal Planets
-- **Mercury**: Thinking and communication style
-- **Venus**: Love style, values, aesthetics
-- **Mars**: Drive, assertiveness, conflict style
-- For each: sign + house + key aspects
-
-### 5. Social and Outer Planets
-- **Jupiter**: Growth, opportunity, faith
-- **Saturn**: Challenges, lessons, mastery
-- **Uranus/Neptune/Pluto**: Generational themes; personal when tightly aspecting angles or personal planets
-
-### 6. Lunar Nodes
-- **South Node**: Past patterns, comfort zone, innate talents
-- **North Node**: Growth direction, life purpose
-- Aspects to the nodal axis
-
-### 7. Aspect Patterns
-- **T-squares**: Stress + potential (identify apex planet)
-- **Grand trines**: Natural talent and ease
-- **Grand crosses**: Intense tension requiring balance
-- **Yods**: Fated, sensitive points
-
-### 8. Synthesis
-- Identify 3–5 **recurring themes**
-- Translate technical factors into plain language
-- What does this person need to feel fulfilled?
-- Where are their strengths and growth edges?
-
----
-
-## The Big Three in Detail
-
-### Sun — Core Identity
-
-The Sun represents your **essential self** — who you are when you're being most authentic.
-
-- **Sign**: How you shine. A Sun in Aries shines through initiative and courage. A Sun in Pisces shines through compassion and imagination.
-- **House**: Where you seek recognition and purpose. Sun in the 10th = purpose through career. Sun in the 4th = purpose through home and family.
-- **Key aspects**: Modify the expression. Sun conjunct Saturn = serious, disciplined identity. Sun square Uranus = rebellious, unpredictable identity.
-
-### Moon — Emotional World
-
-The Moon represents your **inner self** — emotional needs, instincts, what makes you feel safe.
-
-- **Sign**: Your emotional style. Moon in Cancer = needs nurturing and security. Moon in Aquarius = needs freedom and intellectual connection.
-- **House**: Life area that strongly affects mood. Moon in the 7th = emotions tied to relationships. Moon in the 2nd = emotions tied to financial security.
-- **Key aspects**: Moon-Venus = natural emotional warmth. Moon-Saturn = emotional restraint or insecurity. Moon-Mars = emotional reactivity.
-
-### Ascendant — Persona
+## Framework
 
-The Ascendant is the **mask** you wear — how others first experience you.
+A natal chart is a symbolic map of personality, potential, and life themes. The art of interpretation is **synthesis** — weaving individual data points (planets, signs, houses, aspects) into a coherent narrative about the person.
 
-- **Sign**: Your outward style. Aries Ascendant = direct, energetic first impression. Libra Ascendant = charming, diplomatic first impression.
-- **Chart ruler**: The planet ruling your Ascendant sign is the **most important planet** in the chart. Its condition (sign, house, aspects) tells you where your life energy is directed.
+**Core Principle:**
+- **Planets** = *what* is happening (psychological functions)
+- **Signs** = *how* the energy behaves (style, flavor)
+- **Houses** = *where* in life it plays out (life areas)
+- **Aspects** = *how the parts interact* (support, tension, fusion)
 
 ---
 
-## Planet Interpretation Quick Reference
-
-### Personal Planets
+## Standard Natal Reading Workflow
 
-| Planet | Function | Sign Shows | House Shows |
-|---|---|---|---|
-| **Sun** | Identity, purpose, vitality | How you shine | Where you seek recognition |
-| **Moon** | Emotions, needs, instincts | Emotional style | What affects your mood |
-| **Mercury** | Thinking, communication | Mental style | Area of focused learning |
-| **Venus** | Love, values, pleasure | Love style | What you value/attract |
-| **Mars** | Drive, action, conflict | How you assert | Where you take action |
+### Step 1: Chart Overview
 
-### Social Planets
+**Call**: `calculate_natal_chart` with `include_overview=true`
 
-| Planet | Function | Sign Shows | House Shows |
-|---|---|---|---|
-| **Jupiter** | Growth, faith, expansion | How you grow | Where opportunity flows |
-| **Saturn** | Discipline, fear, mastery | How you're tested | Where you must build |
+Process the `overview` section:
+1. **Element balance** — Which elements dominate? Which are missing? Missing element = compensatory life area.
+2. **Modality balance** — Cardinal (initiating), Fixed (persistent), Mutable (adaptable). Dominant modality = core approach to life.
+3. **Hemisphere emphasis** — Upper (7-12, outer/public), Lower (1-6, private), East (10-3, self-driven), West (4-9, relational).
+4. **Stelliums** — 3+ planets in a sign/house = intense focus on that theme.
+5. **Empty houses** — Life areas that operate more unconsciously, less self-directed.
+6. **Chart ruler** — The planet ruling the Ascendant sign is the most important planet. Its sign, house, and aspects show where life energy is directed.
 
-### Outer Planets
+### Step 2: The Big Three
 
-| Planet | Function | Personal When... |
-|---|---|---|
-| **Uranus** | Freedom, disruption, innovation | Conjunct Sun/Moon/Ascendant or personal planet |
-| **Neptune** | Dreams, spirituality, dissolution | Conjunct Sun/Moon/Ascendant or personal planet |
-| **Pluto** | Power, transformation, depth | Conjunct Sun/Moon/Ascendant or personal planet |
-
----
+**Data from**: Step 1 planets list (Sun, Moon, Ascendant angles)
 
-## Sign Interpretation Quick Reference
+1. **Sun** (sign + house): Core identity and purpose
+2. **Moon** (sign + house): Emotional needs and instincts
+3. **Ascendant** (sign from angles): Persona and approach to life
+4. **Chart ruler**: Ruler of the Ascendant — its sign, house, and aspects (from overview)
+5. **Sun-Moon phase** (from lunar_phase): New moon (beginning), waxing (building), full (culmination), waning (releasing)
 
-### By Element
+### Step 3: Angles and Angle Rulers
 
-| Element | Expression |
-|---|---|
-| **Fire** | Inspiring, energetic, action-oriented, passionate |
-| **Earth** | Practical, grounded, material, steady |
-| **Air** | Intellectual, communicative, social, conceptual |
-| **Water** | Emotional, intuitive, empathic, deep |
+**Data from**: Step 1 angles + overview house_rulers
 
-### By Modality
-
-| Modality | Expression |
-|---|---|
-| **Cardinal** | Initiating, leading, action-oriented |
-| **Fixed** | Determined, persistent, resistant to change |
-| **Mutable** | Adaptable, flexible, versatile |
-
----
-
-## House Interpretation Quick Reference
+- Signs on the 1st, 4th, 7th, 10th house cusps
+- Rulers of these angles and their condition
+- Planets conjunct any angle (highly emphasized)
 
-### Angular Houses (1, 4, 7, 10) — Most Powerful
+### Step 4: Personal Planets
 
-| House | Domain | "I am..." |
-|---|---|---|
-| 1st | Self, identity, appearance | "I am..." |
-| 4th | Home, family, roots | "I come from..." |
-| 7th | Partnerships, relationships | "I relate through..." |
-| 10th | Career, public role | "I achieve..." |
+**Data from**: Step 1 planets list + aspects (filter for tight orbs, ≤3°)
 
-### Succedent Houses (2, 5, 8, 11) — Stabilizing
+- **Mercury**: Thinking and communication style
+- **Venus**: Love style, values, aesthetics
+- **Mars**: Drive, assertiveness, conflict style
+- For each: sign + house + key aspects
 
-| House | Domain | Focus |
-|---|---|---|
-| 2nd | Values, money, self-worth | Security and resources |
-| 5th | Creativity, romance, children | Self-expression and joy |
-| 8th | Shared resources, intimacy, transformation | Depth and merging |
-| 11th | Friends, groups, goals | Community and aspirations |
+### Step 5: Social and Outer Planets
 
-### Cadent Houses (3, 6, 9, 12) — Transitional
+- **Jupiter**: Growth, opportunity, faith
+- **Saturn**: Challenges, lessons, mastery
+- **Uranus/Neptune/Pluto**: Generational themes; personal when tightly aspecting angles or personal planets
 
-| House | Domain | Focus |
-|---|---|---|
-| 3rd | Communication, learning, siblings | Information and connection |
-| 6th | Work, health, routines | Service and daily life |
-| 9th | Philosophy, travel, higher mind | Meaning and expansion |
-| 12th | Subconscious, spirituality, retreat | Inner world and surrender |
+### Step 6: Aspect Patterns
 
----
+**Call**: `calculate_natal_chart` with `include_patterns=true`
 
-## Aspect Interpretation Quick Reference
+Use the `aspect_patterns` output:
+- **T-squares**: Stress + potential; apex planet is focal point
+- **Grand Trines**: Natural talent and ease; can indicate complacency
+- **Grand Cross**: Intense tension requiring balance and flexibility
+- **Yods**: Fated, sensitive points; apex planet is destiny focal point
 
-### Major Aspects
+Also check `chart_shape`:
+- **Bundle**: Intense focus, specialized life approach
+- **Bowl**: Self-contained, collecting experiences in one direction
+- **Bucket**: Handle planet directs all the energy
+- **Splash**: Diverse interests, scattered or universal
+- **Locomotive**: Driving force, the gap is where they push forward
+- **Seesaw**: Two opposing pulls that need balance
+- **Splay**: Multiple talents, needs integration
 
-| Aspect | Angle | Meaning | Keyword |
-|---|---|---|---|
-| **Conjunction** | 0° | Fusion, intensification | Blending |
-| **Sextile** | 60° | Cooperation, opportunity | Supporting |
-| **Square** | 90° | Friction, tension, growth | Challenging |
-| **Trine** | 120° | Harmony, ease, talent | Flowing |
-| **Opposition** | 180° | Polarity, projection, balance | Tension |
+### Step 7: Synthesis
 
-### How to Interpret Any Aspect
+Identify 3–5 **recurring themes** across the chart:
+1. **Repeated elements**: Sun + Moon + Ascendant in fire = fire-dominant personality
+2. **Contradictions**: Sun in Aries but Moon in Libra = inner tension between assertion and harmony
+3. **Compensations**: Missing fire element but Mars in 1st house = fire through action
+4. **Dominant aspects**: Multiple squares to Saturn = a "Saturnian" life with heavy lessons
+5. **Unaspected planets**: Function operates independently, sometimes unconsciously
 
-1. **Identify the two planets** — what functions do they represent?
-2. **Note the aspect type** — supportive or challenging?
-3. **Check the houses** — which life areas are involved?
-4. **Check the signs** — what's the tone of the interaction?
-5. **Synthesize**: "The [Planet A] function and [Planet B] function are [blended/in tension/in harmony], creating [dynamic] between [life area A] and [life area B]."
+### Step 8: Current Transits (Optional)
 
-### Key Aspect Patterns
+**Call**: `get_transit_preview` with a date range around today
 
-| Pattern | Shape | Meaning |
-|---|---|---|
-| **T-square** | 2 oppositions + 1 square | Stress + potential; apex planet is focal point |
-| **Grand trine** | 3 trines (same element) | Natural talent and ease; can be too comfortable |
-| **Grand cross** | 2 oppositions + 4 squares | Intense tension; requires balance and flexibility |
-| **Yod** | 2 sextiles + 2 quincunxes | Fated, sensitive point; apex planet is destiny focal point |
-| **Stellium** | 3+ planets in sign/house | Intense focus on that sign/house theme |
+Shows which natal planets are being activated by transits right now. Focus on:
+- Transits to Sun, Moon, Ascendant (personal activation)
+- Saturn transits (life structure changes)
+- Jupiter transits (growth opportunities)
+- Pluto transits (deep transformation)
 
 ---
 
-## Synthesis: Building the Narrative
-
-### What to Look For
-
-1. **Repeated themes**: If Sun, Moon, and Ascendant all emphasize relationships → relationship is a core life theme
-2. **Contradictions**: Sun in Aries (assertive) but Moon in Libra (accommodating) → inner tension between self-assertion and harmony
-3. **Compensations**: Missing fire element but Mars in the 1st house → fire expressed through action rather than identity
-4. **Dominant aspects**: Multiple squares to Saturn → a "Saturnian" life with heavy lessons around responsibility
-5. **Unaspected planets**: Function operates independently, sometimes unconsciously
-
-### Output Structure for a Natal Reading
+## Output Structure for a Natal Reading
 
-1. **Overview**: Core personality in 2–3 sentences
+1. **Overview**: Core personality in 2–3 sentences (from element/modality balance, chart shape)
 2. **The Big Three**: Sun, Moon, Ascendant — identity, emotions, persona
 3. **Chart Ruler**: Where life energy is directed
 4. **Key Planet Placements**: 3–5 most significant planet-in-sign-in-house combinations
 5. **Major Aspects**: 3–5 tightest/most significant aspects with interpretation
 6. **Aspect Patterns**: Any T-squares, grand trines, grand crosses
-7. **Life Themes**: Recurring patterns across the chart
-8. **Strengths and Gifts**: Natural talents and supportive aspects
-9. **Growth Edges**: Challenging aspects and what they're teaching
-10. **Current Transits** (optional): What's activating the chart right now
-
-### Interpretation Tone
-
-- **Empowering, not deterministic**: The chart shows potential and tendencies, not fixed fate
-- **Strengths-first**: Lead with gifts before discussing challenges
-- **Actionable**: For each challenge, suggest what the person can *do* with it
-- **Plain language**: Avoid jargon when possible; translate technical terms
-- **Holistic**: Weave individual placements into a coherent story, not a list of bullet points
+7. **Chart Shape**: Overall life approach pattern
+8. **Life Themes**: Recurring patterns across the chart
+9. **Strengths and Gifts**: Natural talents and supportive aspects
+10. **Growth Edges**: Challenging aspects and what they're teaching
+11. **Current Transits** (optional): What's activating the chart right now
 
 ---
 
-## Quick Interpretation Templates
+## Interpretation Templates
 
 ### Planet in Sign in House
-
 > **[Planet]** in **[Sign]** in **[House]** → [Planet function] expressed in the style of [Sign keywords] through the life area of [House].
 
-**Example**: "Mars in Capricorn in the 6th house → Drive and initiative (Mars) expressed with discipline and ambition (Capricorn) through daily work and health routines (6th)."
+Example: "Mars in Capricorn in the 6th house → Drive and initiative (Mars) expressed with discipline and ambition (Capricorn) through daily work and health routines (6th)."
 
 ### Aspect
-
 > **[Planet A]** in **[Sign X]** **[aspect]** **[Planet B]** in **[Sign Y]** → The [Planet A function] and [Planet B function] are [blended/in tension/in harmony], creating [dynamic] between [life area A] and [life area B].
 
-**Example**: "Venus in Taurus trine Saturn in Virgo → Love and affection (Venus) flow naturally with discipline and commitment (Saturn), creating a stable, enduring approach to relationships and values."
+Example: "Venus in Taurus trine Saturn in Virgo → Love and affection (Venus) flow naturally with discipline and commitment (Saturn), creating a stable, enduring approach to relationships and values."
 
 ### Chart Ruler
-
 > The chart ruler is **[Planet]** in **[Sign]** in **[House]** → Life energy is strongly directed toward [house themes], expressed through [sign style].
 
-**Example**: "The chart ruler is Mercury in Sagittarius in the 9th house → Life energy is directed toward higher learning, philosophy, and travel, expressed through an optimistic, exploratory communication style."
+Example: "The chart ruler is Mercury in Sagittarius in the 9th house → Life energy is directed toward higher learning, philosophy, and travel, expressed through an optimistic, exploratory communication style."
 
 ---
 
@@ -266,7 +156,15 @@ The Ascendant is the **mask** you wear — how others first experience you.
 
 1. **Sun sign only**: The Sun is important, but it's only one piece. Always read the full chart.
 2. **Overemphasizing hard aspects**: Squares and oppositions are growth opportunities, not curses.
-3. **Ignoring the chart ruler**: The ruler of the Ascendant is often the most important planet in the chart.
+3. **Ignoring the chart ruler**: The ruler of the Ascendant is often the most important planet.
 4. **Reading planets in isolation**: Always consider sign + house + aspects together.
 5. **Deterministic language**: Avoid "you will" — use "you tend to," "you may find," "there's a theme of."
 6. **Missing the forest for the trees**: Step back and identify the 3–5 big themes before diving into details.
+
+## Interpretation Tone
+
+- **Empowering, not deterministic**: The chart shows potential and tendencies, not fixed fate
+- **Strengths-first**: Lead with gifts before discussing challenges
+- **Actionable**: For each challenge, suggest what the person can *do* with it
+- **Plain language**: Avoid jargon when possible; translate technical terms
+- **Holistic**: Weave individual placements into a coherent story, not a list of bullet points

+ 128 - 166
agent-guides/relationship-astrology.md

@@ -1,63 +1,134 @@
 # Relationship Astrology — Agent Interpretation Guide
 
 > For agents using the astro MCP to perform relationship chart interpretation.
+> Resource URI: `astro://guides/relationship-astrology`
+
+## Quick Reference: Tool Call Strategy
+
+```
+synastry (basic)        → calculate_synastry_chart(p1, p2)
+synastry + filters      → calculate_synastry_chart(p1, p2, karmic_filter=true)
+synastry + Davison      → calculate_synastry_chart(p1, p2, include_davison_full=true)
+composite chart         → calculate_composite_chart(p1, p2)
+davison chart           → calculate_davison_chart(p1, p2)
+relationship timing     → get_composite_transit_preview(p1, p2, start, end)
+karmic relationship     → get_karmic_relationship_summary(p1_id, p2_id)
+full relationship read  → synastry(karmic_filter=true) + composite + davison + karmic_summary
+```
+
+---
 
 ## Overview
 
 Relationship astrology uses four main techniques to analyze the dynamics between two people:
 
-| Technique | What It Shows |
-|---|---|
-| **Synastry** | Interaction patterns — how Person A's planets trigger Person B's planets |
-| **Composite Chart** | The relationship as its own entity — structure, identity, public face |
-| **Davison Chart** | The relationship's "birth" — inner experience, emotional tone, long-term evolution |
-| **Coalescent Chart** | Harmonic responsiveness to transits (rarely used) |
+| Technique | What It Shows | Tool |
+|---|---|---|
+| **Synastry** | Interaction patterns — how Person A's planets trigger Person B's planets | `calculate_synastry_chart` |
+| **Composite Chart** | The relationship as its own entity — structure, identity, public face | `calculate_composite_chart` |
+| **Davison Chart** | The relationship's "birth" — inner experience, emotional tone, long-term evolution | `calculate_davison_chart` |
+| **Transit Timing** | When relationship themes are activated | `get_composite_transit_preview`, `get_davison_transit_preview` |
 
 **For serious analysis, use all three main techniques plus natal charts.** They are complementary layers, not competing methods.
 
 ---
 
-## Reading Workflow
-
-### Step 1: Natal Charts
-Understand each person individually first. What are their core needs, attachment styles, relationship patterns? This provides context for everything that follows.
-
-### Step 2: Synastry
-Analyze the **interaction patterns** between the two charts:
-- Tightest interchart aspects (tightest orbs = most significant)
-- Venus-Mars contacts (chemistry)
-- Moon contacts (emotional bonding)
-- Saturn contacts (commitment, karma, heaviness)
-- Node contacts (fated connections)
-- House overlays (which life areas are activated)
-
-### Step 3: Composite Chart
-Analyze the **relationship as its own entity**:
-- Composite Sun (identity and purpose)
-- Composite Moon (emotional tone)
-- Angular planets (loudest voices)
-- Key aspect patterns (especially Saturn, Pluto, Neptune)
-- House emphasis (life area of focus)
-
-### Step 4: Davison Chart
-Analyze the **relationship's inner experience**:
-- Same approach as composite but focused on emotional/internal tone
-- More accurate for timing techniques (progressions, solar arcs)
-- Use for long-term evolution tracking
-
-### Step 5: Synthesis
-Find **repeated themes** across synastry + composite + Davison. These recurring patterns are the core narrative of the relationship.
+## Standard Relationship Reading Workflow
 
----
+### Step 1: Natal Charts (Context)
+
+**Call**: `calculate_natal_chart` for each person individually
+
+Understand each person first. What are their core needs, attachment styles, relationship patterns? This provides context for everything that follows. Key questions:
+- What does each person need from a relationship? (Moon sign/house, Venus sign/house)
+- What are their relationship patterns? (7th house, Venus aspects, Saturn aspects)
+- Where might they have karmic baggage? (South Node, Saturn, 12th house)
+
+### Step 2: Synastry — Interaction Patterns
+
+**Call**: `calculate_synastry_chart` (use `karmic_filter=true` for karmic focus, `significator_filter=true` for romantic focus)
+
+Process the `summary` section:
 
-## Synastry Interpretation
+1. **Top aspects** (summary.top_aspects): The 10-15 tightest interchart aspects — these are the strongest interaction patterns
+2. **Venus-Mars contacts** (summary.venus_mars_contacts): Chemistry, sexual attraction, desire dynamics
+3. **Sun-Moon contacts** (summary.sun_moon_contacts): Core compatibility, ego-emotion bonding
+4. **Saturn contacts** (summary.saturn_contacts): Commitment, karma, heaviness, stability
+5. **Node contacts** (summary.node_contacts): Fated connections, growth catalysts
+6. **House overlays**: Which of Person A's planets fall in Person B's houses (and vice versa) — shows which life areas are activated
+
+**Key Principle**: Each person **plays the role** of their planet in an interchart aspect. If A's Saturn conjuncts B's Sun, A takes on the Saturn role when B expresses Sun qualities.
+
+### Step 3: Composite Chart — The Relationship Entity
+
+**Call**: `calculate_composite_chart`
+
+The composite chart describes the **relationship as its own entity**, not either person.
+
+Reading order:
+1. **Composite Ascendant**: How the relationship presents itself to the world
+2. **Composite Sun**: Relationship identity and purpose
+3. **Composite Moon**: Emotional tone, daily rhythms
+4. **Angular planets** (conjunct ASC, MC, DSC, IC): Loudest voices in the relationship
+5. **Key aspect patterns**: Especially Saturn, Pluto, Neptune
+6. **House emphasis**: Which life areas the relationship focuses on
+7. **Chart ruler**: How the relationship navigates challenges
+8. **Unaspected planets**: Blind spots in the relationship
+
+**Orb guidelines for composite**: 3° max (tighter than natal). Sub-1° = defining feature.
+
+### Step 4: Davison Chart — Inner Experience
+
+**Call**: `calculate_davison_chart` (or `calculate_synastry_chart` with `include_davison_full=true`)
+
+The Davison chart is a **real chart at a real moment in time** (unlike the composite which is purely symbolic). This means it can be progressed and directed like a natal chart.
+
+**Composite vs Davison:**
+| | Composite | Davison |
+|---|---|---|
+| Nature | Symbolic blueprint | Real moment in space/time |
+| Shows | Structure, public face | Inner tone, emotional experience |
+| Best for | How relationship functions | How it feels and evolves |
+| Timing | Transits | Transits + progressions + solar arcs |
+
+### Step 5: Karmic Overlay
+
+**Call**: `get_karmic_relationship_summary` or `calculate_synastry_chart` with `karmic_filter=true`
+
+See the Karmic Astrology guide for full interpretation framework. Key indicators:
+- Saturn-Node contacts between charts (karmic contracts)
+- Pluto-South Node contacts (intense past-life patterns)
+- Composite/Davison chart emphasizing 8th house (shared transformation)
+- South Node contacts suggesting familiarity from past lives
+- Saturn-heavy composites suggesting serious, destiny-laden relationships
+
+### Step 6: Transit Timing
+
+**Call**: `get_composite_transit_preview` or `get_davison_transit_preview`
+
+Shows when relationship themes are activated by transits:
+- **Saturn transits** to composite/Davison angles: Tests and restructuring
+- **Jupiter transits**: Expansion and growth
+- **Uranus transits**: Sudden changes, disruption
+- **Pluto transits**: Deep transformation
+- **Eclipses** hitting composite/Davison angles: Fateful turning points
+
+### Step 7: Synthesis
+
+Find **repeated themes** across synastry + composite + Davison. These recurring patterns are the core narrative of the relationship.
+
+1. **Identify the core narrative** — What story do all three layers tell together?
+2. **Note contradictions** — Where do the layers diverge? These are areas of complexity.
+3. **Assess karmic weight** — How many karmic indicators are present? (Saturn, Pluto, Nodes)
+4. **Determine relationship type** — Romantic, karmic, business, casual, fated?
+5. **Identify growth edges** — What are the challenging aspects teaching?
+6. **Check timing** — What transits are activating the relationship now or soon?
 
-### Key Principle
-Each person **plays the role** of their planet in an interchart aspect. If A's Saturn conjuncts B's Sun, A takes on the Saturn role when B expresses Sun qualities. Think of it as a dance where each person activates different roles depending on context.
+---
 
-### Interchart Aspects: Quick Reference
+## Synastry Aspect Interpretation Quick Reference
 
-#### Venus-Mars (Chemistry)
+### Venus-Mars (Chemistry)
 | Aspect | Meaning |
 |---|---|
 | Conjunction | Intense, obvious physical and romantic attraction |
@@ -65,30 +136,33 @@ Each person **plays the role** of their planet in an interchart aspect. If A's S
 | Opposition | Strong magnetism with push-pull dynamics |
 | Square | Highly stimulating but prone to friction and fights |
 
-#### Moon-Venus (Emotional Warmth)
+### Moon-Venus (Emotional Warmth)
 - Creates tenderness, caring, feeling emotionally "fed" by partner
 - One of the best aspects for domestic comfort and feeling cherished
 - Conjunction, trine, sextile = easy flow; hard aspects = needs clash
 
-#### Sun-Moon (Core Compatibility)
+### Sun-Moon (Core Compatibility)
 - Deep understanding at ego and emotional levels
 - Conjunction/trine/sextile: natural "getting" of each other
 - Opposition: complementary but different needs
 - Square: intense attraction with emotional friction
 
-#### Saturn Aspects (Commitment and Karma)
-- Conjunctions feel fated, dutious, sometimes heavy
+### Saturn Aspects (Commitment and Karma)
+- Conjunctions feel fated, dutiful, sometimes heavy
 - Trines/sextiles provide stability and reliability
 - Squares/oppositions bring tests, delays, pressure
 - Not inherently bad — many long marriages have strong Saturn contacts
 
-#### Node Contacts (Fated Connections)
+### Node Contacts (Fated Connections)
 - Planets on North Node: destined connection, growth catalyst
 - Planets on South Node: "known you forever" past-life feel
 - Saturn on North Node: karmic teacher relationship
 - Saturn square Nodes: karmic block, timing challenges
 
-### House Overlays
+---
+
+## House Overlays Interpretation
+
 When Planet A falls in Planet B's house:
 - **1st house**: Strongly visible, shapes self-image
 - **4th house**: Emotional significance, feeling "at home"
@@ -97,78 +171,6 @@ When Planet A falls in Planet B's house:
 - **10th house**: Public significance, affects career
 - **12th house**: Hidden or spiritual connection, can be confusing
 
-### Orb Guidelines
-- Personal planets (Sun through Saturn): 5° max
-- Outer planets: 3° max
-- Tighter orbs = stronger effect
-- Using significance scoring: conjunction/opposition > square > trine > sextile
-
----
-
-## Composite Chart Interpretation
-
-### Key Principle
-**The composite chart describes the relationship entity, not either person.** Composite Moon in Scorpio doesn't mean either person is emotionally intense — it means the *relationship itself* has that quality.
-
-### Reading Order
-1. **Chart shape**: House clusters (upper/lower, east/west hemispheres)
-2. **Composite Ascendant**: How the relationship presents itself
-3. **Composite Sun**: Relationship identity and purpose
-4. **Composite Moon**: Emotional tone
-5. **Angular planets**: Loudest voices
-6. **Most-aspected planet**: Recurring theme
-7. **Unaspected planets**: Blind spots
-8. **Chart ruler**: How the relationship navigates challenges
-
-### Composite Planet Meanings
-| Planet | Meaning in Composite |
-|---|---|
-| Sun | Core identity and purpose of the relationship |
-| Moon | Emotional tone, comfort, daily rhythms |
-| Mercury | Communication style as a couple |
-| Venus | Love style, affection, shared values |
-| Mars | Drive, passion, conflict style |
-| Jupiter | Growth, optimism, shared beliefs |
-| Saturn | Structure, commitment, tests |
-| Uranus | Unpredictability, freedom, innovation |
-| Neptune | Idealism, spiritual connection, illusion |
-| Pluto | Power dynamics, transformation, depth |
-
-### Composite Aspects
-- **Orbs**: 3° max (tighter than natal). Sub-1° = defining feature.
-- **Saturn aspects**: Structural foundation. No Saturn = free but unstable. Strong Saturn = enduring but demanding.
-- **Pluto aspects**: Power struggles and transformation potential.
-- **Neptune aspects**: Idealization risk. Watch for disillusionment when glamour fades.
-- **Sun-Saturn conjunction**: Core defining feature — serious but potentially very long-lasting.
-
-### Common Mistakes
-1. Reading composite as a natal chart for one person
-2. Treating difficult aspects as relationship doom
-3. Reading composite in isolation (always use with synastry + natal)
-
----
-
-## Davison Chart Interpretation
-
-### Technical Note
-The Davison chart is a **real chart at a real moment in time** (midpoint of two births), unlike the composite which is purely symbolic. This means it can be progressed and directed like a natal chart.
-
-### Composite vs. Davison
-| | Composite | Davison |
-|---|---|---|
-| Nature | Symbolic blueprint | Real moment in space/time |
-| Shows | Structure, public face | Inner tone, emotional experience |
-| Best for | How relationship functions | How it feels and evolves |
-| Timing | Transits | Transits + progressions + solar arcs |
-
-### Practical Staging
-- **Synastry** → when people first meet
-- **Composite** → once relationship forms
-- **Davison** → once formally committed
-
-### When They Differ
-Look for **repeated themes** across both. They are "two versions of the same story." Same planets emphasized, similar house themes = core relationship narrative confirmed.
-
 ---
 
 ## Relationship Type Indicators
@@ -201,50 +203,10 @@ Look for **repeated themes** across both. They are "two versions of the same sto
 
 ---
 
-## Timing Relationship Events
-
-### Composite/Davison Transits
-- **Saturn transits** to composite angles: Tests and restructuring
-- **Jupiter transits** to composite angles: Expansion and growth
-- **Uranus transits**: Sudden changes, disruption
-- **Pluto transits**: Deep transformation
-- **Eclipses** hitting composite angles: Fateful turning points
-
-### Transit Preview
-Use the astro MCP's transit preview capability on the composite and Davison charts to identify windows of activation.
-
----
-
-## Karmic Relationship Indicators
-
-(See karmic-agent-GUIDE.md for full detail)
-
-### Key Indicators Across All Three Layers
-- Saturn-Node contacts between charts (karmic contracts)
-- Pluto-South Node contacts (intense past-life patterns)
-- Composite/Davison chart emphasizing 8th house (shared transformation)
-- South Node contacts suggesting familiarity from past lives
-- Saturn-heavy composites suggesting serious, destiny-laden relationships
-
----
-
-## Synthesis: Building the Narrative
-
-When synthesizing a relationship reading across all layers:
-
-1. **Identify the core narrative** — What story do all three layers tell together?
-2. **Note contradictions** — Where do the layers diverge? These are areas of complexity.
-3. **Assess karmic weight** — How many karmic indicators are present? (Saturn, Pluto, Nodes)
-4. **Determine relationship type** — Romantic, karmic, business, casual, fated?
-5. **Identify growth edges** — What are the challenging aspects teaching?
-6. **Check timing** — What transits are activating the relationship now or soon?
+## Common Mistakes
 
-### Output Structure for Agents
-A good relationship analysis output should include:
-- **Overview**: Core narrative in 2-3 sentences
-- **Synastry highlights**: Top 5-7 interchart aspects with interpretation
-- **Composite reading**: Relationship identity, strengths, challenges
-- **Davison reading** (if calculated): Inner emotional experience
-- **Karmic indicators**: Any significant past-life or soul-contract themes
-- **Current transit influences**: What's activating the relationship right now
-- **Guidance**: What each person can do to support the relationship's growth
+1. **Reading composite as a natal chart for one person** — The composite describes the relationship entity, not either person.
+2. **Treating difficult aspects as relationship doom** — Hard aspects create friction that can strengthen the relationship.
+3. **Reading composite in isolation** — Always use with synastry + natal charts.
+4. **Ignoring house overlays** — They show which life areas are most activated by the relationship.
+5. **Overemphasizing Venus-Mars** — Chemistry is important, but Sun-Moon and Saturn contacts determine long-term compatibility.

+ 27 - 0
src/astro_mcp/server.py

@@ -27,6 +27,7 @@ from . import tools  # noqa: E402, F401
 # Templates and static files
 TEMPLATES_DIR = Path(__file__).resolve().parent.parent.parent / "templates"
 STATIC_DIR = Path(__file__).resolve().parent.parent.parent / "static"
+GUIDES_DIR = Path(__file__).resolve().parent.parent.parent / "agent-guides"
 
 templates = Jinja2Templates(directory=str(TEMPLATES_DIR))
 
@@ -54,6 +55,32 @@ def _tool_names() -> list[str]:
     ]
 
 
+def _read_guide(filename: str) -> str:
+    """Read an agent guide markdown file."""
+    path = GUIDES_DIR / filename
+    if path.exists():
+        return path.read_text(encoding="utf-8")
+    return f"# Error\n\nGuide not found: {filename}"
+
+
+@mcp.resource("astro://guides/natal-astrology")
+def natal_astrology_guide() -> str:
+    """Agent interpretation guide for natal chart analysis."""
+    return _read_guide("natal-astrology.md")
+
+
+@mcp.resource("astro://guides/karmic-astrology")
+def karmic_astrology_guide() -> str:
+    """Agent interpretation guide for karmic chart analysis."""
+    return _read_guide("karmic-astrology.md")
+
+
+@mcp.resource("astro://guides/relationship-astrology")
+def relationship_astrology_guide() -> str:
+    """Agent interpretation guide for relationship chart analysis."""
+    return _read_guide("relationship-astrology.md")
+
+
 def create_app() -> FastAPI:
     config.LOG_DIR.mkdir(parents=True, exist_ok=True)
     logging.basicConfig(

+ 276 - 184
src/astro_mcp/tools.py

@@ -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