Ask the engine a question.
Each answer below comes from the code behind the compute API and the hosted MCP server, not from a mock. With it you get the JSON the API returns, the cURL command that asks the same question, the MCP tool call an assistant would make, and what the answer was compared against.
Pick a question
A birth chart for a date, time and place
On 15 June 1990 at 14:30 in Paris, France (UTC+2, which is 15 June 1990, 12:30 UTC), the Sun was at 24°08′ Gemini, the Moon at 15°38′ Pisces and the Ascendant at 2°27′ Libra.
| Body | Position | Motion |
|---|---|---|
| Sun | 24°08′ Gemini | Direct |
| Moon | 15°38′ Pisces | Direct |
| Mercury | 5°43′ Gemini | Direct |
| Venus | 18°48′ Taurus | Direct |
| Mars | 11°03′ Aries | Direct |
| Jupiter | 15°53′ Cancer | Direct |
| Saturn | 24°01′ Capricorn | Retrograde |
| Uranus | 8°09′ Capricorn | Retrograde |
| Neptune | 13°42′ Capricorn | Retrograde |
| Pluto | 15°24′ Scorpio | Retrograde |
| Ascendant | 2°27′ Libra | |
| Midheaven | 3°06′ Cancer |
Whole-sign houses, so the first house is the Ascendant’s sign. The chart has 16 major aspects between the Sun, the Moon and the eight planets; the JSON lists them with their orbs.
Computed with the compute API’s own code when this page was built.
The JSON response
{
"schema": "zodiacs.compute-api.chart.v1",
"result": {
"instant": "1990-06-15T12:30:00.000Z",
"local": {
"offsetMinutes": 120,
"flags": [],
"localMeanTime": null,
"zoneHistory": "runtime",
"zoneUncertain": false
},
"bodies": [
{
"body": "Sun",
"lon": 84.14928002220142,
"lat": -0.00001827703878788282,
"speed": 0.9551305973047874,
"retrograde": false,
"sign": "gemini",
"degree": 24.149280022201424
},
{
"body": "Moon",
"lon": 345.6367188970119,
"lat": 3.1501089515977787,
"speed": 13.369240872094679,
"retrograde": false,
"sign": "pisces",
"degree": 15.63671889701186
},
{
"body": "Mercury",
"lon": 65.7265334199264,
"lat": -1.659130144145581,
"speed": 1.7170306078924114,
"retrograde": false,
"sign": "gemini",
"degree": 5.7265334199263975
},
{
"body": "Venus",
"lon": 48.80186545784608,
"lat": -1.9454777463945472,
"speed": 1.1760216097229659,
"retrograde": false,
"sign": "taurus",
"degree": 18.801865457846077
},
{
"body": "Mars",
"lon": 11.0560354451639,
"lat": -1.985442010929648,
"speed": 0.7189171010963946,
"retrograde": false,
"sign": "aries",
"degree": 11.0560354451639
},
{
"body": "Jupiter",
"lon": 105.89399333781893,
"lat": 0.1868222095489725,
"speed": 0.2166527083602432,
"retrograde": false,
"sign": "cancer",
"degree": 15.893993337818927
},
{
"body": "Saturn",
"lon": 294.0306398433936,
"lat": 0.11719975460325133,
"speed": -0.0586625626510795,
"retrograde": true,
"sign": "capricorn",
"degree": 24.0306398433936
},
{
"body": "Uranus",
"lon": 278.16312067145714,
"lat": -0.3255654628085348,
"speed": -0.038934664019052434,
"retrograde": true,
"sign": "capricorn",
"degree": 8.163120671457136
},
{
"body": "Neptune",
"lon": 283.7163219439272,
"lat": 0.8770484012609031,
"speed": -0.025031484796045333,
"retrograde": true,
"sign": "capricorn",
"degree": 13.716321943927142
},
{
"body": "Pluto",
"lon": 225.40175398202936,
"lat": 15.85358596624236,
"speed": -0.02017257970976516,
"retrograde": true,
"sign": "scorpio",
"degree": 15.40175398202939
},
{
"body": "North Node",
"lon": 308.1217975926026,
"lat": 0,
"speed": 0.013238202005254607,
"retrograde": false,
"sign": "aquarius",
"degree": 8.121797592602661
},
{
"body": "South Node",
"lon": 128.1217975926026,
"lat": 0,
"speed": 0.013238202005254607,
"retrograde": false,
"sign": "leo",
"degree": 8.121797592602604
}
],
"angles": {
"asc": 182.4651150595028,
"mc": 93.10546207243345,
"dsc": 2.465115059502807,
"ic": 273.1054620724335
},
"houses": {
"system": "whole",
"cusps": [
180,
210,
240,
270,
300,
330,
0,
30,
60,
90,
120,
150
]
},
"aspects": [
{
"a": "Moon",
"b": "Pluto",
"type": "trine",
"orb": 0.23496491498258365,
"applying": false
},
{
"a": "Moon",
"b": "Jupiter",
"type": "trine",
"orb": 0.25727444080700934,
"applying": true
},
{
"a": "Jupiter",
"b": "Pluto",
"type": "trine",
"orb": 0.49223935578956457,
"applying": false
},
{
"a": "Neptune",
"b": "Pluto",
"type": "sextile",
"orb": 1.6854320381021353,
"applying": false
},
{
"a": "Moon",
"b": "Neptune",
"type": "sextile",
"orb": 1.920396953084719,
"applying": false
},
{
"a": "Jupiter",
"b": "Neptune",
"type": "opposition",
"orb": 2.1776713938917283,
"applying": false
},
{
"a": "Mars",
"b": "Neptune",
"type": "square",
"orb": 2.6602864987632984,
"applying": true
},
{
"a": "Mars",
"b": "Uranus",
"type": "square",
"orb": 2.8929147737067638,
"applying": false
},
{
"a": "Venus",
"b": "Jupiter",
"type": "sextile",
"orb": 2.9078721200271502,
"applying": false
},
{
"a": "Moon",
"b": "Venus",
"type": "sextile",
"orb": 3.1651465608341596,
"applying": true
},
{
"a": "Venus",
"b": "Pluto",
"type": "opposition",
"orb": 3.400111475816715,
"applying": false
},
{
"a": "Mars",
"b": "Jupiter",
"type": "square",
"orb": 4.837957892655027,
"applying": true
},
{
"a": "Venus",
"b": "Neptune",
"type": "trine",
"orb": 5.0855435139188785,
"applying": false
},
{
"a": "Venus",
"b": "Saturn",
"type": "trine",
"orb": 5.228774385547524,
"applying": true
},
{
"a": "Uranus",
"b": "Neptune",
"type": "conjunction",
"orb": 5.553201272470062,
"applying": false
},
{
"a": "Jupiter",
"b": "Uranus",
"type": "opposition",
"orb": 7.73087266636179,
"applying": false
}
],
"flags": [],
"deltaT": {
"seconds": 57.19704162597656,
"sigma": 0.000846,
"model": "iers-utc/1",
"table": "2026-09-24",
"tableDigest": "064d98b4a531053a",
"segment": "observed"
},
"timeScale": {
"input": "utc",
"basis": "iers",
"ut1MinusUtc": {
"seconds": -0.013041666666662621,
"sigma": 0.000846,
"source": "observed"
},
"leapSeconds": {
"taiMinusUtc": 25,
"listed": true
}
}
},
"receipt": {
"conventionIds": [
"angleExclusions:exact-geographic-poles-and-ecliptic-horizon-coincidence",
"angles:gast-and-true-obliquity",
"aspects:major-aspects;sun-moon-eight-planets;no-nodes;applying-instantaneous-orb-rate",
"assessment:finite-reference-cases-only",
"broadDateRange:not-certified",
"calendar:proleptic-gregorian",
"conventionIds:zodiacs-conventions-registry;receipt-and-result;sorted-unique;in-receipt",
"deltaT:tt-minus-ut1;value-in-result",
"deltat-model:iers-utc/1",
"deltat-segment:observed",
"ephemeris:astronomy-engine@2.1.19",
"house:whole",
"inputSyntax:not-an-astronomical-accuracy-guarantee",
"localTime:tzdb-shards-before-1970;host-intl-from-1970;flags-from-transition-record",
"longitudeUnit:degrees-[0,360)",
"moonNodes:instantaneous-geocentric-moon-orbit-plane",
"moonPosition:astronomy-engine-geo-moon;no-light-time;no-aberration",
"nutation:iau2000b;equation-of-equinoxes-with-two-complementary-terms",
"planetPositions:aberrated-geocentric-ecliptic-of-date;no-deflection",
"reference:supplied-instant",
"speed:degrees-per-day;central-difference-plus-minus-0.001-day;nodes-plus-minus-0.25-day",
"time-basis:iers",
"time-scale:utc",
"timeScale:tt-from-leap-seconds-and-ut1-from-iers-1972-to-table-end;delta-t-model-otherwise;in-result",
"ut1-source:observed",
"zodiac:tropical"
],
"conventions": {
"angles": "gast-and-true-obliquity",
"aspects": "major-aspects;sun-moon-eight-planets;no-nodes;applying-instantaneous-orb-rate",
"calendar": "proleptic-gregorian",
"conventionIds": "zodiacs-conventions-registry;receipt-and-result;sorted-unique;in-receipt",
"deltaT": "tt-minus-ut1;value-in-result",
"localTime": "tzdb-shards-before-1970;host-intl-from-1970;flags-from-transition-record",
"longitudeUnit": "degrees-[0,360)",
"moonNodes": "instantaneous-geocentric-moon-orbit-plane",
"moonPosition": "astronomy-engine-geo-moon;no-light-time;no-aberration",
"nutation": "iau2000b;equation-of-equinoxes-with-two-complementary-terms",
"planetPositions": "aberrated-geocentric-ecliptic-of-date;no-deflection",
"speed": "degrees-per-day;central-difference-plus-minus-0.001-day;nodes-plus-minus-0.25-day",
"timeScale": "tt-from-leap-seconds-and-ut1-from-iers-1972-to-table-end;delta-t-model-otherwise;in-result",
"zodiac": "tropical"
},
"coordinates": {
"latitude": 48.8566,
"longitude": 2.3522
},
"coverage": {
"angleExclusions": "exact-geographic-poles-and-ecliptic-horizon-coincidence",
"assessment": "finite-reference-cases-only",
"broadDateRange": "not-certified",
"inputSyntax": "not-an-astronomical-accuracy-guarantee"
},
"engine": {
"ephemeris": {
"name": "astronomy-engine",
"version": "2.1.19"
},
"name": "@zodiacs/engine",
"version": "1.1.0-rc.1"
},
"houses": {
"absenceReason": null,
"actual": "whole",
"requested": "whole"
},
"inputFlags": [],
"instant": "1990-06-15T12:30:00.000Z",
"localResolution": {
"date": "1990-06-15",
"gapShiftMinutes": 0,
"offsetMinutes": 120,
"policy": {
"fold": "earlier",
"gap": "shift-forward"
},
"time": "14:30",
"timeZone": "Europe/Paris"
},
"provenance": {
"runtime": {
"name": "node",
"tzdbVersion": "2026c"
},
"status": "claimed"
},
"reference": "supplied-instant",
"resultFlags": [],
"schema": "zodiacs.calculation-receipt.draft-v1",
"sourceInstant": null,
"timeKnown": true,
"timeScale": "utc"
},
"backend": {
"name": "@zodiacs/engine",
"version": "1.1.0-rc.1",
"ephemeris": {
"name": "astronomy-engine",
"version": "2.1.19"
}
},
"cite": {
"url": "https://zodiacs.org/developers/compute/#chart",
"receipt": "sha256:79819f8b7f18d88d2f9199e29718bef60000bd98d492c602e4010330e8a782ea",
"engine": "@zodiacs/engine",
"version": "1.1.0-rc.1"
}
}The same request with cURL
curl --silent --show-error https://zodiacs.org/api/v1/chart \
--header 'Content-Type: application/json' \
--data-raw '{"local":{"date":"1990-06-15","time":"14:30","zone":"Europe/Paris"},"latitude":48.8566,"longitude":2.3522,"houseSystem":"whole"}'POST /api/v1/chart answers with the same JSON, with no key. Open it in the playground to send it and compare the two answers.
The same question as MCP tool calls
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "resolve_birth_time",
"arguments": {
"local": {
"date": "1990-06-15",
"time": "14:30",
"zone": "Europe/Paris"
},
"longitude": 2.3522
}
}
}
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "calculate_natal_chart",
"arguments": {
"utc": "1990-06-15T12:30:00Z",
"latitude": 48.8566,
"longitude": 2.3522,
"houseSystem": "whole"
}
}
}The local MCP adapter takes the instant in UTC, so the local time is read first with resolve_birth_time, which runs the compute API’s time calculation. Both run on your own machine.
How this was checked
- Computed by @zodiacs/engine 1.1.0-rc.1 with astronomy-engine 2.1.19, as the answer’s receipt names them. The local time was read with Node with tzdb 2026c.
- An automated test compares the engine’s positions with NASA JPL Horizons at 2020 (ten bodies) and 1907 (Sun, Moon and Mars). The sample maximum difference is 14.8 arcseconds (Neptune, 2020).
- Compared with Swiss Ephemeris 2.10.03 every tenth day from 1800 to 2026, the sample maximum difference in longitude is 22.9 arcseconds (Venus, 1878).
- A sample maximum is the largest difference found in the cases measured. It is not a bound for every date.
- The answer cites its receipt as
sha256:79819f8b7f18d88d2f9199e29718bef60000bd98d492c602e4010330e8a782ea, the SHA-256 of the receipt’s canonical JSON, which the playground computes again.
What runs where
The first answers were computed when this page was built. When you change the date, time or place of the chart, or the date of the Mercury question, the page loads the compute API’s own calculations, the bundle the playground runs, and computes the new answer here. This page sends nothing to the API; the commands show how you would.
The compatibility answer is fixed. It compares two synthetic births with the hosted server’s get_compatibility tool.
Next steps
- The compute API reference: seven endpoints, their limits and their errors.
- The playground: send any documented request and compare two answers field by field.
- The local MCP adapter and the hosted MCP server.
- How close the engine is to its references.











