📅 Windy Calendar

A calendar with a front door for agents.

Most calendars make agents scrape a screen or borrow a password. Windy Calendar gives them a real door: they prove who they are, ask for what they need, and the owner stays in charge.

How an agent gets in

1. Carry a passport

Every call carries an Eternitas passport (an EPT). Windy Calendar checks its signature, the signed revocation list and the live status feed on every request. No passport, no tools.

2. Act for your own owner

The passport names the agent’s human owner, and that owner’s calendar is the one it can use. An agent can’t reach anyone else’s calendar.

3. Earn trust

What an agent may do depends on its live Eternitas trust score, the owner’s limits for that agent, and whether the change touches someone else.

Calling it

Two endpoints over plain HTTPS. GET /tools lists what this agent may use; POST /invoke runs one.

POST https://windycalendar.com/invoke
Authorization: Bearer <your Eternitas passport token>
Content-Type: application/json

{"name": "book_appointment",
 "arguments": {"starts_at_utc": "2026-10-14T18:00:00Z",
               "booker_name": "Sarah Lee", "booker_email": "sarah@example.com",
               "idempotency_key": "intro-sarah-2026-10-14"}}

The tools

27 tools, from the live contract control.mcp.v1.

ToolWhat it doesAccess
get_healthThe FIRST tool to call when the owner says anything is wrong with their bookings.reads
get_statusRead what Windy Calendar is doing right now: the running version, whether the database is reachable, and how many appointments are on the books coming up.reads
get_configRead the owner's effective Windy Calendar configuration (secrets omitted): their timezone, the address confirmation email is sent from, and their reminder cadence.reads
get_logsRead the owner's recent Windy Calendar activity log when something seems off — bookings, cancellations, availability changes — as a timeline of what happened.reads
run_selftestActively test whether Windy Calendar's core booking path works right now: it checks the atomic slot-lock index is present, confirms the database answers a query, and confirms an .ics invite can be generated.reads
get_capabilitiesProbe which Windy Calendar features actually work for this owner right now — taking bookings, sending confirmation email, sending reminders, and generating calendar invites — each reported as supported, unsupported, or unknown (probed, never assumed).reads
reconnectRe-establish and verify Windy Calendar's connection to its database without restarting anything.reads
check_for_updateAsk whether a newer version of Windy Calendar is available.reads
list_settingsList every setting the owner can change — their timezone, display name, the from-address, and their reminder cadence — each with its type, current value, and a plain description.reads
set_settingChange one Windy Calendar setting by its path (from list_settings) — e.g.asks first below top trust
undo_last_changeUndo the most recent setting change, stepping back through the owner's change history.asks first below top trust
enter_safe_modePause taking NEW bookings — the safe state when something seems wrong with intake.reads
exit_safe_modeLeave safe mode and resume taking new bookings.asks first below top trust
reset_to_defaultsReset the owner's notification and display settings to their defaults — reminder cadence back to day-before-and-hour-before, and resume bookings if paused.always confirms
list_appointmentsShow the owner what is booked — the 'you've got two knitting lessons Tuesday' call an agent makes every morning.reads
get_appointmentRead one booking's full detail by its id — the time, the booker's name and contact, the location, and its status.reads
get_availabilityList the open, bookable slots for a date range, rendered in a given timezone.reads
set_availabilityDefine or replace the owner's weekly open hours and slot length — e.g.asks first below top trust
block_timeMark a stretch of time off — a vacation, an appointment elsewhere, 'gone fishing'.asks first below top trust
book_appointmentCreate a booking on the owner's behalf — an agent booking a slot for a caller.asks first below top trust
reschedule_appointmentMove an existing booking to a new open slot and re-notify both the owner and the booker.asks first below top trust
cancel_appointmentCancel a booking, free its slot atomically, and notify the other party.asks first below top trust
set_reminder_policyChange how far ahead reminder emails go out, separately for the owner and the booker — e.g.asks first below top trust
set_meeting_locationSet where a specific appointment happens — a physical address for in-person work (the carpenter, the in-home lesson) OR a meeting link for remote (a consultant, a future Windy Chat video room).asks first below top trust
get_booking_pageReturn the public booking-page URL the owner shares so customers can book themselves — no account required of the customer.reads
get_calendar_feedReturn the read-only .ics subscription URL so the owner can pull their Windy Calendar bookings into their own Google, Apple, or Outlook calendar, with no login and no two-way sync.reads
rotate_feed_tokenIssue a new secret token for the owner's .ics feed and week view, revoking every previously shared feed or calendar URL.asks first below top trust