Get availability
get_availabilityReturns the user's busy times in a given range, across all calendars shared with this access.
How the answer is produced: every shared calendar is read directly at the provider and the results are merged. There is no detour through a copy. as_of per calendar says when it was read — reads are reused for up to 60 seconds, so an event created moments ago may briefly be missing.
What busy contains: every event in the range, including all-day events and ones marked "tentative". Cancelled events are not included.
blocks_time per entry says whether it actually occupies the time. It is false for entries that do not make the user unavailable — holidays, birthdays, and (importantly) ALL all-day events from Apple/iCloud, which that provider always marks as free with no setting for the user to change. Such an entry is still a real appointment: an all-day "Baustelle Darmstadt" is a working day, not free time.
Use it accordingly: for "am I free / find me a slot", count only blocks_time: true. For "what do I have on", list everything and let the user judge. Never present a blocks_time: false entry as nonexistent.
Completeness: the answer covers exactly the calendars the user shared — not necessarily all calendars they own. If one of them could not be read, it appears with read: false in sources and additionally in warnings. These limitations belong in your answer to the user.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End of the range, ISO 8601 | |
| from | Yes | Start of the range, ISO 8601 (e.g. 2026-07-21T00:00:00Z) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| busy | Yes | ||
| range | Yes | ||
| sources | Yes | ||
| warnings | Yes | ||
| range_clamped | Yes |