calendar_event
An event in a calendar — list, read, create, fix or delete one.
op:
"list" (default): list events from a calendar over a time range (ordered by start). Returns {events: [{id, summary, start, end, ...}], count}.
"get": get a single calendar event by id (
event_id, detailed — adds description, attendees, recurrence, reminders)."create": create a calendar event (
summary+start, optionalattendees= guest emails). ⚠️ Writes into a real calendar. Withsend_updates="none"(default) the guests are added but nobody is emailed — pass "all" to send the invitations.meet=Trueattaches a Google Meet link (returned ashangoutLink)."update": fix an existing event (
event_id+ what changes). PATCHES — only the fields you pass are touched, everything else (attendees, recurrence, reminders, meeting link) is left alone. Use this instead of creating a second event.attendees, when passed, REPLACES the whole guest list (Google's rule for lists): pass everyone — read the current guests with op="get" — and[]removes them all."rm": delete an event (
event_id). Irreversible. Returns what was deleted (summary + start), read before the deletion — so that deleting the wrong id does not look exactly like deleting the right one.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "calendar_event"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | list (default) | get | create | update | rm. | list |
| end | No | op="create" — end time. If omitted, defaults to start + 1h (timed) or same day (all-day). ⚠️ For an all-day event Google reads the end DATE as exclusive: pass the next day to cover one full day. | |
| _org | No | Org (id) de CET APPEL. `oto_list_orgs()`. | |
| meet | No | op="create" — True attaches a Google Meet link, returned as `hangoutLink`; `meet_status="pending"` means Google is still creating it (read the event again with op="get"). | |
| query | No | op="list" — free-text search over event fields. | |
| start | No | op="create" — start time: ISO 8601 datetime (timed) or 'YYYY-MM-DD' (all-day). | |
| _group | No | Équipe (id) de CET APPEL, sous son org parente. | |
| _run_id | No | OBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas. | |
| account | No | email of the Google account to use — same choice as `_account`. | |
| all_day | No | op="create" — treat start/end as dates (YYYY-MM-DD). ⚠️ A 10-character `start` ('YYYY-MM-DD') is treated as all-day even when all_day is False (CalendarClient.create_event). | |
| summary | No | op="create" — event title. | |
| _account | No | Compte à OPÉRER quand plusieurs existent. `oto_identity(op='list')`. | |
| _project | No | Projet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`. | |
| event_id | No | op="get" — the event id (from op="list"). | |
| location | No | op="create" — event location. | |
| time_max | No | op="list" — upper bound, ISO 8601. Omit either bound to leave it open. | |
| time_min | No | op="list" — lower bound, ISO 8601 (e.g. '2026-06-18T00:00:00Z'). For "today" pass today's 00:00; for "next 7 days" pass now. | |
| _instance | No | Instance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`. | |
| attendees | No | op="create"/"update" — guest email addresses. On update it REPLACES the guest list (`[]` removes every guest). | |
| calendar_id | No | calendar id (default 'primary'). Ids come from calendar_calendars. | primary |
| description | No | op="create" — event description. | |
| max_results | No | op="list" — max events to return (default 20). | |
| send_updates | No | op="create"/"update"/"rm" — whether attendees get an email. Default **"none"**: fixing a typo must not mail twelve people, and cancelling silently is the lesser surprise. Pass "all" deliberately. | none |