Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/sickn33-outlook-calendar-automation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 130% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 121% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 183% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 219% | 0% |
Automate Outlook Calendar operations through Composio's Outlook toolkit via Rube MCP.
RUBE_MANAGE_CONNECTIONS with toolkit outlookRUBE_SEARCH_TOOLS first to get current tool schemasGet 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.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit outlookWhen to use: User wants to schedule a new event on their Outlook calendar
Tool sequence:
OUTLOOK_LIST_CALENDARS - List available calendars Optional]OUTLOOK_CALENDAR_CREATE_EVENT - Create the event Required]Key parameters:
subject: Event titlestart_datetime: ISO 8601 start time (e.g., '2025-01-03T10:00:00')end_datetime: ISO 8601 end time (must be after start)time_zone: IANA or Windows timezone (e.g., 'America/New_York', 'Pacific Standard Time')attendees_info: Array of email strings or attendee objectsbody: Event description (plain text or HTML)is_html: Set true if body contains HTMLlocation: Physical location stringis_online_meeting: Set true for Teams meeting linkonline_meeting_provider: 'teamsForBusiness' for Teams integrationshow_as: 'free', 'tentative', 'busy', 'oof'Pitfalls:
When to use: User wants to find events on their calendar
Tool sequence:
OUTLOOK_GET_MAILBOX_SETTINGS - Get user timezone for accurate queries Prerequisite]OUTLOOK_LIST_EVENTS - Search events with filters Required]OUTLOOK_GET_EVENT - Get full details for a specific event Optional]OUTLOOK_GET_CALENDAR_VIEW - Get events active during a time window Alternative]Key parameters:
filter: OData filter string (e.g., "start/dateTime ge '2024-07-01T00:00:00Z'")select: Array of properties to returnorderby: Sort criteria (e.g., 'start/dateTime desc'])top: Results per page (1-999)timezone: Display timezone for resultsstart_datetime/end_datetime: For CALENDAR_VIEW time window (UTC with Z suffix)Pitfalls:
When to use: User wants to modify an existing calendar event
Tool sequence:
OUTLOOK_LIST_EVENTS - Find the event to update Prerequisite]OUTLOOK_UPDATE_CALENDAR_EVENT - Update the event Required]Key parameters:
event_id: Unique event identifier (from LIST_EVENTS)subject: New event title (optional)start_datetime/end_datetime: New times (optional)time_zone: Timezone for new timesattendees: Updated attendee list (replaces existing if provided)body: Updated description with contentType and contentlocation: Updated locationPitfalls:
When to use: User wants to remove an event or decline a meeting invitation
Tool sequence:
OUTLOOK_DELETE_EVENT - Delete an event Optional]OUTLOOK_DECLINE_EVENT - Decline a meeting invitation Optional]Key parameters:
event_id: Event to delete or declinesend_notifications: Send cancellation notices to attendees (default true)comment: Reason for declining (for DECLINE_EVENT)proposedNewTime: Suggest alternative time when decliningPitfalls:
When to use: User wants to find optimal meeting slots across multiple people
Tool sequence:
OUTLOOK_FIND_MEETING_TIMES - Get meeting time suggestions Required]OUTLOOK_GET_SCHEDULE - Check free/busy for specific people Alternative]Key parameters:
attendees: Array of attendee objects with email and typemeetingDuration: ISO 8601 duration (e.g., 'PT1H' for 1 hour, 'PT30M' for 30 min)timeConstraint: Time slots to search withinminimumAttendeePercentage: Minimum confidence threshold (0-100)Schedules: Email array for GET_SCHEDULEStartTime/EndTime: Time window for schedule lookup (max 62 days)Pitfalls:
1. Call OUTLOOK_LIST_EVENTS with time-bound filter
2. Find target event by subject or other criteria
3. Extract event id (e.g., 'AAMkAGI2TAAA=')
4. Use in UPDATE, DELETE, or GET_EVENT callsTime range filter:
filter: "start/dateTime ge '2024-07-01T00:00:00Z' and start/dateTime le '2024-07-31T23:59:59Z'"Subject contains:
filter: "contains(subject, 'Project Review')"Combined:
filter: "contains(subject, 'Review') and categories/any(c:c eq 'Work')"OUTLOOK_GET_MAILBOX_SETTINGS with select='timeZone']1. Set is_online_meeting: true
2. Set online_meeting_provider: 'teamsForBusiness'
3. Create event with OUTLOOK_CALENDAR_CREATE_EVENT
4. Teams join link available in response onlineMeeting field
5. Or retrieve via OUTLOOK_GET_EVENT for the full join URLDateTime Formats:
OData Filter Errors:
Attendee Management:
Response Structure:
| Task | Tool Slug | Key Params | |------|-----------|------------| | Create event | OUTLOOK_CALENDAR_CREATE_EVENT | subject, start_datetime, end_datetime, time_zone | | List events | OUTLOOK_LIST_EVENTS | filter, select, top, timezone | | Get event details | OUTLOOK_GET_EVENT | event_id | | Calendar view | OUTLOOK_GET_CALENDAR_VIEW | start_datetime, end_datetime | | Update event | OUTLOOK_UPDATE_CALENDAR_EVENT | event_id, subject, start_datetime | | Delete event | OUTLOOK_DELETE_EVENT | event_id, send_notifications | | Decline event | OUTLOOK_DECLINE_EVENT | event_id, comment | | Find meeting times | OUTLOOK_FIND_MEETING_TIMES | attendees, meetingDuration | | Get schedule | OUTLOOK_GET_SCHEDULE | Schedules, StartTime, EndTime | | List calendars | OUTLOOK_LIST_CALENDARS | user_id | | Mailbox settings | OUTLOOK_GET_MAILBOX_SETTINGS | select |
This skill is applicable to execute the workflow or actions described in the overview.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,619 | 6,126 | -20% | 1 | 1 | 0% | 1,219 | 2,920 | +140% | 0 | 0 | — |
case-02 | fail→fail | 6,521 | 4,194 | -36% | 1 | 1 | 0% | 1,100 | 2,837 | +158% | 0 | 0 | — |
case-03 | fail→fail | 2,472 | 5,067 | +105% | 1 | 1 | 0% | 458 | 2,874 | +528% | 0 | 0 | — |
case-04 | fail→fail | 4,149 | 4,807 | +16% | 1 | 1 | 0% | 733 | 2,956 | +303% | 0 | 0 | — |
case-05 | fail→fail | 5,302 | 4,226 | -20% | 1 | 1 | 0% | 881 | 2,851 | +224% | 0 | 0 | — |
case-06 | fail→fail | 5,851 | 3,770 | -36% | 1 | 1 | 0% | 1,088 | 2,749 | +153% | 0 | 0 | — |
case-07 | pass→pass | 5,335 | 1,970 | -63% | 1 | 1 | 0% | 929 | 2,961 | +219% | 0 | 0 | — |
case-08 | fail→pass | 8,803 | 2,570 | -71% | 1 | 1 | 0% | 1,678 | 3,048 | +82% | 0 | 0 | — |
case-09 | pass→pass | 8,352 | 3,529 | -58% | 1 | 1 | 0% | 1,620 | 3,356 | +107% | 0 | 0 | — |
case-10 | pass→pass | 6,562 | 4,153 | -37% | 1 | 1 | 0% | 1,355 | 3,423 | +153% | 0 | 0 | — |
case-11 | pass→pass | 9,742 | 3,836 | -61% | 1 | 1 | 0% | 1,727 | 3,235 | +87% | 0 | 0 | — |
case-12 | pass→pass | 5,413 | 1,948 | -64% | 1 | 1 | 0% | 1,001 | 2,911 | +191% | 0 | 0 | — |
case-13 | pass→pass | 2,960 | 2,650 | -10% | 1 | 1 | 0% | 577 | 3,013 | +422% | 0 | 0 | — |
case-14 | pass→pass | 5,175 | 2,480 | -52% | 1 | 1 | 0% | 957 | 3,057 | +219% | 0 | 0 | — |
case-15 | pass→pass | 3,102 | 3,232 | +4% | 1 | 1 | 0% | 573 | 3,186 | +456% | 0 | 0 | — |
case-16 | pass→pass | 6,617 | 6,313 | -5% | 1 | 1 | 0% | 1,313 | 3,230 | +146% | 0 | 0 | — |
case-17 | fail→pass | 7,877 | 2,429 | -69% | 1 | 1 | 0% | 1,320 | 3,037 | +130% | 0 | 0 | — |
case-18 | fail→pass | 8,633 | 4,808 | -44% | 1 | 1 | 0% | 1,609 | 3,552 | +121% | 0 | 0 | — |
case-19 | fail→pass | 5,867 | 2,044 | -65% | 1 | 1 | 0% | 1,033 | 2,920 | +183% | 0 | 0 | — |
case-20 | pass→pass | 6,637 | 2,347 | -65% | 1 | 1 | 0% | 1,290 | 3,144 | +144% | 0 | 0 | — |
case-21 | pass→pass | 5,453 | 3,175 | -42% | 1 | 1 | 0% | 1,035 | 3,058 | +195% | 0 | 0 | — |
case-22 | pass→pass | 6,013 | 2,059 | -66% | 1 | 1 | 0% | 1,125 | 2,938 | +161% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +18 percentage points is the difference between those two pass rates over the 16 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.