caelus-mcp 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  MCP server for the [caelus](https://github.com/heavyblotto/caelus) ephemeris
4
4
  engine: seven chart tools over stdio. Computation only — positions, houses,
5
- aspects with orbs, event search — the model does the interpreting. No API
6
- keys, no ephemeris files, no network calls; the engine data ships inside the
7
- package.
5
+ aspects with orbs, event search — the model does the interpreting. It needs
6
+ no API keys, ephemeris files, or network calls; the engine data ships inside
7
+ the package.
8
8
 
9
9
  ## Setup
10
10
 
@@ -15,7 +15,7 @@ import { z } from "zod";
15
15
  export declare const chartOut: z.ZodObject<{
16
16
  utc: z.ZodString;
17
17
  houses: z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>;
18
- zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar"]>>;
18
+ zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar", "sidereal:galcent_0sag", "sidereal:true_citra"]>>;
19
19
  houses_requested: z.ZodOptional<z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>>;
20
20
  houses_fallback_reason: z.ZodOptional<z.ZodString>;
21
21
  bodies: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -93,7 +93,7 @@ export declare const chartOut: z.ZodObject<{
93
93
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
94
94
  orb: number;
95
95
  }[];
96
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
96
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
97
97
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
98
98
  houses_fallback_reason?: string | undefined;
99
99
  }, {
@@ -119,7 +119,7 @@ export declare const chartOut: z.ZodObject<{
119
119
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
120
120
  orb: number;
121
121
  }[];
122
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
122
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
123
123
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
124
124
  houses_fallback_reason?: string | undefined;
125
125
  }>;
@@ -190,7 +190,7 @@ export declare const synastryOut: z.ZodObject<{
190
190
  a: z.ZodObject<{
191
191
  utc: z.ZodString;
192
192
  houses: z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>;
193
- zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar"]>>;
193
+ zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar", "sidereal:galcent_0sag", "sidereal:true_citra"]>>;
194
194
  houses_requested: z.ZodOptional<z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>>;
195
195
  houses_fallback_reason: z.ZodOptional<z.ZodString>;
196
196
  bodies: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -268,7 +268,7 @@ export declare const synastryOut: z.ZodObject<{
268
268
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
269
269
  orb: number;
270
270
  }[];
271
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
271
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
272
272
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
273
273
  houses_fallback_reason?: string | undefined;
274
274
  }, {
@@ -294,14 +294,14 @@ export declare const synastryOut: z.ZodObject<{
294
294
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
295
295
  orb: number;
296
296
  }[];
297
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
297
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
298
298
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
299
299
  houses_fallback_reason?: string | undefined;
300
300
  }>;
301
301
  b: z.ZodObject<{
302
302
  utc: z.ZodString;
303
303
  houses: z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>;
304
- zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar"]>>;
304
+ zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar", "sidereal:galcent_0sag", "sidereal:true_citra"]>>;
305
305
  houses_requested: z.ZodOptional<z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>>;
306
306
  houses_fallback_reason: z.ZodOptional<z.ZodString>;
307
307
  bodies: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -379,7 +379,7 @@ export declare const synastryOut: z.ZodObject<{
379
379
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
380
380
  orb: number;
381
381
  }[];
382
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
382
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
383
383
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
384
384
  houses_fallback_reason?: string | undefined;
385
385
  }, {
@@ -405,7 +405,7 @@ export declare const synastryOut: z.ZodObject<{
405
405
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
406
406
  orb: number;
407
407
  }[];
408
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
408
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
409
409
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
410
410
  houses_fallback_reason?: string | undefined;
411
411
  }>;
@@ -451,7 +451,7 @@ export declare const synastryOut: z.ZodObject<{
451
451
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
452
452
  orb: number;
453
453
  }[];
454
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
454
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
455
455
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
456
456
  houses_fallback_reason?: string | undefined;
457
457
  };
@@ -478,7 +478,7 @@ export declare const synastryOut: z.ZodObject<{
478
478
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
479
479
  orb: number;
480
480
  }[];
481
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
481
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
482
482
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
483
483
  houses_fallback_reason?: string | undefined;
484
484
  };
@@ -514,7 +514,7 @@ export declare const synastryOut: z.ZodObject<{
514
514
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
515
515
  orb: number;
516
516
  }[];
517
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
517
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
518
518
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
519
519
  houses_fallback_reason?: string | undefined;
520
520
  };
@@ -541,7 +541,7 @@ export declare const synastryOut: z.ZodObject<{
541
541
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
542
542
  orb: number;
543
543
  }[];
544
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
544
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
545
545
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
546
546
  houses_fallback_reason?: string | undefined;
547
547
  };
@@ -608,15 +608,15 @@ export declare const skyEventsOut: z.ZodObject<{
608
608
  end: z.ZodString;
609
609
  events: z.ZodArray<z.ZodObject<{
610
610
  t: z.ZodString;
611
- kind: z.ZodEnum<["rise", "set", "mtransit", "itransit", "phase", "station", "crossing"]>;
611
+ kind: z.ZodEnum<["rise", "set", "mtransit", "itransit", "phase", "station", "crossing", "solar_eclipse", "lunar_eclipse"]>;
612
612
  detail: z.ZodOptional<z.ZodString>;
613
613
  }, "strip", z.ZodTypeAny, {
614
614
  t: string;
615
- kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing";
615
+ kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing" | "solar_eclipse" | "lunar_eclipse";
616
616
  detail?: string | undefined;
617
617
  }, {
618
618
  t: string;
619
- kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing";
619
+ kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing" | "solar_eclipse" | "lunar_eclipse";
620
620
  detail?: string | undefined;
621
621
  }>, "many">;
622
622
  }, "strip", z.ZodTypeAny, {
@@ -624,7 +624,7 @@ export declare const skyEventsOut: z.ZodObject<{
624
624
  end: string;
625
625
  events: {
626
626
  t: string;
627
- kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing";
627
+ kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing" | "solar_eclipse" | "lunar_eclipse";
628
628
  detail?: string | undefined;
629
629
  }[];
630
630
  }, {
@@ -632,7 +632,7 @@ export declare const skyEventsOut: z.ZodObject<{
632
632
  end: string;
633
633
  events: {
634
634
  t: string;
635
- kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing";
635
+ kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing" | "solar_eclipse" | "lunar_eclipse";
636
636
  detail?: string | undefined;
637
637
  }[];
638
638
  }>;
@@ -640,7 +640,7 @@ export declare const OUTPUT_SCHEMAS: {
640
640
  readonly natal_chart: z.ZodObject<{
641
641
  utc: z.ZodString;
642
642
  houses: z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>;
643
- zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar"]>>;
643
+ zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar", "sidereal:galcent_0sag", "sidereal:true_citra"]>>;
644
644
  houses_requested: z.ZodOptional<z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>>;
645
645
  houses_fallback_reason: z.ZodOptional<z.ZodString>;
646
646
  bodies: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -718,7 +718,7 @@ export declare const OUTPUT_SCHEMAS: {
718
718
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
719
719
  orb: number;
720
720
  }[];
721
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
721
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
722
722
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
723
723
  houses_fallback_reason?: string | undefined;
724
724
  }, {
@@ -744,14 +744,14 @@ export declare const OUTPUT_SCHEMAS: {
744
744
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
745
745
  orb: number;
746
746
  }[];
747
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
747
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
748
748
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
749
749
  houses_fallback_reason?: string | undefined;
750
750
  }>;
751
751
  readonly current_sky: z.ZodObject<{
752
752
  utc: z.ZodString;
753
753
  houses: z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>;
754
- zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar"]>>;
754
+ zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar", "sidereal:galcent_0sag", "sidereal:true_citra"]>>;
755
755
  houses_requested: z.ZodOptional<z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>>;
756
756
  houses_fallback_reason: z.ZodOptional<z.ZodString>;
757
757
  bodies: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -829,7 +829,7 @@ export declare const OUTPUT_SCHEMAS: {
829
829
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
830
830
  orb: number;
831
831
  }[];
832
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
832
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
833
833
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
834
834
  houses_fallback_reason?: string | undefined;
835
835
  }, {
@@ -855,7 +855,7 @@ export declare const OUTPUT_SCHEMAS: {
855
855
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
856
856
  orb: number;
857
857
  }[];
858
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
858
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
859
859
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
860
860
  houses_fallback_reason?: string | undefined;
861
861
  }>;
@@ -926,7 +926,7 @@ export declare const OUTPUT_SCHEMAS: {
926
926
  a: z.ZodObject<{
927
927
  utc: z.ZodString;
928
928
  houses: z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>;
929
- zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar"]>>;
929
+ zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar", "sidereal:galcent_0sag", "sidereal:true_citra"]>>;
930
930
  houses_requested: z.ZodOptional<z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>>;
931
931
  houses_fallback_reason: z.ZodOptional<z.ZodString>;
932
932
  bodies: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -1004,7 +1004,7 @@ export declare const OUTPUT_SCHEMAS: {
1004
1004
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
1005
1005
  orb: number;
1006
1006
  }[];
1007
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
1007
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
1008
1008
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
1009
1009
  houses_fallback_reason?: string | undefined;
1010
1010
  }, {
@@ -1030,14 +1030,14 @@ export declare const OUTPUT_SCHEMAS: {
1030
1030
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
1031
1031
  orb: number;
1032
1032
  }[];
1033
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
1033
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
1034
1034
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
1035
1035
  houses_fallback_reason?: string | undefined;
1036
1036
  }>;
1037
1037
  b: z.ZodObject<{
1038
1038
  utc: z.ZodString;
1039
1039
  houses: z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>;
1040
- zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar"]>>;
1040
+ zodiac: z.ZodOptional<z.ZodEnum<["tropical", "sidereal:lahiri", "sidereal:fagan_bradley", "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar", "sidereal:galcent_0sag", "sidereal:true_citra"]>>;
1041
1041
  houses_requested: z.ZodOptional<z.ZodEnum<["placidus", "whole_sign", "equal", "porphyry", "koch", "regiomontanus", "campanus", "alcabitius", "morinus", "meridian", "polich_page", "vehlow"]>>;
1042
1042
  houses_fallback_reason: z.ZodOptional<z.ZodString>;
1043
1043
  bodies: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -1115,7 +1115,7 @@ export declare const OUTPUT_SCHEMAS: {
1115
1115
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
1116
1116
  orb: number;
1117
1117
  }[];
1118
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
1118
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
1119
1119
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
1120
1120
  houses_fallback_reason?: string | undefined;
1121
1121
  }, {
@@ -1141,7 +1141,7 @@ export declare const OUTPUT_SCHEMAS: {
1141
1141
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
1142
1142
  orb: number;
1143
1143
  }[];
1144
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
1144
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
1145
1145
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
1146
1146
  houses_fallback_reason?: string | undefined;
1147
1147
  }>;
@@ -1187,7 +1187,7 @@ export declare const OUTPUT_SCHEMAS: {
1187
1187
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
1188
1188
  orb: number;
1189
1189
  }[];
1190
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
1190
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
1191
1191
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
1192
1192
  houses_fallback_reason?: string | undefined;
1193
1193
  };
@@ -1214,7 +1214,7 @@ export declare const OUTPUT_SCHEMAS: {
1214
1214
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
1215
1215
  orb: number;
1216
1216
  }[];
1217
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
1217
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
1218
1218
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
1219
1219
  houses_fallback_reason?: string | undefined;
1220
1220
  };
@@ -1250,7 +1250,7 @@ export declare const OUTPUT_SCHEMAS: {
1250
1250
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
1251
1251
  orb: number;
1252
1252
  }[];
1253
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
1253
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
1254
1254
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
1255
1255
  houses_fallback_reason?: string | undefined;
1256
1256
  };
@@ -1277,7 +1277,7 @@ export declare const OUTPUT_SCHEMAS: {
1277
1277
  aspect: "conjunction" | "sextile" | "square" | "trine" | "opposition";
1278
1278
  orb: number;
1279
1279
  }[];
1280
- zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | undefined;
1280
+ zodiac?: "tropical" | "sidereal:lahiri" | "sidereal:fagan_bradley" | "sidereal:krishnamurti" | "sidereal:raman" | "sidereal:yukteshwar" | "sidereal:galcent_0sag" | "sidereal:true_citra" | undefined;
1281
1281
  houses_requested?: "placidus" | "whole_sign" | "equal" | "porphyry" | "koch" | "regiomontanus" | "campanus" | "alcabitius" | "morinus" | "meridian" | "polich_page" | "vehlow" | undefined;
1282
1282
  houses_fallback_reason?: string | undefined;
1283
1283
  };
@@ -1344,15 +1344,15 @@ export declare const OUTPUT_SCHEMAS: {
1344
1344
  end: z.ZodString;
1345
1345
  events: z.ZodArray<z.ZodObject<{
1346
1346
  t: z.ZodString;
1347
- kind: z.ZodEnum<["rise", "set", "mtransit", "itransit", "phase", "station", "crossing"]>;
1347
+ kind: z.ZodEnum<["rise", "set", "mtransit", "itransit", "phase", "station", "crossing", "solar_eclipse", "lunar_eclipse"]>;
1348
1348
  detail: z.ZodOptional<z.ZodString>;
1349
1349
  }, "strip", z.ZodTypeAny, {
1350
1350
  t: string;
1351
- kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing";
1351
+ kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing" | "solar_eclipse" | "lunar_eclipse";
1352
1352
  detail?: string | undefined;
1353
1353
  }, {
1354
1354
  t: string;
1355
- kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing";
1355
+ kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing" | "solar_eclipse" | "lunar_eclipse";
1356
1356
  detail?: string | undefined;
1357
1357
  }>, "many">;
1358
1358
  }, "strip", z.ZodTypeAny, {
@@ -1360,7 +1360,7 @@ export declare const OUTPUT_SCHEMAS: {
1360
1360
  end: string;
1361
1361
  events: {
1362
1362
  t: string;
1363
- kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing";
1363
+ kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing" | "solar_eclipse" | "lunar_eclipse";
1364
1364
  detail?: string | undefined;
1365
1365
  }[];
1366
1366
  }, {
@@ -1368,7 +1368,7 @@ export declare const OUTPUT_SCHEMAS: {
1368
1368
  end: string;
1369
1369
  events: {
1370
1370
  t: string;
1371
- kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing";
1371
+ kind: "set" | "rise" | "mtransit" | "itransit" | "phase" | "station" | "crossing" | "solar_eclipse" | "lunar_eclipse";
1372
1372
  detail?: string | undefined;
1373
1373
  }[];
1374
1374
  }>;
@@ -17,7 +17,7 @@ import { dirname, join } from "node:path";
17
17
  import { fileURLToPath } from "node:url";
18
18
  import { createRequire } from "node:module";
19
19
  import { realpathSync } from "node:fs";
20
- import { Engine, BODIES, julianDay, mod, riseSet, crossings, lunarPhases, stations, } from "caelus";
20
+ import { Engine, BODIES, julianDay, mod, riseSet, crossings, lunarPhases, stations, lunarEclipses, solarEclipses, } from "caelus";
21
21
  import { loadNodeData } from "caelus/node";
22
22
  const require = createRequire(import.meta.url);
23
23
  const VERSION = require("caelus-mcp/package.json").version;
@@ -46,6 +46,7 @@ const houseSys = z.enum(HOUSE_SYSTEMS).default("placidus");
46
46
  const ZODIACS = [
47
47
  "tropical", "sidereal:lahiri", "sidereal:fagan_bradley",
48
48
  "sidereal:krishnamurti", "sidereal:raman", "sidereal:yukteshwar",
49
+ "sidereal:galcent_0sag", "sidereal:true_citra",
49
50
  ];
50
51
  const zodiacSchema = z.enum(ZODIACS).default("tropical")
51
52
  .describe("tropical (default) or sidereal:<ayanamsa>");
@@ -141,7 +142,8 @@ export const skyEventsOut = z.object({
141
142
  end: z.string(),
142
143
  events: z.array(z.object({
143
144
  t: z.string(),
144
- kind: z.enum(["rise", "set", "mtransit", "itransit", "phase", "station", "crossing"]),
145
+ kind: z.enum(["rise", "set", "mtransit", "itransit", "phase", "station",
146
+ "crossing", "solar_eclipse", "lunar_eclipse"]),
145
147
  detail: z.string().optional(),
146
148
  })),
147
149
  });
@@ -349,11 +351,12 @@ export function buildServer() {
349
351
  return text({ date: date.slice(0, 10), lat, lon, asc_sign_changes: boundaries, grid });
350
352
  });
351
353
  server.registerTool("sky_events", {
352
- description: "Sky events in a UTC date range: rise/set/meridian transits (need lat+lon+body), lunar phases (new/quarters/full), stations (body turns retrograde/direct; needs body), zodiac degree crossings (needs body + target_lon). Times to the second vs Swiss Ephemeris (stations to ~1 min: ill-conditioned by nature). Range <= 370 days.",
354
+ description: "Sky events in a UTC date range: rise/set/meridian transits (need lat+lon+body), lunar phases (new/quarters/full), solar and lunar eclipses (global circumstances: type, magnitude, gamma), stations (body turns retrograde/direct; needs body), zodiac degree crossings (needs body + target_lon). Times to the second vs Swiss Ephemeris (stations to ~1 min: ill-conditioned by nature). Range <= 370 days.",
353
355
  inputSchema: {
354
356
  start: z.string().describe("UTC ISO start date (convert from local first)"),
355
357
  end: z.string().describe("UTC ISO end date; range <= 370 days"),
356
- kinds: z.array(z.enum(["rise", "set", "mtransit", "itransit", "phase", "station", "crossing"]))
358
+ kinds: z.array(z.enum(["rise", "set", "mtransit", "itransit", "phase",
359
+ "station", "crossing", "solar_eclipse", "lunar_eclipse"]))
357
360
  .min(1).describe("Event kinds to include"),
358
361
  body: z.enum(BODIES).optional()
359
362
  .describe("Required for rise/set/transit/station/crossing"),
@@ -398,6 +401,18 @@ export function buildServer() {
398
401
  events.push({ t: iso(t), kind: "station", detail: dir });
399
402
  }
400
403
  }
404
+ if (kinds.includes("lunar_eclipse")) {
405
+ for (const e of lunarEclipses(engine, jd0, jd1)) {
406
+ events.push({ t: iso(e.tMax), kind: "lunar_eclipse",
407
+ detail: `${e.type}, mag ${e.magUmbral > 0 ? e.magUmbral.toFixed(2) : e.magPenumbral.toFixed(2) + " penumbral"}` });
408
+ }
409
+ }
410
+ if (kinds.includes("solar_eclipse")) {
411
+ for (const e of solarEclipses(engine, jd0, jd1)) {
412
+ events.push({ t: iso(e.tMax), kind: "solar_eclipse",
413
+ detail: `${e.type}, gamma ${e.gamma.toFixed(2)}` });
414
+ }
415
+ }
401
416
  if (kinds.includes("crossing")) {
402
417
  if (body === undefined || target_lon === undefined) {
403
418
  throw new Error("crossing needs body and target_lon");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "caelus-mcp",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "MCP server for caelus chart computation.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -14,7 +14,7 @@
14
14
  "dependencies": {
15
15
  "@modelcontextprotocol/sdk": "^1.12.0",
16
16
  "zod": "^3.24.0",
17
- "caelus": "^0.4.0"
17
+ "caelus": "^0.6.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "ajv": "^8.17.1"