outlook-calendar-automation

通过Rube MCP(Composio)自动化Outlook日历任务:创建活动、管理参与者、查找会议时间以及处理邀请。始终优先搜索工具以获取当前架构。

查看详情
name:outlook-calendar-automationdescription:"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."requires:mcp:[rube]

Outlook Calendar Automation via Rube MCP

Automate Outlook Calendar operations through Composio's Outlook toolkit via Rube MCP.

Prerequisites

  • Rube MCP must be connected (RUBE_SEARCH_TOOLS available)

  • Active Outlook connection via RUBE_MANAGE_CONNECTIONS with toolkit outlook

  • Always call RUBE_SEARCH_TOOLS first to get current tool schemas
  • Setup

    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.


  • Verify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds

  • Call RUBE_MANAGE_CONNECTIONS with toolkit outlook

  • If connection is not ACTIVE, follow the returned auth link to complete Microsoft OAuth

  • Confirm connection status shows ACTIVE before running any workflows
  • Core Workflows

    1. Create Calendar Events

    When 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 title

  • start_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 objects

  • body: Event description (plain text or HTML)

  • is_html: Set true if body contains HTML

  • location: Physical location string

  • is_online_meeting: Set true for Teams meeting link

  • online_meeting_provider: 'teamsForBusiness' for Teams integration

  • show_as: 'free', 'tentative', 'busy', 'oof'
  • Pitfalls:

  • start_datetime must be chronologically before end_datetime

  • time_zone is required and must be a valid IANA or Windows timezone name

  • Adding attendees can trigger invitation emails immediately

  • To generate a Teams meeting link, set BOTH is_online_meeting=true AND online_meeting_provider='teamsForBusiness'

  • user_id defaults to 'me'; use email or UUID for other users' calendars
  • 2. List and Search Events

    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 return

  • orderby: Sort criteria (e.g., ['start/dateTime desc'])

  • top: Results per page (1-999)

  • timezone: Display timezone for results

  • start_datetime/end_datetime: For CALENDAR_VIEW time window (UTC with Z suffix)
  • Pitfalls:

  • OData filter datetime values require single quotes and Z suffix

  • Use 'start/dateTime' for event start filtering, NOT 'receivedDateTime' (that is for emails)

  • 'createdDateTime' supports orderby/select but NOT filtering

  • Pagination: follow @odata.nextLink until all pages are collected

  • CALENDAR_VIEW is better for "what's on my calendar today" queries (includes spanning events)

  • LIST_EVENTS is better for keyword/category filtering

  • Response events have start/end nested as start.dateTime and end.dateTime
  • 3. Update Events

    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 times

  • attendees: Updated attendee list (replaces existing if provided)

  • body: Updated description with contentType and content

  • location: Updated location
  • Pitfalls:

  • UPDATE merges provided fields with existing event; unspecified fields are preserved

  • Providing attendees replaces the ENTIRE attendee list; include all desired attendees

  • Providing categories replaces the ENTIRE category list

  • Updating times may trigger re-sends to attendees

  • event_id is required; obtain from LIST_EVENTS first
  • 4. Delete Events and Decline Invitations

    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 decline

  • send_notifications: Send cancellation notices to attendees (default true)

  • comment: Reason for declining (for DECLINE_EVENT)

  • proposedNewTime: Suggest alternative time when declining
  • Pitfalls:

  • Deletion with send_notifications=true sends cancellation emails

  • Declining supports proposing a new time with start/end in ISO 8601 format

  • Deleting a recurring event master deletes all occurrences

  • sendResponse in DECLINE_EVENT controls whether the organizer is notified
  • 5. Find Available Meeting Times

    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 type

  • meetingDuration: ISO 8601 duration (e.g., 'PT1H' for 1 hour, 'PT30M' for 30 min)

  • timeConstraint: Time slots to search within

  • minimumAttendeePercentage: Minimum confidence threshold (0-100)

  • Schedules: Email array for GET_SCHEDULE

  • StartTime/EndTime: Time window for schedule lookup (max 62 days)
  • Pitfalls:

  • FIND_MEETING_TIMES searches within work hours by default; use activityDomain='unrestricted' for 24/7

  • Time constraint time slots require dateTime and timeZone for both start and end

  • GET_SCHEDULE period cannot exceed 62 days

  • Meeting suggestions respect attendee availability but may return suboptimal times for complex groups
  • Common Patterns

    Event ID Resolution

    1. Call OUTLOOK_LIST_EVENTS with time-bound filter
  • Find target event by subject or other criteria

  • Extract event id (e.g., 'AAMkAGI2TAAA=')

  • Use in UPDATE, DELETE, or GET_EVENT calls
  • OData Filter Syntax for Calendar

    Time 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')"

    Timezone Handling

  • Get user timezone: OUTLOOK_GET_MAILBOX_SETTINGS with select=['timeZone']

  • Use consistent timezone in filter datetime values

  • Calendar View requires UTC timestamps with Z suffix

  • LIST_EVENTS filter accepts timezone in datetime values
  • Online Meeting Creation

    1. Set is_online_meeting: true
  • Set online_meeting_provider: 'teamsForBusiness'

  • Create event with OUTLOOK_CALENDAR_CREATE_EVENT

  • Teams join link available in response onlineMeeting field

  • Or retrieve via OUTLOOK_GET_EVENT for the full join URL
  • Known Pitfalls

    DateTime Formats:

  • ISO 8601 format required: '2025-01-03T10:00:00'

  • Calendar View requires UTC with Z: '2025-01-03T10:00:00Z'

  • Filter values need single quotes: "'2025-01-03T00:00:00Z'"

  • Timezone mismatches shift event boundaries; always resolve user timezone first
  • OData Filter Errors:

  • 400 Bad Request usually indicates filter syntax issues

  • Not all event properties support filtering (createdDateTime does not)

  • Retry with adjusted syntax/bounds on 400 errors

  • Valid filter fields: start/dateTime, end/dateTime, subject, categories, isAllDay
  • Attendee Management:

  • Adding attendees triggers invitation emails

  • Updating attendees replaces the full list; include all desired attendees

  • Attendee types: 'required', 'optional', 'resource'

  • Calendar delegation affects which calendars are accessible
  • Response Structure:

  • Events nested at response.data.value

  • Event times at event.start.dateTime and event.end.dateTime

  • Calendar View may nest at data.results[i].response.data.value

  • Parse defensively with fallbacks for different nesting levels
  • Quick Reference

    TaskTool SlugKey Params
    Create eventOUTLOOK_CALENDAR_CREATE_EVENTsubject, start_datetime, end_datetime, time_zone
    List eventsOUTLOOK_LIST_EVENTSfilter, select, top, timezone
    Get event detailsOUTLOOK_GET_EVENTevent_id
    Calendar viewOUTLOOK_GET_CALENDAR_VIEWstart_datetime, end_datetime
    Update eventOUTLOOK_UPDATE_CALENDAR_EVENTevent_id, subject, start_datetime
    Delete eventOUTLOOK_DELETE_EVENTevent_id, send_notifications
    Decline eventOUTLOOK_DECLINE_EVENTevent_id, comment
    Find meeting timesOUTLOOK_FIND_MEETING_TIMESattendees, meetingDuration
    Get scheduleOUTLOOK_GET_SCHEDULESchedules, StartTime, EndTime
    List calendarsOUTLOOK_LIST_CALENDARSuser_id
    Mailbox settingsOUTLOOK_GET_MAILBOX_SETTINGSselect