Automate Outlook Calendar tasks via Rube MCP (Composio): create events, manage attendees, find meeting times, and handle invitations. Always search tools first for current schemas.
Add this skill
npx mdskills install sickn33/outlook-calendar-automationComprehensive Outlook Calendar automation with excellent workflow detail, pitfall warnings, and structured guidance
1---2name: outlook-calendar-automation3description: "Automate Outlook Calendar tasks via Rube MCP (Composio): create events, manage attendees, find meeting times, and handle invitations. Always search tools first for current schemas."4requires:5 mcp: [rube]6---78# Outlook Calendar Automation via Rube MCP910Automate Outlook Calendar operations through Composio's Outlook toolkit via Rube MCP.1112## Prerequisites1314- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)15- Active Outlook connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `outlook`16- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas1718## Setup1920**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.2122231. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds242. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `outlook`253. If connection is not ACTIVE, follow the returned auth link to complete Microsoft OAuth264. Confirm connection status shows ACTIVE before running any workflows2728## Core Workflows2930### 1. Create Calendar Events3132**When to use**: User wants to schedule a new event on their Outlook calendar3334**Tool sequence**:351. `OUTLOOK_LIST_CALENDARS` - List available calendars [Optional]362. `OUTLOOK_CALENDAR_CREATE_EVENT` - Create the event [Required]3738**Key parameters**:39- `subject`: Event title40- `start_datetime`: ISO 8601 start time (e.g., '2025-01-03T10:00:00')41- `end_datetime`: ISO 8601 end time (must be after start)42- `time_zone`: IANA or Windows timezone (e.g., 'America/New_York', 'Pacific Standard Time')43- `attendees_info`: Array of email strings or attendee objects44- `body`: Event description (plain text or HTML)45- `is_html`: Set true if body contains HTML46- `location`: Physical location string47- `is_online_meeting`: Set true for Teams meeting link48- `online_meeting_provider`: 'teamsForBusiness' for Teams integration49- `show_as`: 'free', 'tentative', 'busy', 'oof'5051**Pitfalls**:52- start_datetime must be chronologically before end_datetime53- time_zone is required and must be a valid IANA or Windows timezone name54- Adding attendees can trigger invitation emails immediately55- To generate a Teams meeting link, set BOTH is_online_meeting=true AND online_meeting_provider='teamsForBusiness'56- user_id defaults to 'me'; use email or UUID for other users' calendars5758### 2. List and Search Events5960**When to use**: User wants to find events on their calendar6162**Tool sequence**:631. `OUTLOOK_GET_MAILBOX_SETTINGS` - Get user timezone for accurate queries [Prerequisite]642. `OUTLOOK_LIST_EVENTS` - Search events with filters [Required]653. `OUTLOOK_GET_EVENT` - Get full details for a specific event [Optional]664. `OUTLOOK_GET_CALENDAR_VIEW` - Get events active during a time window [Alternative]6768**Key parameters**:69- `filter`: OData filter string (e.g., "start/dateTime ge '2024-07-01T00:00:00Z'")70- `select`: Array of properties to return71- `orderby`: Sort criteria (e.g., ['start/dateTime desc'])72- `top`: Results per page (1-999)73- `timezone`: Display timezone for results74- `start_datetime`/`end_datetime`: For CALENDAR_VIEW time window (UTC with Z suffix)7576**Pitfalls**:77- OData filter datetime values require single quotes and Z suffix78- Use 'start/dateTime' for event start filtering, NOT 'receivedDateTime' (that is for emails)79- 'createdDateTime' supports orderby/select but NOT filtering80- Pagination: follow @odata.nextLink until all pages are collected81- CALENDAR_VIEW is better for "what's on my calendar today" queries (includes spanning events)82- LIST_EVENTS is better for keyword/category filtering83- Response events have start/end nested as start.dateTime and end.dateTime8485### 3. Update Events8687**When to use**: User wants to modify an existing calendar event8889**Tool sequence**:901. `OUTLOOK_LIST_EVENTS` - Find the event to update [Prerequisite]912. `OUTLOOK_UPDATE_CALENDAR_EVENT` - Update the event [Required]9293**Key parameters**:94- `event_id`: Unique event identifier (from LIST_EVENTS)95- `subject`: New event title (optional)96- `start_datetime`/`end_datetime`: New times (optional)97- `time_zone`: Timezone for new times98- `attendees`: Updated attendee list (replaces existing if provided)99- `body`: Updated description with contentType and content100- `location`: Updated location101102**Pitfalls**:103- UPDATE merges provided fields with existing event; unspecified fields are preserved104- Providing attendees replaces the ENTIRE attendee list; include all desired attendees105- Providing categories replaces the ENTIRE category list106- Updating times may trigger re-sends to attendees107- event_id is required; obtain from LIST_EVENTS first108109### 4. Delete Events and Decline Invitations110111**When to use**: User wants to remove an event or decline a meeting invitation112113**Tool sequence**:1141. `OUTLOOK_DELETE_EVENT` - Delete an event [Optional]1152. `OUTLOOK_DECLINE_EVENT` - Decline a meeting invitation [Optional]116117**Key parameters**:118- `event_id`: Event to delete or decline119- `send_notifications`: Send cancellation notices to attendees (default true)120- `comment`: Reason for declining (for DECLINE_EVENT)121- `proposedNewTime`: Suggest alternative time when declining122123**Pitfalls**:124- Deletion with send_notifications=true sends cancellation emails125- Declining supports proposing a new time with start/end in ISO 8601 format126- Deleting a recurring event master deletes all occurrences127- sendResponse in DECLINE_EVENT controls whether the organizer is notified128129### 5. Find Available Meeting Times130131**When to use**: User wants to find optimal meeting slots across multiple people132133**Tool sequence**:1341. `OUTLOOK_FIND_MEETING_TIMES` - Get meeting time suggestions [Required]1352. `OUTLOOK_GET_SCHEDULE` - Check free/busy for specific people [Alternative]136137**Key parameters**:138- `attendees`: Array of attendee objects with email and type139- `meetingDuration`: ISO 8601 duration (e.g., 'PT1H' for 1 hour, 'PT30M' for 30 min)140- `timeConstraint`: Time slots to search within141- `minimumAttendeePercentage`: Minimum confidence threshold (0-100)142- `Schedules`: Email array for GET_SCHEDULE143- `StartTime`/`EndTime`: Time window for schedule lookup (max 62 days)144145**Pitfalls**:146- FIND_MEETING_TIMES searches within work hours by default; use activityDomain='unrestricted' for 24/7147- Time constraint time slots require dateTime and timeZone for both start and end148- GET_SCHEDULE period cannot exceed 62 days149- Meeting suggestions respect attendee availability but may return suboptimal times for complex groups150151## Common Patterns152153### Event ID Resolution154155```1561. Call OUTLOOK_LIST_EVENTS with time-bound filter1572. Find target event by subject or other criteria1583. Extract event id (e.g., 'AAMkAGI2TAAA=')1594. Use in UPDATE, DELETE, or GET_EVENT calls160```161162### OData Filter Syntax for Calendar163164**Time range filter**:165```166filter: "start/dateTime ge '2024-07-01T00:00:00Z' and start/dateTime le '2024-07-31T23:59:59Z'"167```168169**Subject contains**:170```171filter: "contains(subject, 'Project Review')"172```173174**Combined**:175```176filter: "contains(subject, 'Review') and categories/any(c:c eq 'Work')"177```178179### Timezone Handling180181- Get user timezone: `OUTLOOK_GET_MAILBOX_SETTINGS` with select=['timeZone']182- Use consistent timezone in filter datetime values183- Calendar View requires UTC timestamps with Z suffix184- LIST_EVENTS filter accepts timezone in datetime values185186### Online Meeting Creation187188```1891. Set is_online_meeting: true1902. Set online_meeting_provider: 'teamsForBusiness'1913. Create event with OUTLOOK_CALENDAR_CREATE_EVENT1924. Teams join link available in response onlineMeeting field1935. Or retrieve via OUTLOOK_GET_EVENT for the full join URL194```195196## Known Pitfalls197198**DateTime Formats**:199- ISO 8601 format required: '2025-01-03T10:00:00'200- Calendar View requires UTC with Z: '2025-01-03T10:00:00Z'201- Filter values need single quotes: "'2025-01-03T00:00:00Z'"202- Timezone mismatches shift event boundaries; always resolve user timezone first203204**OData Filter Errors**:205- 400 Bad Request usually indicates filter syntax issues206- Not all event properties support filtering (createdDateTime does not)207- Retry with adjusted syntax/bounds on 400 errors208- Valid filter fields: start/dateTime, end/dateTime, subject, categories, isAllDay209210**Attendee Management**:211- Adding attendees triggers invitation emails212- Updating attendees replaces the full list; include all desired attendees213- Attendee types: 'required', 'optional', 'resource'214- Calendar delegation affects which calendars are accessible215216**Response Structure**:217- Events nested at response.data.value218- Event times at event.start.dateTime and event.end.dateTime219- Calendar View may nest at data.results[i].response.data.value220- Parse defensively with fallbacks for different nesting levels221222## Quick Reference223224| Task | Tool Slug | Key Params |225|------|-----------|------------|226| Create event | OUTLOOK_CALENDAR_CREATE_EVENT | subject, start_datetime, end_datetime, time_zone |227| List events | OUTLOOK_LIST_EVENTS | filter, select, top, timezone |228| Get event details | OUTLOOK_GET_EVENT | event_id |229| Calendar view | OUTLOOK_GET_CALENDAR_VIEW | start_datetime, end_datetime |230| Update event | OUTLOOK_UPDATE_CALENDAR_EVENT | event_id, subject, start_datetime |231| Delete event | OUTLOOK_DELETE_EVENT | event_id, send_notifications |232| Decline event | OUTLOOK_DECLINE_EVENT | event_id, comment |233| Find meeting times | OUTLOOK_FIND_MEETING_TIMES | attendees, meetingDuration |234| Get schedule | OUTLOOK_GET_SCHEDULE | Schedules, StartTime, EndTime |235| List calendars | OUTLOOK_LIST_CALENDARS | user_id |236| Mailbox settings | OUTLOOK_GET_MAILBOX_SETTINGS | select |237
Full transparency — inspect the skill content before installing.