Swiss Ephemeris astrology: natal charts, transits, synastry, solar returns and astrocartography.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer and your NatalChart.AI API key. A free key (10 calls a day) is at https://www.natalchart.ai/developers/keys
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The catalogue of major cities ranked for one chart, overall or by chosen life spheres, worldwide or in one region. (API Pro) Use it when the user asks where in the world to live, work or travel; it ranks major cities, optionally by life sphere or region.
The catalogue of major cities ranked for one chart, overall or by chosen life spheres, worldwide or in one region. (API Pro) Use it when the user asks where in the world to live, work or travel; it ranks major cities, optionally by life sphere or region.
| Argument | Type | Description |
|---|---|---|
| birth* | object | |
| focus | array | |
| limit | integer | |
| region | string |
{
"type": "object",
"required": [
"birth"
],
"properties": {
"birth": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
},
"focus": {
"type": "array",
"items": {
"enum": [
"identity",
"love",
"body",
"money",
"home",
"mind"
],
"type": "string"
}
},
"limit": {
"type": "integer",
"maximum": 12,
"minimum": 3
},
"region": {
"enum": [
"Europe",
"North America",
"Latin America",
"Middle East & Africa",
"Asia",
"Oceania"
],
"type": "string"
}
}
}Every day of a window of up to 62 days scored for one activity (general, business, romance, health, creative, travel, home, clarity): helping and hindering transits, Moon phase and sign, void of course. The five best days first. (API Pro) Use it to pick dates for an activity within the next weeks.
| Argument | Type | Description |
|---|---|---|
| to | string | At most 62 days after from; 30 days by default. |
| from | string | |
| birth* | object | |
| activity | string | |
| timezone | string | IANA zone that sets where each day begins. UTC by default. |
{
"type": "object",
"required": [
"birth"
],
"properties": {
"to": {
"type": "string",
"format": "date",
"description": "At most 62 days after from; 30 days by default."
},
"from": {
"type": "string",
"format": "date"
},
"birth": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
},
"activity": {
"enum": [
"general",
"business",
"romance",
"health",
"creative",
"travel",
"home",
"clarity"
],
"type": "string"
},
"timezone": {
"type": "string",
"description": "IANA zone that sets where each day begins. UTC by default."
}
}
}The calculated day: the sky at noon UTC, the Moon's phase, the sky events of the coming week and, with birth data, every transit to the natal chart with its orb. No generated text. Use it for a day's horoscope or what is happening for someone now: send birth for a personal answer, leave it out for the general sky of that day.
| Argument | Type | Description |
|---|---|---|
| date | string | The day to compute, today (UTC) by default. |
| birth | object |
{
"type": "object",
"required": [],
"properties": {
"date": {
"type": "string",
"format": "date",
"description": "The day to compute, today (UTC) by default."
},
"birth": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
}
}
}One place against one chart: the relocated angles, the planets on them with orbs, a score for each life sphere and an overall score. (API Pro) Use it when the user asks whether a specific city or place suits them; it needs a birth time and the place's coordinates.
| Argument | Type | Description |
|---|---|---|
| birth* | object | |
| location* | object |
{
"type": "object",
"required": [
"birth",
"location"
],
"properties": {
"birth": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
},
"location": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"name": {
"type": "string"
},
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
}
}
}
}A natal chart from birth data. "part" picks what to return: full (everything: bodies with sign, degree, speed, retrograde flag and house; the angles; twelve Placidus cusps; aspects with orbs; element and quality balance; fixed-star contacts), short (Sun, Moon and Ascendant, each body's sign, retrograde bodies, dominant element and quality), or one part: planets, angles, houses, aspects, elements, fixed-stars. Full by default. Use it whenever the user gives a birth date, time and place and asks about their chart, signs, houses or aspects, and before interpreting anything; part=short is enough for the Sun, Moon and rising sign.
| Argument | Type | Description |
|---|---|---|
| part | string | |
| birth* | object |
{
"type": "object",
"required": [
"birth"
],
"properties": {
"part": {
"enum": [
"short",
"full",
"planets",
"angles",
"houses",
"aspects",
"elements",
"fixed-stars"
],
"type": "string",
"default": "full"
},
"birth": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
}
}
}Planetary positions, Moon phase and the coming week's sky events for a date (?date=YYYY-MM-DD, today by default). Works without a key: try curl https://api.natalchart.ai/v1/sky Use it for where the planets are on a date, the Moon phase, or the coming retrogrades and ingresses, when no one's chart is involved.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD, today (UTC) by default. |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date",
"description": "YYYY-MM-DD, today (UTC) by default."
}
}
}The solar return chart for a year, cast for the birth place or another location. (API Pro) Use it for the year ahead from a birthday; it needs a birth time.
| Argument | Type | Description |
|---|---|---|
| year* | integer | |
| birth* | object | |
| location | object |
{
"type": "object",
"required": [
"birth",
"year"
],
"properties": {
"year": {
"type": "integer",
"maximum": 2100,
"minimum": 1900
},
"birth": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
},
"location": {
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
}
}
}
}Two charts compared: inter-chart aspects with orbs, house overlays both ways and a score per life sphere. (API Pro) Use it when the user asks about compatibility or a relationship and gives birth data for both people.
| Argument | Type | Description |
|---|---|---|
| personA* | object | |
| personB* | object |
{
"type": "object",
"required": [
"personA",
"personB"
],
"properties": {
"personA": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
},
"personB": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
}
}
}Up to 60 transit events in a window of up to 92 days, the most significant kept when there are more: exact transit-to-natal aspects by date, sign ingresses and stations. (API Pro) Use it for forecasts over weeks or months (a year is four windows); for a single day use daily_transits.
| Argument | Type | Description |
|---|---|---|
| to | string | At most 92 days after from; 30 days by default. |
| from | string | |
| birth* | object |
{
"type": "object",
"required": [
"birth"
],
"properties": {
"to": {
"type": "string",
"format": "date",
"description": "At most 92 days after from; 30 days by default."
},
"from": {
"type": "string",
"format": "date"
},
"birth": {
"type": "object",
"required": [
"date",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"examples": [
"1991-09-06"
],
"description": "Birth date, YYYY-MM-DD, 1800 to 2399."
},
"time": {
"type": [
"string",
"null"
],
"examples": [
"18:30"
],
"description": "Local birth time, HH:mm, 24-hour. null when unknown: the chart is computed for noon and everything that depends on the time is withheld."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"examples": [
50.4501
]
},
"timezone": {
"type": "string",
"examples": [
"Europe/Kyiv"
],
"description": "IANA time zone. Leave it out to resolve it from the coordinates; historical daylight-saving rules are applied to the date."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"examples": [
30.5234
]
}
}
}
}
}Your plan, today's count and when the pool refills. Costs nothing. Use it when a call fails on the limit, or before a long series of calls, to see the plan and what is left today.
No arguments.
{
"type": "object",
"properties": {}
}