View, create, and manage Outlook Calendar events and check availability
assistant skills install outlook-calendarAll operations use a single CLI script that returns JSON:
{ "ok": true, "data": ... }{ "ok": false, "error": "..." }| Script | Subcommand | Description |
|---|---|---|
scripts/outlook-cal.ts | list | List events within a date range (supports OData $filter) |
scripts/outlook-cal.ts | get | Get full details of a specific event |
scripts/outlook-cal.ts | create | Create a new event (requires user confirmation) |
scripts/outlook-cal.ts | availability | Check free/busy times across calendars |
scripts/outlook-cal.ts | rsvp | Respond to an event invitation (accepted, declined, tentative) |
# List events in a date range
bun scripts/outlook-cal.ts list --start-date-time "2024-01-15T00:00:00Z" --end-date-time "2024-01-22T00:00:00Z"
# List events with an OData filter
bun scripts/outlook-cal.ts list --filter "subject eq 'Team Meeting'"
# Get full details of a specific event
bun scripts/outlook-cal.ts get --event-id "AAMkAD..."
# Create a new event (gates on assistant ui confirm)
bun scripts/outlook-cal.ts create --subject "Team Meeting" --start "2024-01-15T09:00:00-05:00" --end "2024-01-15T10:00:00-05:00" --timezone "America/New_York"
# Check availability for a day
bun scripts/outlook-cal.ts availability --start "2024-01-15T00:00:00Z" --end "2024-01-15T23:59:59Z"
# RSVP to an event invitation
bun scripts/outlook-cal.ts rsvp --event-id "AAMkAD..." --response accepted
assistant oauth status outlook. This checks whether the user's Outlook/Microsoft account is connected and the token is valid. Outlook Calendar shares the same OAuth connection as Outlook email — if the user already connected Outlook email, calendar access is included.vellum-oauth-integrations skill. The skill will evaluate whether managed or your-own mode is appropriate and guide the user accordingly.When the user wants to schedule something:
bun scripts/outlook-cal.ts availability to find free slots.bun scripts/outlook-cal.ts create.2024-01-15T09:00:00-05:00).dateTime with an isAllDay flag — set the start and end as date-only values (e.g., 2024-01-15).dateTime already includes a UTC offset (e.g., 2024-01-15T09:00:00-05:00), do not send a separate timeZone parameter — the offset in the datetime string is authoritative and sending both can cause conflicts.Create and RSVP are medium-risk operations:
create subcommand gates on assistant ui confirm — it presents a confirmation dialog to the user and only proceeds if approved. Pass --skip-confirm when the user has already given explicit confirmation in the conversation.rsvp subcommand gates on assistant ui confirm — it presents a confirmation dialog showing the event, current status, and new response. Pass --skip-confirm when the user has already given explicit confirmation in the conversation.Confidence scores for medium-risk operations:
When a calendar script fails with a token or authorization error:
assistant oauth ping outlook. This often resolves expired tokens automatically.vellum-oauth-integrations skill. The user came to you to get something done, not to troubleshoot - make it seamless.