outlook-calendar-automation

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Outlook Calendar Automation via Rube MCP

通过Rube MCP实现Outlook日历自动化

Automate Outlook Calendar operations through Composio's Outlook toolkit via Rube MCP.
通过Composio的Outlook工具包,借助Rube MCP自动化Outlook日历操作。

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
  • 必须已连接Rube MCP(需确保RUBE_SEARCH_TOOLS可用)
  • 通过
    RUBE_MANAGE_CONNECTIONS
    完成Outlook连接,且工具包为
    outlook
  • 请始终先调用
    RUBE_SEARCH_TOOLS
    获取最新的工具模式

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.
  1. Verify Rube MCP is available by confirming
    RUBE_SEARCH_TOOLS
    responds
  2. Call
    RUBE_MANAGE_CONNECTIONS
    with toolkit
    outlook
  3. If connection is not ACTIVE, follow the returned auth link to complete Microsoft OAuth
  4. Confirm connection status shows ACTIVE before running any workflows
获取Rube MCP:在客户端配置中添加
https://rube.app/mcp
作为MCP服务器。无需API密钥,只需添加端点即可使用。
  1. 确认
    RUBE_SEARCH_TOOLS
    能正常响应,以此验证Rube MCP是否可用
  2. 调用
    RUBE_MANAGE_CONNECTIONS
    并指定工具包为
    outlook
  3. 如果连接状态未显示为ACTIVE,请按照返回的授权链接完成Microsoft OAuth认证
  4. 在运行任何工作流之前,确认连接状态已显示为ACTIVE

Core Workflows

核心工作流

1. Create Calendar Events

1. 创建日历活动

When to use: User wants to schedule a new event on their Outlook calendar
Tool sequence:
  1. OUTLOOK_LIST_CALENDARS
    - List available calendars [Optional]
  2. 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
适用场景:用户需要在Outlook日历中安排新活动
工具序列
  1. OUTLOOK_LIST_CALENDARS
    - 列出可用日历(可选)
  2. OUTLOOK_CALENDAR_CREATE_EVENT
    - 创建活动(必填)
关键参数
  • subject
    :活动标题
  • start_datetime
    :ISO 8601格式的开始时间(例如:'2025-01-03T10:00:00')
  • end_datetime
    :ISO 8601格式的结束时间(必须晚于开始时间)
  • time_zone
    :IANA或Windows时区(例如:'America/New_York'、'Pacific Standard Time')
  • attendees_info
    :邮箱字符串或参会者对象数组
  • body
    :活动描述(纯文本或HTML格式)
  • is_html
    :如果body包含HTML内容,请设为true
  • location
    :物理地点字符串
  • is_online_meeting
    :设为true可生成Teams会议链接
  • online_meeting_provider
    :集成Teams时设为'teamsForBusiness'
  • show_as
    :'free'(空闲)、'tentative'(暂定)、'busy'(忙碌)、'oof'(外出)
注意事项
  • start_datetime必须早于end_datetime
  • time_zone为必填项,且必须是有效的IANA或Windows时区名称
  • 添加参会者会立即触发邀请邮件
  • 要生成Teams会议链接,需同时设置is_online_meeting=true和online_meeting_provider='teamsForBusiness'
  • user_id默认值为'me';如需操作其他用户的日历,请使用邮箱或UUID

2. List and Search Events

2. 列出和搜索活动

When to use: User wants to find events on their calendar
Tool sequence:
  1. OUTLOOK_GET_MAILBOX_SETTINGS
    - Get user timezone for accurate queries [Prerequisite]
  2. OUTLOOK_LIST_EVENTS
    - Search events with filters [Required]
  3. OUTLOOK_GET_EVENT
    - Get full details for a specific event [Optional]
  4. 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
适用场景:用户需要查找日历中的活动
工具序列
  1. OUTLOOK_GET_MAILBOX_SETTINGS
    - 获取用户时区以确保查询准确(前提步骤)
  2. OUTLOOK_LIST_EVENTS
    - 使用过滤器搜索活动(必填)
  3. OUTLOOK_GET_EVENT
    - 获取特定活动的完整详情(可选)
  4. OUTLOOK_GET_CALENDAR_VIEW
    - 获取指定时间范围内的活动(替代方案)
关键参数
  • filter
    :OData过滤字符串(例如:"start/dateTime ge '2024-07-01T00:00:00Z'")
  • select
    :需要返回的属性数组
  • orderby
    :排序条件(例如:['start/dateTime desc'])
  • top
    :每页结果数量(1-999)
  • timezone
    :结果显示的时区
  • start_datetime
    /
    end_datetime
    :CALENDAR_VIEW的时间范围(需带Z后缀的UTC时间)
注意事项
  • OData过滤器中的日期时间值需要单引号和Z后缀
  • 请使用'start/dateTime'过滤活动开始时间,不要使用'receivedDateTime'(该参数用于邮件)
  • 'createdDateTime'支持排序和选择,但不支持过滤
  • 分页处理:需跟随@odata.nextLink直到获取所有页面的结果
  • CALENDAR_VIEW更适合“查看今日日历”这类查询(包含跨时段活动)
  • LIST_EVENTS更适合关键词/分类过滤
  • 返回的活动中,开始和结束时间嵌套在start.dateTime和end.dateTime中

3. Update Events

3. 更新活动

When to use: User wants to modify an existing calendar event
Tool sequence:
  1. OUTLOOK_LIST_EVENTS
    - Find the event to update [Prerequisite]
  2. 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
适用场景:用户需要修改已有的日历活动
工具序列
  1. OUTLOOK_LIST_EVENTS
    - 找到需要更新的活动(前提步骤)
  2. OUTLOOK_UPDATE_CALENDAR_EVENT
    - 更新活动(必填)
关键参数
  • event_id
    :活动的唯一标识符(从LIST_EVENTS获取)
  • subject
    :新的活动标题(可选)
  • start_datetime
    /
    end_datetime
    :新的时间(可选)
  • time_zone
    :新时间对应的时区
  • attendees
    :更新后的参会者列表(如果提供,会替换原有列表)
  • body
    :更新后的描述,包含contentType和content
  • location
    :更新后的地点
注意事项
  • UPDATE操作会将提供的字段与现有活动合并;未指定的字段将保留原值
  • 提供参会者列表会替换完整的原有列表;请包含所有需要保留的参会者
  • 提供分类列表会替换完整的原有分类列表
  • 更新活动时间可能会向参会者重新发送通知
  • event_id为必填项;需先从LIST_EVENTS获取

4. Delete Events and Decline Invitations

4. 删除活动和拒绝邀请

When to use: User wants to remove an event or decline a meeting invitation
Tool sequence:
  1. OUTLOOK_DELETE_EVENT
    - Delete an event [Optional]
  2. 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
适用场景:用户需要删除活动或拒绝会议邀请
工具序列
  1. OUTLOOK_DELETE_EVENT
    - 删除活动(可选)
  2. OUTLOOK_DECLINE_EVENT
    - 拒绝会议邀请(可选)
关键参数
  • event_id
    :需要删除或拒绝的活动ID
  • send_notifications
    :向参会者发送取消通知(默认值为true)
  • comment
    :拒绝邀请的理由(仅用于DECLINE_EVENT)
  • proposedNewTime
    :拒绝时建议的替代时间
注意事项
  • 当send_notifications=true时,删除操作会发送取消邮件
  • 拒绝邀请时支持以ISO 8601格式提供start/end来建议新时间
  • 删除周期性活动的主活动会删除所有重复实例
  • DECLINE_EVENT中的sendResponse参数控制是否通知组织者

5. Find Available Meeting Times

5. 查找可用会议时间

When to use: User wants to find optimal meeting slots across multiple people
Tool sequence:
  1. OUTLOOK_FIND_MEETING_TIMES
    - Get meeting time suggestions [Required]
  2. 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
适用场景:用户需要为多个人查找最佳会议时段
工具序列
  1. OUTLOOK_FIND_MEETING_TIMES
    - 获取会议时间建议(必填)
  2. OUTLOOK_GET_SCHEDULE
    - 查看特定人员的空闲/忙碌状态(替代方案)
关键参数
  • attendees
    :包含邮箱和类型的参会者对象数组
  • meetingDuration
    :ISO 8601格式的时长(例如:'PT1H'表示1小时,'PT30M'表示30分钟)
  • timeConstraint
    :搜索的时间范围
  • minimumAttendeePercentage
    :最低参会者可用率阈值(0-100)
  • Schedules
    :GET_SCHEDULE的邮箱数组
  • StartTime
    /
    EndTime
    :日程查询的时间窗口(最长62天)
注意事项
  • FIND_MEETING_TIMES默认在工作时间内搜索;如需24/7搜索,请设置activityDomain='unrestricted'
  • 时间约束的时间段需要同时包含dateTime和timeZone的开始和结束值
  • GET_SCHEDULE的查询周期不能超过62天
  • 会议建议会考虑参会者的可用状态,但对于复杂的人员组合可能返回次优时间

Common Patterns

常见模式

Event ID Resolution

活动ID获取

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 calls
1. 调用OUTLOOK_LIST_EVENTS并设置时间范围过滤器
2. 通过活动标题或其他条件找到目标活动
3. 提取活动ID(例如:'AAMkAGI2TAAA=')
4. 在UPDATE、DELETE或GET_EVENT调用中使用该ID

OData Filter Syntax for Calendar

日历的OData过滤语法

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')"
时间范围过滤
filter: "start/dateTime ge '2024-07-01T00:00:00Z' and start/dateTime le '2024-07-31T23:59:59Z'"
标题包含关键词
filter: "contains(subject, 'Project Review')"
组合过滤
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
  • 获取用户时区:调用
    OUTLOOK_GET_MAILBOX_SETTINGS
    并设置select=['timeZone']
  • 在过滤器的日期时间值中使用一致的时区
  • Calendar View需要带Z后缀的UTC时间戳
  • LIST_EVENTS过滤器接受日期时间值中包含时区信息

Online Meeting Creation

在线会议创建

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 URL
1. 设置is_online_meeting: true
2. 设置online_meeting_provider: 'teamsForBusiness'
3. 使用OUTLOOK_CALENDAR_CREATE_EVENT创建活动
4. Teams加入链接可在返回结果的onlineMeeting字段中获取
5. 或通过OUTLOOK_GET_EVENT获取完整的加入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
日期时间格式
  • 必须使用ISO 8601格式:'2025-01-03T10:00:00'
  • Calendar View需要带Z后缀的UTC时间:'2025-01-03T10:00:00Z'
  • 过滤值需要单引号:"'2025-01-03T00:00:00Z'"
  • 时区不匹配会导致活动时间偏移;请始终先获取用户时区
OData过滤错误
  • 400 Bad Request通常表示过滤语法有问题
  • 并非所有活动属性都支持过滤(createdDateTime不支持)
  • 遇到400错误时,请调整语法或范围后重试
  • 支持过滤的字段:start/dateTime、end/dateTime、subject、categories、isAllDay
参会者管理
  • 添加参会者会触发邀请邮件
  • 更新参会者会替换完整列表;请包含所有需要保留的参会者
  • 参会者类型:'required'(必填)、'optional'(可选)、'resource'(资源)
  • 日历委托会影响可访问的日历范围
响应结构
  • 活动嵌套在response.data.value中
  • 活动时间位于event.start.dateTime和event.end.dateTime
  • Calendar View的结果可能嵌套在data.results[i].response.data.value中
  • 请使用防御性解析,为不同的嵌套层级设置回退方案

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

Powered by Composio
任务工具标识关键参数
创建活动OUTLOOK_CALENDAR_CREATE_EVENTsubject, start_datetime, end_datetime, time_zone
列出活动OUTLOOK_LIST_EVENTSfilter, select, top, timezone
获取活动详情OUTLOOK_GET_EVENTevent_id
日历视图OUTLOOK_GET_CALENDAR_VIEWstart_datetime, end_datetime
更新活动OUTLOOK_UPDATE_CALENDAR_EVENTevent_id, subject, start_datetime
删除活动OUTLOOK_DELETE_EVENTevent_id, send_notifications
拒绝活动邀请OUTLOOK_DECLINE_EVENTevent_id, comment
查找会议时间OUTLOOK_FIND_MEETING_TIMESattendees, meetingDuration
获取日程OUTLOOK_GET_SCHEDULESchedules, StartTime, EndTime
列出日历OUTLOOK_LIST_CALENDARSuser_id
邮箱设置OUTLOOK_GET_MAILBOX_SETTINGSselect

Composio提供支持