Agent Tool Workflows
How agents compose FullCalendar WebMCP calendar tools.
Runtime tool descriptions and input schemas are the canonical contract. This page summarizes workflows.
For security and capabilities, see Security. For inputs and returns, see WebMCP tools.
Tools
| Tool | Use for |
|---|---|
calendar_get_context |
Resolve relative dates and timezone context |
calendar_list_events |
Search and discover events |
calendar_get_event |
Fetch one event by id |
calendar_create_event |
Create an event |
calendar_update_event |
Modify an event |
calendar_delete_event |
Delete an event |
Tools return structured calendar state. The consuming agent converts results into user-facing language.
Relative dates
When the user says tomorrow, Wednesday, next week, and similar:
calendar_get_context→ readnow, timezones, visible range- Convert to ISO 8601 with offsets
- Call list/create/update as needed
Skip step 1 when every datetime is already explicit with an offset.
Stable ids
Mutations and calendar_get_event require a stable id from calendar_list_events, prior tool results, or the host — not from a title.
Workflows
“What’s on my calendar tomorrow?”
calendar_get_context → calendar_list_events
“Schedule lunch tomorrow at noon”
calendar_get_context → calendar_create_event
“Move my dentist appointment to 4”
calendar_get_context → calendar_list_events → calendar_update_event
“Delete event evt_123”
calendar_delete_event
When the user refers to an event by description, list first and disambiguate before update or delete.
Query boundaries
For calendar_list_events: start is inclusive, end is exclusive. For a single day, set end to the start of the following day. text is a case-insensitive title substring.
On events, end is the exclusive event end.
Tool results
| Tool | Returns |
|---|---|
calendar_create_event |
{ event } — persisted record from your repository |
calendar_update_event |
{ event } — post-update state |
calendar_delete_event |
{ deleted: true, event } — snapshot read before removal |
calendar_get_event |
{ event: CalendarEvent | null } |
calendar_list_events |
{ events: CalendarEvent[] } — empty array when none match |
Repository failures surface as tool errors. onEventsChanged runs only after successful mutations.
Hosts may disable tools via capabilities — see Security.