Skip to content

Commit 0f9b946

Browse files
committed
feat(outlook): add calendar picker and harden calendar tools
Validation pass over the new Microsoft Graph calendar operations against the v1.0 API docs, plus the calendar selection the tools were missing. - Add an `outlook.calendars` picker (GET /me/calendars) with basic selector + advanced manual ID, wired through the `calendarId` canonical param. List and create now target `/me/calendars/{id}/...`; get/update/delete/respond keep using `/me/events/{id}` since event IDs are mailbox-unique. - Fix all-day update rejecting when only one bound is supplied — both bounds are now normalized to midnight with an exclusive end day. - Fix "Send Response to Organizer" reading as OFF while Graph's default is to notify; it is now a dropdown defaulting to Yes, and the param is always sent. - Add timestamp wandConfig to the four calendar datetime fields and a list wandConfig to attendees. - Centralize Graph URL construction in calendar-utils; guard maxResults against non-numeric input and trim the calendarView time-window bounds. - Add three calendar templates and four calendar skills to OutlookBlockMeta. - Regenerate integration docs.
1 parent f6e6efb commit 0f9b946

18 files changed

Lines changed: 771 additions & 34 deletions

File tree

apps/docs/content/docs/en/integrations/outlook.mdx

Lines changed: 228 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Outlook
3-
description: Send, read, search, reply, organize, and manage Outlook email
3+
description: Send, read, search, reply, organize, and manage Outlook email and calendar
44
---
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
@@ -37,7 +37,7 @@ By connecting Sim with Microsoft Outlook, you enable intelligent agents to autom
3737

3838
## Usage Instructions
3939

40-
Integrate Outlook into the workflow. Can send, draft, read, search, reply, forward, move, copy, and delete email; manage mail folders and attachments; and set categories and flags on messages. Can be used in trigger mode to trigger a workflow when a new email is received.
40+
Integrate Outlook into the workflow. Can send, draft, read, search, reply, forward, move, copy, and delete email; manage mail folders and attachments; and set categories and flags on messages. Can also list, create, update, delete, and respond to calendar events. Can be used in trigger mode to trigger a workflow when a new email is received.
4141

4242

4343

@@ -473,6 +473,232 @@ Get a single attachment on an Outlook message, including its file contents
473473
|`lastModifiedDateTime` | string | When the attachment was last modified \(ISO 8601\) |
474474
| `attachments` | file[] | The downloaded file attachment \(empty for non-file attachment types\) |
475475

476+
### `outlook_calendar_list_events`
477+
478+
List Outlook calendar events within a start/end time window
479+
480+
#### Input
481+
482+
| Parameter | Type | Required | Description |
483+
| --------- | ---- | -------- | ----------- |
484+
| `calendarId` | string | No | ID of the calendar to read. Defaults to the mailbox default calendar. |
485+
| `startDateTime` | string | Yes | Start of the time window \(ISO 8601, e.g. 2025-06-03T00:00:00-08:00\). Interpreted as UTC if no offset is given. |
486+
| `endDateTime` | string | Yes | End of the time window \(ISO 8601, e.g. 2025-06-10T00:00:00-08:00\). Interpreted as UTC if no offset is given. |
487+
| `maxResults` | number | No | Maximum number of events to return per page \(default: 10, max: 100\) |
488+
| `orderBy` | string | No | Order of events \(default: start/dateTime\) |
489+
| `pageToken` | string | No | Full @odata.nextLink URL from a previous page to continue paging |
490+
491+
#### Output
492+
493+
| Parameter | Type | Description |
494+
| --------- | ---- | ----------- |
495+
| `message` | string | Success or status message |
496+
| `results` | array | Array of calendar event objects |
497+
|`id` | string | Unique event identifier |
498+
|`subject` | string | Event subject/title |
499+
|`bodyPreview` | string | Preview of the event body |
500+
|`start` | object | Event start |
501+
|`dateTime` | string | Local date and time \(ISO 8601, no offset\) |
502+
|`timeZone` | string | IANA or Windows time zone name |
503+
|`end` | object | Event end |
504+
|`dateTime` | string | Local date and time \(ISO 8601, no offset\) |
505+
|`timeZone` | string | IANA or Windows time zone name |
506+
|`isAllDay` | boolean | Whether the event lasts the entire day |
507+
|`location` | string | Event location display name |
508+
|`organizer` | object | Event organizer |
509+
|`name` | string | Display name of the person or entity |
510+
|`address` | string | Email address |
511+
|`attendees` | array | Event attendees |
512+
|`name` | string | Attendee display name |
513+
|`address` | string | Attendee email address |
514+
|`type` | string | Attendee type \(required, optional, or resource\) |
515+
|`response` | string | Attendee response status \(none, accepted, declined, tentativelyAccepted, ...\) |
516+
|`onlineMeeting` | object | Online-meeting join details, if any |
517+
|`joinUrl` | string | URL to join the online meeting |
518+
|`webLink` | string | URL that opens the event in Outlook on the web |
519+
| `nextLink` | string | URL for the next page of results, if any |
520+
521+
### `outlook_calendar_get_event`
522+
523+
Get a single Outlook calendar event by ID
524+
525+
#### Input
526+
527+
| Parameter | Type | Required | Description |
528+
| --------- | ---- | -------- | ----------- |
529+
| `eventId` | string | Yes | The ID of the calendar event to retrieve |
530+
531+
#### Output
532+
533+
| Parameter | Type | Description |
534+
| --------- | ---- | ----------- |
535+
| `message` | string | Success or status message |
536+
| `results` | object | The calendar event object |
537+
|`id` | string | Unique event identifier |
538+
|`subject` | string | Event subject/title |
539+
|`bodyPreview` | string | Preview of the event body |
540+
|`start` | object | Event start |
541+
|`dateTime` | string | Local date and time \(ISO 8601, no offset\) |
542+
|`timeZone` | string | IANA or Windows time zone name |
543+
|`end` | object | Event end |
544+
|`dateTime` | string | Local date and time \(ISO 8601, no offset\) |
545+
|`timeZone` | string | IANA or Windows time zone name |
546+
|`isAllDay` | boolean | Whether the event lasts the entire day |
547+
|`location` | string | Event location display name |
548+
|`organizer` | object | Event organizer |
549+
|`name` | string | Display name of the person or entity |
550+
|`address` | string | Email address |
551+
|`attendees` | array | Event attendees |
552+
|`name` | string | Attendee display name |
553+
|`address` | string | Attendee email address |
554+
|`type` | string | Attendee type \(required, optional, or resource\) |
555+
|`response` | string | Attendee response status \(none, accepted, declined, tentativelyAccepted, ...\) |
556+
|`onlineMeeting` | object | Online-meeting join details, if any |
557+
|`joinUrl` | string | URL to join the online meeting |
558+
|`webLink` | string | URL that opens the event in Outlook on the web |
559+
560+
### `outlook_calendar_create_event`
561+
562+
Create a new Outlook calendar event
563+
564+
#### Input
565+
566+
| Parameter | Type | Required | Description |
567+
| --------- | ---- | -------- | ----------- |
568+
| `calendarId` | string | No | ID of the calendar to create the event in. Defaults to the default calendar. |
569+
| `subject` | string | Yes | Event subject/title |
570+
| `startDateTime` | string | Yes | Start time \(ISO 8601, e.g. 2025-06-03T10:00:00-08:00\) or a date \(2025-06-03\) for an all-day event |
571+
| `endDateTime` | string | Yes | End time \(ISO 8601, e.g. 2025-06-03T11:00:00-08:00\) or a date \(2025-06-04\) for an all-day event |
572+
| `timeZone` | string | No | IANA or Windows time zone name \(e.g. America/Los_Angeles\). Used for datetimes without a UTC offset. Defaults to UTC. |
573+
| `body` | string | No | Event body content |
574+
| `contentType` | string | No | Content type for the event body \(text or html\) |
575+
| `location` | string | No | Event location display name |
576+
| `attendees` | string | No | Attendee email addresses \(comma-separated\) |
577+
| `isAllDay` | boolean | No | Whether the event lasts the entire day |
578+
| `isOnlineMeeting` | boolean | No | Attach an online meeting to the event. Uses the mailbox default provider \(Teams on work/school accounts\); personal accounts have no supported online-meeting provider. |
579+
580+
#### Output
581+
582+
| Parameter | Type | Description |
583+
| --------- | ---- | ----------- |
584+
| `message` | string | Success or status message |
585+
| `results` | object | The created calendar event object |
586+
|`id` | string | Unique event identifier |
587+
|`subject` | string | Event subject/title |
588+
|`bodyPreview` | string | Preview of the event body |
589+
|`start` | object | Event start |
590+
|`dateTime` | string | Local date and time \(ISO 8601, no offset\) |
591+
|`timeZone` | string | IANA or Windows time zone name |
592+
|`end` | object | Event end |
593+
|`dateTime` | string | Local date and time \(ISO 8601, no offset\) |
594+
|`timeZone` | string | IANA or Windows time zone name |
595+
|`isAllDay` | boolean | Whether the event lasts the entire day |
596+
|`location` | string | Event location display name |
597+
|`organizer` | object | Event organizer |
598+
|`name` | string | Display name of the person or entity |
599+
|`address` | string | Email address |
600+
|`attendees` | array | Event attendees |
601+
|`name` | string | Attendee display name |
602+
|`address` | string | Attendee email address |
603+
|`type` | string | Attendee type \(required, optional, or resource\) |
604+
|`response` | string | Attendee response status \(none, accepted, declined, tentativelyAccepted, ...\) |
605+
|`onlineMeeting` | object | Online-meeting join details, if any |
606+
|`joinUrl` | string | URL to join the online meeting |
607+
|`webLink` | string | URL that opens the event in Outlook on the web |
608+
609+
### `outlook_calendar_update_event`
610+
611+
Update an existing Outlook calendar event
612+
613+
#### Input
614+
615+
| Parameter | Type | Required | Description |
616+
| --------- | ---- | -------- | ----------- |
617+
| `eventId` | string | Yes | The ID of the calendar event to update |
618+
| `subject` | string | No | New event subject/title |
619+
| `startDateTime` | string | No | New start time \(ISO 8601\) or a date \(2025-06-03\) for an all-day event |
620+
| `endDateTime` | string | No | New end time \(ISO 8601\) or a date \(2025-06-04\) for an all-day event |
621+
| `timeZone` | string | No | IANA or Windows time zone name applied to updated datetimes without a UTC offset. Defaults to UTC. |
622+
| `body` | string | No | New event body content |
623+
| `contentType` | string | No | Content type for the event body \(text or html\) |
624+
| `location` | string | No | New event location display name |
625+
| `attendees` | string | No | Replacement attendee email addresses \(comma-separated\) |
626+
| `isAllDay` | boolean | No | Whether the event lasts the entire day |
627+
| `isOnlineMeeting` | boolean | No | Attach an online meeting to the event. Uses the mailbox default provider \(Teams on work/school accounts\); personal accounts have no supported online-meeting provider. |
628+
629+
#### Output
630+
631+
| Parameter | Type | Description |
632+
| --------- | ---- | ----------- |
633+
| `message` | string | Success or status message |
634+
| `results` | object | The updated calendar event object |
635+
|`id` | string | Unique event identifier |
636+
|`subject` | string | Event subject/title |
637+
|`bodyPreview` | string | Preview of the event body |
638+
|`start` | object | Event start |
639+
|`dateTime` | string | Local date and time \(ISO 8601, no offset\) |
640+
|`timeZone` | string | IANA or Windows time zone name |
641+
|`end` | object | Event end |
642+
|`dateTime` | string | Local date and time \(ISO 8601, no offset\) |
643+
|`timeZone` | string | IANA or Windows time zone name |
644+
|`isAllDay` | boolean | Whether the event lasts the entire day |
645+
|`location` | string | Event location display name |
646+
|`organizer` | object | Event organizer |
647+
|`name` | string | Display name of the person or entity |
648+
|`address` | string | Email address |
649+
|`attendees` | array | Event attendees |
650+
|`name` | string | Attendee display name |
651+
|`address` | string | Attendee email address |
652+
|`type` | string | Attendee type \(required, optional, or resource\) |
653+
|`response` | string | Attendee response status \(none, accepted, declined, tentativelyAccepted, ...\) |
654+
|`onlineMeeting` | object | Online-meeting join details, if any |
655+
|`joinUrl` | string | URL to join the online meeting |
656+
|`webLink` | string | URL that opens the event in Outlook on the web |
657+
658+
### `outlook_calendar_delete_event`
659+
660+
Delete an Outlook calendar event by ID
661+
662+
#### Input
663+
664+
| Parameter | Type | Required | Description |
665+
| --------- | ---- | -------- | ----------- |
666+
| `eventId` | string | Yes | The ID of the calendar event to delete |
667+
668+
#### Output
669+
670+
| Parameter | Type | Description |
671+
| --------- | ---- | ----------- |
672+
| `message` | string | Success or status message |
673+
| `results` | object | Delete result details |
674+
|`eventId` | string | ID of the deleted event |
675+
|`status` | string | Deletion status |
676+
677+
### `outlook_calendar_respond`
678+
679+
Accept, tentatively accept, or decline an Outlook calendar event invitation
680+
681+
#### Input
682+
683+
| Parameter | Type | Required | Description |
684+
| --------- | ---- | -------- | ----------- |
685+
| `eventId` | string | Yes | The ID of the calendar event to respond to |
686+
| `responseType` | string | Yes | The response: accept, tentativelyAccept, or decline |
687+
| `comment` | string | No | Optional comment to include with the response |
688+
| `sendResponse` | boolean | No | Whether to send a response to the organizer \(default: true\) |
689+
690+
#### Output
691+
692+
| Parameter | Type | Description |
693+
| --------- | ---- | ----------- |
694+
| `message` | string | Success or status message |
695+
| `results` | object | Response result details |
696+
|`eventId` | string | ID of the event responded to |
697+
|`responseType` | string | The response that was sent |
698+
|`status` | string | Response status |
699+
|`httpStatus` | number | HTTP status code returned by the API |
700+
|`requestId` | string | Microsoft Graph request-id header for tracing |
701+
476702

477703

478704
## Triggers

0 commit comments

Comments
 (0)