@openephemeris/mcp-server 3.9.3 → 3.10.2
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/CHANGELOG.md +33 -0
- package/README.md +2 -2
- package/config/dev-allowlist.json +0 -8
- package/dist/index.js +38 -1
- package/dist/server-sse.js +37 -2
- package/dist/tools/apps/chart-wheel-app.d.ts +19 -0
- package/dist/tools/apps/chart-wheel-app.js +478 -0
- package/dist/tools/dev.js +0 -1
- package/dist/tools/index.d.ts +9 -8
- package/dist/tools/index.js +36 -1
- package/dist/tools/specialized/bi_wheel.js +2 -2
- package/dist/tools/specialized/chart_wheel.js +2 -2
- package/dist/tools/specialized/hd_bodygraph.js +5 -5
- package/dist/tools/specialized/human_design.js +23 -0
- package/dist/tools/specialized/natal.js +23 -0
- package/dist/tools/specialized/progressed.js +23 -0
- package/dist/tools/specialized/returns.js +23 -0
- package/dist/tools/specialized/synastry.js +23 -0
- package/dist/ui/chart-wheel.html +479 -0
- package/package.json +8 -3
|
@@ -45,6 +45,21 @@ registerTool({
|
|
|
45
45
|
description: "Output format. 'llm' returns compact array projection for token efficiency (available on all tiers). " +
|
|
46
46
|
"'json' returns verbose full output.",
|
|
47
47
|
},
|
|
48
|
+
include_visual: {
|
|
49
|
+
type: "boolean",
|
|
50
|
+
description: "When true, renders the Human Design bodygraph as an SVG and embeds it in the response. " +
|
|
51
|
+
"The bodygraph image will display in the conversation alongside the data. " +
|
|
52
|
+
"Costs 2 additional credits on top of the base call cost.",
|
|
53
|
+
},
|
|
54
|
+
visual_config: {
|
|
55
|
+
type: "object",
|
|
56
|
+
description: "Optional rendering preferences (only used when include_visual=true).",
|
|
57
|
+
properties: {
|
|
58
|
+
theme: { type: "string", enum: ["light", "dark"], description: "Color theme. Default: dark (HD convention)." },
|
|
59
|
+
size: { type: "number", description: "Canvas size in pixels, 200–4000. Default: 800." },
|
|
60
|
+
},
|
|
61
|
+
additionalProperties: false,
|
|
62
|
+
},
|
|
48
63
|
},
|
|
49
64
|
required: ["datetime"],
|
|
50
65
|
additionalProperties: false,
|
|
@@ -61,6 +76,14 @@ registerTool({
|
|
|
61
76
|
const query = {};
|
|
62
77
|
if (args.format)
|
|
63
78
|
query.format = args.format;
|
|
79
|
+
if (args.include_visual) {
|
|
80
|
+
body.include_visual = true;
|
|
81
|
+
body.visual_config = {
|
|
82
|
+
format: "svg",
|
|
83
|
+
theme: args.visual_config?.theme || "dark", // HD convention defaults to dark
|
|
84
|
+
size: args.visual_config?.size || 800,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
64
87
|
return await getActiveClient().request("POST", "/human-design/chart", {
|
|
65
88
|
data: body,
|
|
66
89
|
params: query,
|
|
@@ -54,6 +54,21 @@ registerTool({
|
|
|
54
54
|
type: "boolean",
|
|
55
55
|
description: "Reserved for future use. Fixed star positions are currently available via the dedicated /ephemeris/fixed-stars endpoint.",
|
|
56
56
|
},
|
|
57
|
+
include_visual: {
|
|
58
|
+
type: "boolean",
|
|
59
|
+
description: "When true, renders the natal chart wheel as an SVG and embeds it directly in the response. " +
|
|
60
|
+
"The chart image will display in the conversation alongside the data. " +
|
|
61
|
+
"Costs 2 additional credits on top of the base call cost.",
|
|
62
|
+
},
|
|
63
|
+
visual_config: {
|
|
64
|
+
type: "object",
|
|
65
|
+
description: "Optional rendering preferences (only used when include_visual=true).",
|
|
66
|
+
properties: {
|
|
67
|
+
theme: { type: "string", enum: ["light", "dark"], description: "Color theme. Default: light." },
|
|
68
|
+
size: { type: "number", description: "Canvas size in pixels, 200–4000. Default: 800." },
|
|
69
|
+
},
|
|
70
|
+
additionalProperties: false,
|
|
71
|
+
},
|
|
57
72
|
},
|
|
58
73
|
required: ["datetime", "latitude", "longitude"],
|
|
59
74
|
additionalProperties: false,
|
|
@@ -91,6 +106,14 @@ registerTool({
|
|
|
91
106
|
const query = {};
|
|
92
107
|
if (args.format)
|
|
93
108
|
query.format = args.format;
|
|
109
|
+
if (args.include_visual) {
|
|
110
|
+
body.include_visual = true;
|
|
111
|
+
body.visual_config = {
|
|
112
|
+
format: "svg", // always SVG for MCP — no resvg dependency
|
|
113
|
+
theme: args.visual_config?.theme || "light",
|
|
114
|
+
size: args.visual_config?.size || 800,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
94
117
|
return await getActiveClient().request("POST", "/ephemeris/natal-chart", {
|
|
95
118
|
data: body,
|
|
96
119
|
params: query,
|
|
@@ -37,6 +37,21 @@ registerTool({
|
|
|
37
37
|
type: "boolean",
|
|
38
38
|
description: "Whether to include aspect grid in the response. Default false.",
|
|
39
39
|
},
|
|
40
|
+
include_visual: {
|
|
41
|
+
type: "boolean",
|
|
42
|
+
description: "When true, renders the progressed chart wheel as an SVG and embeds it in the response. " +
|
|
43
|
+
"The chart image will display in the conversation alongside the data. " +
|
|
44
|
+
"Costs 2 additional credits on top of the base call cost.",
|
|
45
|
+
},
|
|
46
|
+
visual_config: {
|
|
47
|
+
type: "object",
|
|
48
|
+
description: "Optional rendering preferences (only used when include_visual=true).",
|
|
49
|
+
properties: {
|
|
50
|
+
theme: { type: "string", enum: ["light", "dark"], description: "Color theme. Default: light." },
|
|
51
|
+
size: { type: "number", description: "Canvas size in pixels, 200–4000. Default: 800." },
|
|
52
|
+
},
|
|
53
|
+
additionalProperties: false,
|
|
54
|
+
},
|
|
40
55
|
},
|
|
41
56
|
required: ["birth_datetime", "birth_latitude", "birth_longitude", "target_datetime"],
|
|
42
57
|
additionalProperties: false,
|
|
@@ -60,6 +75,14 @@ registerTool({
|
|
|
60
75
|
if (args.include_aspects != null) {
|
|
61
76
|
body.options = { include_aspects: args.include_aspects };
|
|
62
77
|
}
|
|
78
|
+
if (args.include_visual) {
|
|
79
|
+
body.include_visual = true;
|
|
80
|
+
body.visual_config = {
|
|
81
|
+
format: "svg",
|
|
82
|
+
theme: args.visual_config?.theme || "light",
|
|
83
|
+
size: args.visual_config?.size || 800,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
63
86
|
return await getActiveClient().post("/ephemeris/progressed", body);
|
|
64
87
|
},
|
|
65
88
|
});
|
|
@@ -40,6 +40,21 @@ registerTool({
|
|
|
40
40
|
type: "number",
|
|
41
41
|
description: "Location longitude for the return chart (optional).",
|
|
42
42
|
},
|
|
43
|
+
include_visual: {
|
|
44
|
+
type: "boolean",
|
|
45
|
+
description: "When true, renders the solar return chart wheel as an SVG and embeds it in the response. " +
|
|
46
|
+
"The chart image will display in the conversation alongside the data. " +
|
|
47
|
+
"Costs 2 additional credits on top of the base call cost.",
|
|
48
|
+
},
|
|
49
|
+
visual_config: {
|
|
50
|
+
type: "object",
|
|
51
|
+
description: "Optional rendering preferences (only used when include_visual=true).",
|
|
52
|
+
properties: {
|
|
53
|
+
theme: { type: "string", enum: ["light", "dark"], description: "Color theme. Default: light." },
|
|
54
|
+
size: { type: "number", description: "Canvas size in pixels, 200–4000. Default: 800." },
|
|
55
|
+
},
|
|
56
|
+
additionalProperties: false,
|
|
57
|
+
},
|
|
43
58
|
},
|
|
44
59
|
required: ["birth_datetime"],
|
|
45
60
|
additionalProperties: false,
|
|
@@ -64,6 +79,14 @@ registerTool({
|
|
|
64
79
|
longitude: { decimal: args.return_longitude },
|
|
65
80
|
};
|
|
66
81
|
}
|
|
82
|
+
if (args.include_visual) {
|
|
83
|
+
body.include_visual = true;
|
|
84
|
+
body.visual_config = {
|
|
85
|
+
format: "svg",
|
|
86
|
+
theme: args.visual_config?.theme || "light",
|
|
87
|
+
size: args.visual_config?.size || 800,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
67
90
|
return await getActiveClient().post("/predictive/returns/solar", body);
|
|
68
91
|
},
|
|
69
92
|
});
|
|
@@ -28,6 +28,21 @@ registerTool({
|
|
|
28
28
|
enum: ["json", "llm"],
|
|
29
29
|
description: "Output format. 'llm' is compact and token-efficient (available on all tiers).",
|
|
30
30
|
},
|
|
31
|
+
include_visual: {
|
|
32
|
+
type: "boolean",
|
|
33
|
+
description: "When true, renders a bi-wheel SVG comparing both charts and embeds it in the response. " +
|
|
34
|
+
"The chart image will display in the conversation alongside the data. " +
|
|
35
|
+
"Costs 2 additional credits on top of the base call cost.",
|
|
36
|
+
},
|
|
37
|
+
visual_config: {
|
|
38
|
+
type: "object",
|
|
39
|
+
description: "Optional rendering preferences (only used when include_visual=true).",
|
|
40
|
+
properties: {
|
|
41
|
+
theme: { type: "string", enum: ["light", "dark"], description: "Color theme. Default: light." },
|
|
42
|
+
size: { type: "number", description: "Canvas size in pixels, 200–4000. Default: 800." },
|
|
43
|
+
},
|
|
44
|
+
additionalProperties: false,
|
|
45
|
+
},
|
|
31
46
|
},
|
|
32
47
|
required: [
|
|
33
48
|
"person_a_datetime", "person_a_latitude", "person_a_longitude",
|
|
@@ -63,6 +78,14 @@ registerTool({
|
|
|
63
78
|
const query = {};
|
|
64
79
|
if (args.format)
|
|
65
80
|
query.format = args.format;
|
|
81
|
+
if (args.include_visual) {
|
|
82
|
+
body.include_visual = true;
|
|
83
|
+
body.visual_config = {
|
|
84
|
+
format: "svg",
|
|
85
|
+
theme: args.visual_config?.theme || "light",
|
|
86
|
+
size: args.visual_config?.size || 800,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
66
89
|
return await getActiveClient().request("POST", "/comparative/synastry", {
|
|
67
90
|
data: body,
|
|
68
91
|
params: query,
|