name: calendar-events description: "Create, view, reschedule, and cancel calendar events and appointments. Use when the user asks to schedule a meeting, check their calendar, book an appointment, reschedule, or set a reminder for an event." version: 1.0.0 author: zoe-team api_only: true priority: 5 tags: - calendar - events - scheduling triggers: - "schedule" - "create event" - "create an event" - "book appointment" - "add to calendar" - "add to my calendar" - "show my calendar" - "what's on my calendar" - "upcoming events" - "cancel event" - "reschedule" - "move my meeting" - "remind me about" - "when is my next" - "free slot" - "am I free" - "set up a meeting" allowed_endpoints: - "GET /api/calendar/events" - "POST /api/calendar/events" - "PUT /api/calendar/events/{id}" - "DELETE /api/calendar/events/{id}" - "GET /api/calendar/events/today" - "GET /api/calendar/events/week"
Calendar Events Skill
Workflow
- Parse intent — determine the action: create, view, update, or cancel
- Extract details — title, date/time (ISO 8601), duration (minutes), location (optional)
- Clarify ambiguity — if date or time is missing or ambiguous, ask the user before proceeding
- Call the API — use the matching endpoint (see below)
- Confirm result — respond with the event summary including exact date/time and any relevant details
API Endpoints
Create an event
POST /api/calendar/events
{
"title": "Dentist appointment",
"start": "2026-04-10T14:00:00Z",
"duration": 60,
"location": "123 Main St"
}
View today's events
GET /api/calendar/events/today
View this week's events
GET /api/calendar/events/week
Update an event
PUT /api/calendar/events/{id}
{
"start": "2026-04-10T15:00:00Z"
}
Cancel an event
DELETE /api/calendar/events/{id}
Example
User: "Schedule a dentist appointment for Thursday at 2pm"
Steps:
- Parse intent: create
- Extract: title=
Dentist appointment, start=2026-04-10T14:00:00Z, duration=60 POST /api/calendar/eventswith extracted details- Respond: "Done — Dentist appointment is set for Thursday, April 10 at 2:00 PM (1 hour)."
Error Handling
- Conflicting event: Check
GET /api/calendar/eventsfor overlaps and warn the user before creating - Past date: Reject and ask for a future date
- Missing time: Ask "What time works for you?" rather than guessing
Response Style
Always confirm the exact date and time. Use relative references when helpful ("in 2 hours", "tomorrow at 3pm").