• v0.71.0 a03b02fb13

    v0.71.0
    All checks were successful
    CI / gate (push) Successful in 2m39s
    CI / image (push) Successful in 28s
    Stable

    joeyr released this 2026-10-09 12:18:25 -05:00 | 11 commits to main since this release

    Added

    • Alerts on create_event and update_event. alerts is a list of whole minutes
      before the start: [30] is half an hour before, [1440, 30] a day and half an hour
      before, [0] at the start. At most two, matching the iPhone's Alert and Second Alert.
      Until now an event booked through the connector could not carry a reminder at all, and
      each one had to be added by hand on a phone afterwards.
    • An all-day event's only alert is 09:00 on the day, written as [0]. Any other value
      on an all-day event is refused. The count is anchored at 09:00 rather than midnight so
      the Calendar app's own all-day choices read back as round numbers: "1 day before (9 AM)"
      is 1440.
    • list_events reports each event's alerts, earliest first, and only when there are
      some. Every calendar on the account reports them, writable or not; a subscribed calendar
      never does, because Apple usually strips a feed's alerts on the device and reporting the
      file's would describe reminders that never ring. The subscriptions tenant follows the
      same rule.
    • Write responses always state the alerts, as [] when there are none, so clearing them
      is confirmed by the response rather than by a missing field.

    Changed

    • On an update, alerts replaces the plain alerts and nothing else. [] removes them;
      leaving alerts out keeps every alarm as it was, which is what edits did already.
      Travel-time and location alerts are display alarms too, so the rule is not "keep anything
      that is not a display alarm": what is replaced is an alarm a fixed number of minutes from
      the start, shown or sounded. Travel time, location, absolute-time, email and
      counted-from-the-end alarms are never reported and never removed.
    • scope: "all" and "following" give occurrences moved by hand the new alerts. Every
      other field deliberately leaves a moved occurrence alone, and still does. Alerts are the
      exception because "add a 30 minute alert every week" means every week, including the one
      that moved to Wednesday.
    • update_event accepts an update carrying only alerts. Its "nothing to change" guard
      listed every other field, so without this an alerts-only update would have been refused.
    • alerts is checked strictly. FastMCP's argument checking turns "30" and 30.0 into
      30 and true into 1 before a tool runs, so a boolean would have set a one-minute alert
      and reported success. The parameter is advertised as an array of integers and validated
      as raw values, and anything that is not a real integer is refused with created or
      updated false and the value named.
    • update_event's description no longer says repeating events cannot be changed. That
      has been wrong since 0.9.0 and sat one paragraph above the scope rules contradicting
      it. The same stale note on Event is corrected.

    Reconnect the calendar connector after deploying, or Claude keeps the old tool list
    without alerts.

    Downloads