calendar_update
Update existing calendar events by changing schedule, status, or details. Pass only the fields you want to change; cancel or re-arm events as needed.
Instructions
Change fields on an existing calendar event, or re-arm/cancel it. Pass only the fields you want to change — anything omitted is left as it was. kind is fixed at creation and can't be changed here. The same rules as calendar_add apply to whatever you set: exactly one of at/rrule if you're changing the schedule, and content+channel+publish_tool together if the event is a 'post'. channel stays free text read by publish_tool, never a routing enum, and publish_tool must still name a currently-connected tool. Pass status: "cancelled" to cancel the event without deleting it, or status: "scheduled" to re-arm a cancelled one.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | One-shot fire time, ISO-8601 (e.g. '2026-09-01T14:30:00+05:30'). Must be in the future. Exactly one of `at` or `rrule` is required — never both, never neither. | |
| id | Yes | The event id returned by calendar_add or calendar_list, identifying which event to act on. | |
| media | No | Optional media to publish alongside `content` — a list of local file paths and/or URLs. | |
| rrule | No | Recurrence rule, RFC 5545 (e.g. 'FREQ=WEEKLY;BYDAY=MO,WE,FR;BYHOUR=9'), for an event that fires repeatedly. Exactly one of `at` or `rrule` is required — never both, never neither. | |
| title | No | Short human-readable label for the event, shown in calendar listings. | |
| prompt | No | REQUIRED when kind='task'. The instruction the agent is re-invoked with when the event fires — write it as a complete, self-contained instruction, since the agent has no memory of this call at fire time. | |
| status | No | Set to 'cancelled' to stop the event from firing without deleting it, or 'scheduled' to re-arm a cancelled event. | |
| channel | No | REQUIRED when kind='post'. Free text naming where to publish (e.g. 'LinkedIn company page', 'Instagram @brand') — a hint the tool named in `publish_tool` reads to decide where to post. This is NOT a routing enum: word it however `publish_tool` expects. | |
| content | No | REQUIRED when kind='post'. The exact prepared text to publish. | |
| timezone | No | IANA timezone name (e.g. 'America/New_York', 'Asia/Kolkata') that `at` or `rrule` is interpreted in. | |
| publish_tool | No | REQUIRED when kind='post'. The exact name of a tool the caller can currently call to publish (e.g. 'linkedin_post'). Must be a real, currently-connected tool — never guessed or invented — since the event hard-fails at fire time if the named tool isn't connected. |