Integrations · Home Assistant · TRMNL · Shortcuts
Is Mercury retrograde?
On every screen you own.
One free endpoint answers Yes or No for the current minute, so a lamp, an e-ink frame, a menu bar or a Siri Shortcut can know the moment Mercury turns. Mercury stations retrograde February 9, 2027 at 17:36 UTC.
No key, no account, open CORS. Any planet: ?planet=venus, mars, jupiter, saturn, uranus, neptune, pluto.
The endpoint
GET https://cazimi.live/api/now?planet=mercury is computed on every request (cached 60 seconds), so isRetrograde flips at the station minute, not at the next daily rebuild. Add &format=text for a bare Yes or No. A response looks like this:
{
"planet": "mercury",
"isRetrograde": false,
"answer": "No",
"phase": "direct",
"sign": "Pisces",
"nextTransition": "preShadowStart",
"nextTransitionLabel": "Pre-shadow starts",
"nextTransitionAt": "2027-01-25T18:58:00Z",
"minutesToNextTransition": "…",
"cycle": {
"…": "the five moments of the cycle"
},
"checkedAt": "…",
"source": "https://cazimi.live/mercury-retrograde-february-2027"
}
Home Assistant
The RESTful integration ships with Home Assistant, so this needs no add-on. Paste into configuration.yaml and restart: you get binary_sensor.mercury_retrograde, the phase (pre-shadow, retrograde, cazimi, post-shadow, direct) and a timestamp sensor for the next change.
# configuration.yaml
rest:
- resource: https://cazimi.live/api/now?planet=mercury
scan_interval: 300
binary_sensor:
- name: "Mercury retrograde"
unique_id: cazimi_mercury_retrograde
value_template: "{{ value_json.isRetrograde }}"
sensor:
- name: "Mercury phase"
unique_id: cazimi_mercury_phase
value_template: "{{ value_json.phase }}"
- name: "Mercury next change"
unique_id: cazimi_mercury_next_change
device_class: timestamp
value_template: "{{ value_json.nextTransitionAt }}"
Then use it like any other sensor. This automation sends a notification and turns a lamp red or green at each station:
# automations.yaml: a notification and a light colour at each station
- alias: "Mercury stations retrograde or direct"
triggers:
- trigger: state
entity_id: binary_sensor.mercury_retrograde
actions:
- action: notify.notify
data:
message: >
Mercury is {{ 'retrograde' if trigger.to_state.state == 'on' else 'direct' }} again.
- action: light.turn_on
target:
entity_id: light.desk
data:
color_name: "{{ 'tomato' if trigger.to_state.state == 'on' else 'seagreen' }}"
TRMNL e-ink display
Create a Private Plugin with strategy Polling, Polling URL https://cazimi.live/api/now?planet=mercury, refresh every 15 minutes, and paste this markup for the full layout:
<div class="view view--full">
<div class="layout layout--col layout--center">
<span class="value value--xxxlarge">{{ answer }}</span>
<span class="label">Mercury · {{ phase }} · {{ sign }}</span>
<span class="description">{{ nextTransitionLabel }}: {{ nextTransitionAt | date: "%b %-d, %H:%M UTC" }}</span>
</div>
<div class="title_bar">
<span class="title">Is Mercury retrograde?</span>
<span class="instance">cazimi.live</span>
</div>
</div>
Apple Shortcuts and Siri
The Cazimi iPhone app adds its own Siri questions ("Is Mercury retrograde in Cazimi?") and Lock Screen widgets. To build your own: add Get Contents of URL with https://cazimi.live/api/now?planet=mercury&format=text, then Speak Text or Show Result. For the full sentence use the JSON URL with Get Dictionary Value → sentence. A Personal Automation can run it every morning.
Mac menu bar, Raycast, Stream Deck
Raycast script command, shown inline in the root search and refreshed every 10 minutes:
#!/bin/bash
# @raycast.schemaVersion 1
# @raycast.title Is Mercury retrograde?
# @raycast.mode inline
# @raycast.refreshTime 10m
curl -s "https://cazimi.live/api/now?planet=mercury&format=text"
SwiftBar or xbar plugin for the menu bar:
#!/bin/bash
# mercury.10m.sh for SwiftBar or xbar: "☿ Yes" or "☿ No" in the macOS menu bar
echo "☿ $(curl -s 'https://cazimi.live/api/now?planet=mercury&format=text')"
echo "---"
echo "Today's answer | href=https://cazimi.live/mercury-retrograde-today"
On a Stream Deck, any plugin that shows the text of a web request can point at the plain-text URL. In a terminal: curl -s "https://cazimi.live/api/now?planet=mercury&format=text".
Calendars, websites and AI assistants
Every station, cazimi and shadow as a calendar subscription for Google, Apple and Outlook. A one-line badge for any website: <script src="https://cazimi.live/badge.js" async></script>. Daily JSON with both cycles around today: /v1/mercury/today.json. Claude, ChatGPT and other MCP clients can ask the same data through the MCP server at https://cazimi.live/api/mcp. Times and checks: accuracy against JPL Horizons.
Questions
How do I show Mercury retrograde in Home Assistant?
Add a RESTful sensor that reads https://cazimi.live/api/now?planet=mercury every five minutes; the binary sensor turns on at the minute Mercury stations retrograde and off at the minute it stations direct. The next change it will catch: Mercury stations retrograde February 9, 2027 at 17:36 UTC.
How fast does the live answer change at a station?
Within a minute. /api/now is computed on each request from the JPL DE421 station times and cached for 60 seconds, so a device polling every five minutes sees the change at most about six minutes late. Mercury stations retrograde February 9, 2027 at 17:36 UTC.
Is the Cazimi API free?
Yes: no key, no account, open CORS, for personal and commercial use. A link to cazimi.live where people can see it is all we ask. Every answer is computed to the UTC minute; Mercury stations retrograde February 9, 2027 at 17:36 UTC.