# Calendar — Quickstart

The calendar is **tools + a feed**. Your AI (or your receptionist) writes to it through MCP; your
phone reads it through a private subscribe URL. There is no calendar app to open.

## 1. Make a bookable calendar

```
create_calendar { name: "Bookings", bookable: true }
```

It takes your project's business timezone (set in Settings) and Mon–Fri 9–5 by default. Adjust:

```
update_calendar { calendar: "bookings", hours: { "tue": [["10:00","18:00"]], "sat": [["09:00","13:00"]] }, slotMinutes: 45, bufferMinutes: 15 }
```

## 2. Put it on your phone

```
create_feed_link { calendar: "bookings", label: "Mike's iPhone" }
```

iPhone: Settings → Calendar → Accounts → Add Account → Other → **Add Subscribed Calendar** → paste
the URL. It refreshes every 15 minutes by default (Fetch New Data). Google Calendar: Other
calendars → From URL (Google refreshes every 12–24 h and cannot be forced).

The URL is the credential. `revoke_feed_link` kills it; make a new one per device.

## 3. Let the receptionist book

Grant `find_free` and `book` to the assistant's profile in the MCP Hub. On a call:

```
find_free { calendar: "bookings" }            → slots, each with local weekday/date/time
book { calendar: "bookings", start: "<a slot's start>", name: "Dave Ortiz", phone: "+16195551234" }
```

`book` re-checks the same rules as `find_free` and refuses a slot that stopped being free. A
confirmation SMS goes to the phone number; the event is on your phone at the next refresh.

## Times

Send instants with an offset or `Z` (`2026-09-08T10:00:00-07:00`). Each calendar has a home
zone; every event remembers the zone it was created in; `whoami` tells you your own. Recurrence is
`rrule` (`FREQ=WEEKLY;BYDAY=MO,WE`).
