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.

Open the live JSON Plain text

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.

By Max Rachytskyy · Page updated · Times: JPL DE421 ephemeris, UTC