The occult API

Charts, synastry, spirit lookups, divination casts, planetary hours, and cross-tradition graph traversal — through a documented REST API and an MCP server. Clean JSON. 30 req/min free tier, no credit card. /api/stars/health answers with no key; everything else takes an API key.

13
MCP tools
REST API · 30 req/min free · no credit card

See it — the live console

Call the real API from this page. The Health check preset works with no key; the others expect an API key (add -H "X-API-Key: …" once you have one). Edit any request and hit Send.

Stars Engine API console
$
# Type a curl command above and hit Send, or use a preset.

the whole engine, behind every category

169
traditions
224
master-profile keys
113 / 183
warranted claims
5,132
graph nodes
8
languages
0.515–0.523
convergence cos

93 traditional D0–D2 systems converge at cosine 0.515–0.523 across 500 charts (511 comparable pairs), engine hypotheses excluded. Engine 2.7.0. Verified 2026-09-08.

What you get

🖥️

Direct REST

curl, requests, fetch — any HTTP client. JSON in, JSON out, consistent error envelopes. /api/stars/health is open; every other route authenticates with an API key.

🤖

MCP server — 13 tools

Natal chart, session brief, convergence hotspots, synastry, transits, concept lookup, Rosetta translation, graph adjacency, journalling. SSE transport, JSON-RPC 2.0, at stars.madmanwithabox.org/mcp/sse. Practitioner tier and above.

📜

OpenAPI-documented

Every endpoint returns JSON and is described in an OpenAPI spec — codegen a client in your language, or point an agent at it.

🎯

Deterministic

The same birth data returns the same chart, forever — so responses are cacheable, diffable, and safe to snapshot in a test suite.

A sample of the surface:

GET /api/stars/esoteric/spirits
POST /api/stars/divination/cast
GET /api/stars/graph/rosetta
GET /api/stars/graph/brief/{system}
GET /api/stars/graph/search
GET /api/stars/timing/planetary_hours
POST /api/stars/chaos/sigilize
POST /compute
POST /synastry
GET /api/stars/health

Start in 30 seconds:

# Open — no key
curl "https://stars.madmanwithabox.org/api/stars/health"

# Everything else takes an API key
curl -H "X-API-Key: $STARS_API_KEY" \
  "https://stars.madmanwithabox.org/api/stars/esoteric/spirits?sign=Aries°ree=15"

Why you can trust it

Self-hosted compute

Not on AWS, Google Cloud, or Azure. Chart computation runs on a dedicated server in Texas against the JPL DE440 ephemeris; the public frontend is on independent infrastructure in Germany. Your birth data reaches our machine, not a cloud maths API — and the ephemeris never leaves our server.

No training, no selling, no analytics

Requests aren't training data and aren't for sale. We don't log your API calls for analytics. The free tier is a free tier, not a data-harvesting funnel.

Prices you can read on one line

Explorer $0/mo · Enthusiast $12/mo · Practitioner $59/mo · Studio $199/mo. Free tier 30 req/min. No "contact sales," no enterprise pricing call.

We serve the JSON. You build the thing.

Stars computes and documents; the application is yours. Founding developers get a permanent free account for telling us where the API is awkward, what's missing, and which endpoint you wish returned one more field.

Invite-only beta. Free tier 30 req/min, no credit card. Your data isn't the product — your subscription is.