For Codex — CLI, IDE extension, ChatGPT desktop app
Give your agent the sky, not a guess.
Connect Open Ephemeris and Codex reads all 121 endpoints, calls them while it writes your code, and tests what it builds against NASA JPL DE440. The astrology app it ships is right to the arcsecond, not right-sounding.
- Free to start
- 150 credits, no card
- 1550–2650
- DE440 coverage
- 92 tools
- one connection
- 01› add a /chart route and test it against the real sky
- 02• openephemeris.dev_list_allowedallowlist read · no credits
- 03• openephemeris.ephemeris_natal_chart1 credit
- 041990-04-12T14:30:00 · America/New_York · 40.7128, −74.0060
- 05← resolved 18:30:00Z · EDT from tzdata · DE440 · ΔT 57.183 s
- 06Sun22.583433°Aries 22°35′00″ · H9
- 07Moon231.451141°Scorpio 21°27′04″ · H4
- 08Asc143.860245°Leo 23°51′37″
- 09• edited src/routes/chart.ts +48
- 10• edited test/chart.test.ts +21
- 11expect(chart.sun.lon).toBeCloseTo(22.583433, 5)
- 12✓ 1 passed — asserted against DE440, not recalled
01 · Connect
One connection, every place you run Codex.
Codex lives inside the ChatGPT desktop app and shares its plugins. Install Open Ephemeris from the plugin directory, approve the sign-in, and it is available to Codex in every project.
Already installed it for ChatGPT? Codex can use it as-is.
02 · What it can call
The API it's coding against, inside its own loop.
Codex gets the developer tools that ChatGPT doesn't: it can list, read and call any allowlisted endpoint, so the request your code sends is the request it already tried.
| Tool | What the agent does with it | Credits |
|---|---|---|
| dev_list_allowedEvery allowlisted operation, method and path, grouped. The agent reads the map before it writes a request. | Every allowlisted operation, method and path, grouped. The agent reads the map before it writes a request. | free |
| dev_read_apiAny GET endpoint — catalogs, body lists, lunar data, timezones — with the endpoint reference in the tool description. | Any GET endpoint — catalogs, body lists, lunar data, timezones — with the endpoint reference in the tool description. | per endpoint |
| dev_write_apiAny POST endpoint: natal, synastry, composite, transit search, returns, astrocartography. The request shape your code will send. | Any POST endpoint: natal, synastry, composite, transit search, returns, astrocartography. The request shape your code will send. | per endpoint |
| ephemeris_natal_chartPlanets, angles, houses and the aspect grid as JSON. format=llm returns a compact projection that keeps the agent's context lean. | Planets, angles, houses and the aspect grid as JSON. format=llm returns a compact projection that keeps the agent's context lean. | 1 credit |
| location_search · timezone_resolvePlace name to coordinates and IANA zone, so the agent never invents a latitude or assumes UTC. | Place name to coordinates and IANA zone, so the agent never invents a latitude or assumes UTC. | per endpoint |
| account_usageCredits left, so a long agent run can check its budget instead of failing halfway. | Credits left, so a long agent run can check its budget instead of failing halfway. | free |
?profile=full advertises every tool; without it a connection shows a shorter default list and the rest stay callable by name.
03 · Hand it a task
Prompts that end in a passing test.
- 01
Use Open Ephemeris to add a /chart endpoint to this app. Call dev_list_allowed first and match the natal-chart request schema exactly.
- 02
Write a test that pins the Sun to 22.583433° for 1990-04-12 14:30 in New York, using the live API as the oracle.
- 03
Find every place this codebase treats a birth time as UTC. Switch it to local time plus an IANA zone, the way the Open Ephemeris datetime contract requires.
- 04
Port our Swiss Ephemeris calls to Open Ephemeris and diff the planet longitudes for twenty test charts.
- 05
Build a component that shows tonight's moon phase and the next new and full moon from Open Ephemeris.
- 06
Check how many credits this account has left before you run the batch, and stop if it is under 500.
04 · Why not let it guess
A model recalls; it doesn't compute.
Ask any model for a planet's longitude and you get a plausible number. Your tests need the true one, to six decimals, every time you run them.
Time zones are where charts break.
One wrong hour moves the Ascendant about 15°. A clock time without a zone is a hard 400 here; a local time is resolved against historical tzdata for that exact date.
Small JSON for a long run.
format=llm returns a compact projection of any chart, so an agent can make many calls without filling its context.
The same engine your app will call.
What Codex tries through MCP is the REST API you ship against. No second integration, no drift between the prototype and production.
Build free. Pay when it ships.
150 credits to start, no card. Then top up from $5 with credits that never expire, or subscribe from $29/mo for 75000 credits a month.
Questions
- Which Codex surfaces does this work in?
- All of them. The ChatGPT desktop app, the Codex CLI and the IDE extension share one MCP configuration, so you connect once. In the desktop app you can also install Open Ephemeris from the plugin directory without touching a config file.
- Do I need an API key?
- Not for interactive use: `codex mcp login openephemeris` signs you in through your browser and creates a free account if you don't have one. For CI or a headless box, create a key in the dashboard and send it as the X-API-Key header via env_http_headers.
- What can Codex call?
- Typed tools for charts, transits, returns, Human Design, Vedic and BaZi, plus the developer tools: dev_list_allowed lists every allowlisted operation, dev_read_api calls any GET endpoint and dev_write_api any POST endpoint. With ?profile=full on the URL every tool is advertised.
- What does it cost?
- You start with 150 free credits, no card. A natal chart is 1 credit. When you ship, top up from $5 or subscribe from $29/mo. Listing operations is free; every API call is metered at the endpoint's own credit cost.
- Why not let the model compute positions itself?
- A language model recalls ephemeris values; it does not compute them. A one-hour time-zone mistake moves the Ascendant about 15°. Open Ephemeris resolves the local time against historical tzdata and computes every position from NASA JPL DE440, so your tests have a ground truth to assert against.