@openephemeris/mcp-server 3.13.6 → 3.13.8
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 +2 -2
- package/dist/backend/client.js +27 -9
- package/dist/index.js +33 -32
- package/dist/prompts.d.ts +26 -0
- package/dist/prompts.js +942 -0
- package/dist/tools/apps/bi-wheel-app.js +286 -32
- package/dist/tools/apps/bodygraph-app.js +361 -12
- package/dist/tools/apps/chart-wheel-app.js +64 -30
- package/dist/tools/apps/location-tools.d.ts +1 -0
- package/dist/tools/apps/location-tools.js +52 -0
- package/dist/tools/index.js +1 -0
- package/dist/tools/specialized/acg.js +2 -0
- package/dist/tools/specialized/bazi.js +1 -0
- package/dist/tools/specialized/bi_wheel.js +1 -0
- package/dist/tools/specialized/chart_wheel.js +1 -0
- package/dist/tools/specialized/comparative.js +4 -0
- package/dist/tools/specialized/eclipse.js +1 -0
- package/dist/tools/specialized/electional.js +4 -0
- package/dist/tools/specialized/ephemeris_core.js +2 -0
- package/dist/tools/specialized/ephemeris_extended.js +8 -0
- package/dist/tools/specialized/hd_bodygraph.js +1 -0
- package/dist/tools/specialized/hd_cycles.js +2 -0
- package/dist/tools/specialized/hd_group.js +2 -0
- package/dist/tools/specialized/human_design.js +1 -0
- package/dist/tools/specialized/moon.js +2 -0
- package/dist/tools/specialized/natal.js +1 -0
- package/dist/tools/specialized/progressed.js +1 -0
- package/dist/tools/specialized/relocation.js +1 -0
- package/dist/tools/specialized/returns.js +3 -0
- package/dist/tools/specialized/synastry.js +1 -0
- package/dist/tools/specialized/transits.js +1 -0
- package/dist/tools/specialized/vedic.js +1 -0
- package/dist/tools/specialized/venus_star_points.js +6 -0
- package/dist/ui/bi-wheel.html +7124 -60
- package/dist/ui/bodygraph.html +7057 -508
- package/dist/ui/chart-wheel.html +7355 -565
- package/package.json +1 -1
|
@@ -38,6 +38,7 @@ registerTool({
|
|
|
38
38
|
required: ["datetime_a", "latitude_a", "longitude_a", "datetime_b", "latitude_b", "longitude_b"],
|
|
39
39
|
additionalProperties: false,
|
|
40
40
|
},
|
|
41
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
41
42
|
handler: async (args) => {
|
|
42
43
|
validateRequired(args, ["datetime_a", "latitude_a", "longitude_a", "datetime_b", "latitude_b", "longitude_b"]);
|
|
43
44
|
const body = {
|
|
@@ -46,6 +46,7 @@ registerTool({
|
|
|
46
46
|
required: ["datetime", "latitude", "longitude"],
|
|
47
47
|
additionalProperties: false,
|
|
48
48
|
},
|
|
49
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
49
50
|
handler: async (args) => {
|
|
50
51
|
validateRequired(args, ["datetime", "latitude", "longitude"]);
|
|
51
52
|
const body = {
|
|
@@ -42,6 +42,7 @@ registerTool({
|
|
|
42
42
|
],
|
|
43
43
|
additionalProperties: false,
|
|
44
44
|
},
|
|
45
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
45
46
|
handler: async (args) => {
|
|
46
47
|
validateRequired(args, [
|
|
47
48
|
"person_a_datetime", "person_a_latitude", "person_a_longitude",
|
|
@@ -86,6 +87,7 @@ registerTool({
|
|
|
86
87
|
],
|
|
87
88
|
additionalProperties: false,
|
|
88
89
|
},
|
|
90
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
89
91
|
handler: async (args) => {
|
|
90
92
|
validateRequired(args, [
|
|
91
93
|
"person_a_datetime", "person_a_latitude", "person_a_longitude",
|
|
@@ -130,6 +132,7 @@ registerTool({
|
|
|
130
132
|
],
|
|
131
133
|
additionalProperties: false,
|
|
132
134
|
},
|
|
135
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
133
136
|
handler: async (args) => {
|
|
134
137
|
validateRequired(args, [
|
|
135
138
|
"person_a_datetime", "person_a_latitude", "person_a_longitude",
|
|
@@ -171,6 +174,7 @@ registerTool({
|
|
|
171
174
|
required: ["natal_datetime", "natal_latitude", "natal_longitude"],
|
|
172
175
|
additionalProperties: false,
|
|
173
176
|
},
|
|
177
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
174
178
|
handler: async (args) => {
|
|
175
179
|
validateRequired(args, ["natal_datetime", "natal_latitude", "natal_longitude"]);
|
|
176
180
|
// Backend expects: { subject: {...}, transit_datetime?: {...} }
|
|
@@ -40,6 +40,7 @@ registerTool({
|
|
|
40
40
|
required: ["eclipse_type"],
|
|
41
41
|
additionalProperties: false,
|
|
42
42
|
},
|
|
43
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
43
44
|
handler: async (args) => {
|
|
44
45
|
validateRequired(args, ["eclipse_type"]);
|
|
45
46
|
validateCoordinates(args, "latitude", "longitude");
|
|
@@ -56,6 +56,7 @@ registerTool({
|
|
|
56
56
|
required: ["start_date", "end_date", "latitude", "longitude"],
|
|
57
57
|
additionalProperties: false,
|
|
58
58
|
},
|
|
59
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
59
60
|
handler: async (args) => {
|
|
60
61
|
validateRequired(args, ["start_date", "end_date", "latitude", "longitude"]);
|
|
61
62
|
const query = {
|
|
@@ -105,6 +106,7 @@ registerTool({
|
|
|
105
106
|
required: [],
|
|
106
107
|
additionalProperties: false,
|
|
107
108
|
},
|
|
109
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
108
110
|
handler: async (args) => {
|
|
109
111
|
const query = {};
|
|
110
112
|
if (args.date)
|
|
@@ -155,6 +157,7 @@ registerTool({
|
|
|
155
157
|
required: [],
|
|
156
158
|
additionalProperties: false,
|
|
157
159
|
},
|
|
160
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
158
161
|
handler: async (args) => {
|
|
159
162
|
const query = {};
|
|
160
163
|
// Map human-readable planet names to IDs if needed
|
|
@@ -213,6 +216,7 @@ registerTool({
|
|
|
213
216
|
required: [],
|
|
214
217
|
additionalProperties: false,
|
|
215
218
|
},
|
|
219
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
216
220
|
handler: async (args) => {
|
|
217
221
|
const query = {};
|
|
218
222
|
if (args.date)
|
|
@@ -34,6 +34,7 @@ registerTool({
|
|
|
34
34
|
required: ["planet_id", "datetime"],
|
|
35
35
|
additionalProperties: false,
|
|
36
36
|
},
|
|
37
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
37
38
|
handler: async (args) => {
|
|
38
39
|
validateRequired(args, ["planet_id", "datetime"]);
|
|
39
40
|
const body = {
|
|
@@ -80,6 +81,7 @@ registerTool({
|
|
|
80
81
|
required: ["datetime", "latitude", "longitude"],
|
|
81
82
|
additionalProperties: false,
|
|
82
83
|
},
|
|
84
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
83
85
|
handler: async (args) => {
|
|
84
86
|
validateRequired(args, ["datetime", "latitude", "longitude"]);
|
|
85
87
|
const body = {
|
|
@@ -42,6 +42,7 @@ registerTool({
|
|
|
42
42
|
required: ["subjects"],
|
|
43
43
|
additionalProperties: false,
|
|
44
44
|
},
|
|
45
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
45
46
|
handler: async (args) => {
|
|
46
47
|
validateRequired(args, ["subjects"]);
|
|
47
48
|
const items = args.subjects.map((s) => ({
|
|
@@ -64,6 +65,7 @@ registerTool({
|
|
|
64
65
|
required: ["datetime"],
|
|
65
66
|
additionalProperties: false,
|
|
66
67
|
},
|
|
68
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
67
69
|
handler: async (args) => {
|
|
68
70
|
validateRequired(args, ["datetime"]);
|
|
69
71
|
return await getActiveClient().post("/ephemeris/dignities", {
|
|
@@ -90,6 +92,7 @@ registerTool({
|
|
|
90
92
|
required: ["datetime"],
|
|
91
93
|
additionalProperties: false,
|
|
92
94
|
},
|
|
95
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
93
96
|
handler: async (args) => {
|
|
94
97
|
validateRequired(args, ["datetime"]);
|
|
95
98
|
const client = getActiveClient();
|
|
@@ -138,6 +141,7 @@ registerTool({
|
|
|
138
141
|
required: ["datetime", "latitude", "longitude"],
|
|
139
142
|
additionalProperties: false,
|
|
140
143
|
},
|
|
144
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
141
145
|
handler: async (args) => {
|
|
142
146
|
validateRequired(args, ["datetime", "latitude", "longitude"]);
|
|
143
147
|
return await getActiveClient().post("/ephemeris/midpoints", {
|
|
@@ -167,6 +171,7 @@ registerTool({
|
|
|
167
171
|
required: ["datetime"],
|
|
168
172
|
additionalProperties: false,
|
|
169
173
|
},
|
|
174
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
170
175
|
handler: async (args) => {
|
|
171
176
|
validateRequired(args, ["datetime"]);
|
|
172
177
|
const body = {
|
|
@@ -226,6 +231,7 @@ registerTool({
|
|
|
226
231
|
required: ["datetime", "latitude", "longitude"],
|
|
227
232
|
additionalProperties: false,
|
|
228
233
|
},
|
|
234
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
229
235
|
handler: async (args) => {
|
|
230
236
|
validateRequired(args, ["datetime", "latitude", "longitude"]);
|
|
231
237
|
return await getActiveClient().post("/ephemeris/hermetic-lots", {
|
|
@@ -251,6 +257,7 @@ registerTool({
|
|
|
251
257
|
required: ["datetime", "latitude", "longitude"],
|
|
252
258
|
additionalProperties: false,
|
|
253
259
|
},
|
|
260
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
254
261
|
handler: async (args) => {
|
|
255
262
|
validateRequired(args, ["datetime", "latitude", "longitude"]);
|
|
256
263
|
return await getActiveClient().post("/ephemeris/angles-points", {
|
|
@@ -278,6 +285,7 @@ registerTool({
|
|
|
278
285
|
required: ["longitude_1", "longitude_2"],
|
|
279
286
|
additionalProperties: false,
|
|
280
287
|
},
|
|
288
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
281
289
|
handler: async (args) => {
|
|
282
290
|
validateRequired(args, ["longitude_1", "longitude_2"]);
|
|
283
291
|
// Backend field names are longitude1 / longitude2 (no underscore)
|
|
@@ -49,6 +49,7 @@ registerTool({
|
|
|
49
49
|
required: ["planet", "datetime", "return_year"],
|
|
50
50
|
additionalProperties: false,
|
|
51
51
|
},
|
|
52
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
52
53
|
handler: async (args) => {
|
|
53
54
|
validateRequired(args, ["planet", "datetime", "return_year"]);
|
|
54
55
|
return await getActiveClient().request("POST", "/human-design/cycles/return", {
|
|
@@ -99,6 +100,7 @@ registerTool({
|
|
|
99
100
|
required: ["planet", "datetime", "target_year"],
|
|
100
101
|
additionalProperties: false,
|
|
101
102
|
},
|
|
103
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
102
104
|
handler: async (args) => {
|
|
103
105
|
validateRequired(args, ["planet", "datetime", "target_year"]);
|
|
104
106
|
return await getActiveClient().request("POST", "/human-design/cycles/opposition", {
|
|
@@ -28,6 +28,7 @@ registerTool({
|
|
|
28
28
|
required: ["person_a_datetime", "person_b_datetime"],
|
|
29
29
|
additionalProperties: false,
|
|
30
30
|
},
|
|
31
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
31
32
|
handler: async (args) => {
|
|
32
33
|
validateRequired(args, ["person_a_datetime", "person_b_datetime"]);
|
|
33
34
|
const body = {
|
|
@@ -87,6 +88,7 @@ registerTool({
|
|
|
87
88
|
required: ["group_name", "members"],
|
|
88
89
|
additionalProperties: false,
|
|
89
90
|
},
|
|
91
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
90
92
|
handler: async (args) => {
|
|
91
93
|
validateRequired(args, ["group_name", "members"]);
|
|
92
94
|
const members = args.members.map((m) => ({
|
|
@@ -33,6 +33,7 @@ registerTool({
|
|
|
33
33
|
required: [],
|
|
34
34
|
additionalProperties: false,
|
|
35
35
|
},
|
|
36
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
36
37
|
handler: async (args) => {
|
|
37
38
|
validateCoordinates(args, "latitude", "longitude");
|
|
38
39
|
const params = {};
|
|
@@ -90,6 +91,7 @@ registerTool({
|
|
|
90
91
|
required: ["phase"],
|
|
91
92
|
additionalProperties: false,
|
|
92
93
|
},
|
|
94
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
93
95
|
handler: async (args) => {
|
|
94
96
|
// Map our clean enum to display names the calendar API returns
|
|
95
97
|
const phaseNameMap = {
|
|
@@ -73,6 +73,7 @@ registerTool({
|
|
|
73
73
|
required: ["datetime", "latitude", "longitude"],
|
|
74
74
|
additionalProperties: false,
|
|
75
75
|
},
|
|
76
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
76
77
|
handler: async (args) => {
|
|
77
78
|
validateRequired(args, ["datetime", "latitude", "longitude"]);
|
|
78
79
|
const body = {
|
|
@@ -56,6 +56,7 @@ registerTool({
|
|
|
56
56
|
required: ["birth_datetime", "birth_latitude", "birth_longitude", "target_datetime"],
|
|
57
57
|
additionalProperties: false,
|
|
58
58
|
},
|
|
59
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
59
60
|
handler: async (args) => {
|
|
60
61
|
validateRequired(args, ["birth_datetime", "birth_latitude", "birth_longitude", "target_datetime"]);
|
|
61
62
|
const body = {
|
|
@@ -46,6 +46,7 @@ registerTool({
|
|
|
46
46
|
required: ["natal_datetime", "natal_latitude", "natal_longitude", "relocation_latitude", "relocation_longitude"],
|
|
47
47
|
additionalProperties: false,
|
|
48
48
|
},
|
|
49
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
49
50
|
handler: async (args) => {
|
|
50
51
|
validateRequired(args, ["natal_datetime", "natal_latitude", "natal_longitude", "relocation_latitude", "relocation_longitude"]);
|
|
51
52
|
const body = {
|
|
@@ -59,6 +59,7 @@ registerTool({
|
|
|
59
59
|
required: ["birth_datetime"],
|
|
60
60
|
additionalProperties: false,
|
|
61
61
|
},
|
|
62
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
62
63
|
handler: async (args) => {
|
|
63
64
|
validateRequired(args, ["birth_datetime"]);
|
|
64
65
|
// Default target to current year if not provided
|
|
@@ -126,6 +127,7 @@ registerTool({
|
|
|
126
127
|
required: ["birth_datetime"],
|
|
127
128
|
additionalProperties: false,
|
|
128
129
|
},
|
|
130
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
129
131
|
handler: async (args) => {
|
|
130
132
|
validateRequired(args, ["birth_datetime"]);
|
|
131
133
|
const targetDt = args.target_datetime ?? new Date().toISOString();
|
|
@@ -180,6 +182,7 @@ registerTool({
|
|
|
180
182
|
required: ["body", "birth_datetime", "target_datetime"],
|
|
181
183
|
additionalProperties: false,
|
|
182
184
|
},
|
|
185
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
183
186
|
handler: async (args) => {
|
|
184
187
|
validateRequired(args, ["body", "birth_datetime", "target_datetime"]);
|
|
185
188
|
const requestBody = {
|
|
@@ -50,6 +50,7 @@ registerTool({
|
|
|
50
50
|
],
|
|
51
51
|
additionalProperties: false,
|
|
52
52
|
},
|
|
53
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
53
54
|
handler: async (args) => {
|
|
54
55
|
validateRequired(args, [
|
|
55
56
|
"person_a_datetime", "person_a_latitude", "person_a_longitude",
|
|
@@ -66,6 +66,7 @@ registerTool({
|
|
|
66
66
|
required: ["natal_datetime", "natal_latitude", "natal_longitude", "start_date", "end_date"],
|
|
67
67
|
additionalProperties: false,
|
|
68
68
|
},
|
|
69
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
69
70
|
handler: async (args) => {
|
|
70
71
|
validateRequired(args, ["natal_datetime", "natal_latitude", "natal_longitude", "start_date", "end_date"]);
|
|
71
72
|
// ── Step 1: Compute natal chart to extract real planetary longitudes ──
|
|
@@ -33,6 +33,7 @@ registerTool({
|
|
|
33
33
|
required: ["datetime", "latitude", "longitude"],
|
|
34
34
|
additionalProperties: false,
|
|
35
35
|
},
|
|
36
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
36
37
|
handler: async (args) => {
|
|
37
38
|
validateRequired(args, ["datetime", "latitude", "longitude"]);
|
|
38
39
|
validateCoordinates(args, "latitude", "longitude");
|
|
@@ -29,6 +29,7 @@ registerTool({
|
|
|
29
29
|
required: ["datetime", "latitude", "longitude"],
|
|
30
30
|
additionalProperties: false,
|
|
31
31
|
},
|
|
32
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
32
33
|
handler: async (args) => {
|
|
33
34
|
validateRequired(args, ["datetime", "latitude", "longitude"]);
|
|
34
35
|
const query = {};
|
|
@@ -58,6 +59,7 @@ registerTool({
|
|
|
58
59
|
required: ["start_date", "end_date"],
|
|
59
60
|
additionalProperties: false,
|
|
60
61
|
},
|
|
62
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
61
63
|
handler: async (args) => {
|
|
62
64
|
validateRequired(args, ["start_date", "end_date"]);
|
|
63
65
|
const query = {};
|
|
@@ -87,6 +89,7 @@ registerTool({
|
|
|
87
89
|
required: ["date"],
|
|
88
90
|
additionalProperties: false,
|
|
89
91
|
},
|
|
92
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
90
93
|
handler: async (args) => {
|
|
91
94
|
validateRequired(args, ["date"]);
|
|
92
95
|
const query = {};
|
|
@@ -117,6 +120,7 @@ registerTool({
|
|
|
117
120
|
required: [],
|
|
118
121
|
additionalProperties: false,
|
|
119
122
|
},
|
|
123
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
120
124
|
handler: async (args) => {
|
|
121
125
|
const query = {};
|
|
122
126
|
if (args.format)
|
|
@@ -143,6 +147,7 @@ registerTool({
|
|
|
143
147
|
required: ["start_date", "end_date"],
|
|
144
148
|
additionalProperties: false,
|
|
145
149
|
},
|
|
150
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
146
151
|
handler: async (args) => {
|
|
147
152
|
validateRequired(args, ["start_date", "end_date"]);
|
|
148
153
|
const query = {};
|
|
@@ -172,6 +177,7 @@ registerTool({
|
|
|
172
177
|
required: ["start_date"],
|
|
173
178
|
additionalProperties: false,
|
|
174
179
|
},
|
|
180
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
175
181
|
handler: async (args) => {
|
|
176
182
|
validateRequired(args, ["start_date"]);
|
|
177
183
|
const query = {};
|