Search events
search_eventsFinds events by text across the calendars shared with this access — case-insensitive substring match on title, location and description.
The search only sees what this access may see: it filters the same visibility-rendered data get_availability returns. Calendars limited to free/busy expose no text and therefore can never match — when such calendars are part of this access, a warning says so. "No match" is thus NOT proof that no such event exists.
A match in a calendar the user allowed managing carries event_id, calendar_id, is_organizer and is_recurring — everything update_event, delete_event and respond_to_event need. Act on those directly instead of calling get_availability again for the same appointment.
The range works like get_availability (single span of at most 92 days, lookback bounded to one year). Without from/to the search covers the last 7 days plus the next 85. Cancelled events are not searchable.
Matches include events that do not block time (blocks_time: false) — notably every all-day event from Apple/iCloud. They are ordinary appointments and belong in the answer; do not filter them out when the user asked what is in their calendar.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of the range, ISO 8601. Default: 85 days ahead. | |
| from | No | Start of the range, ISO 8601. Default: 7 days ago. | |
| query | Yes | Text to look for (case-insensitive substring) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | ||
| matches | Yes | ||
| sources | Yes | ||
| warnings | Yes | ||
| truncated | Yes | ||
| range_clamped | Yes | ||
| unsearchable_calendars | Yes |