outlook-calendar-automation
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseOutlook Calendar Automation via Rube MCP
通过Rube MCP实现Outlook日历自动化
Automate Outlook Calendar operations through Composio's Outlook toolkit via Rube MCP.
Toolkit docs: composio.dev/toolkits/outlook
通过Composio的Outlook工具包,借助Rube MCP自动化Outlook日历操作。
Prerequisites
前提条件
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Outlook connection via with toolkit
RUBE_MANAGE_CONNECTIONSoutlook - Always call first to get current tool schemas
RUBE_SEARCH_TOOLS
- 必须已连接Rube MCP(需确保RUBE_SEARCH_TOOLS可用)
- 通过完成Outlook连接,且工具包为
RUBE_MANAGE_CONNECTIONSoutlook - 请始终先调用获取最新的工具模式
RUBE_SEARCH_TOOLS
Setup
设置步骤
Get Rube MCP: Add as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
https://rube.app/mcp- Verify Rube MCP is available by confirming responds
RUBE_SEARCH_TOOLS - Call with toolkit
RUBE_MANAGE_CONNECTIONSoutlook - If connection is not ACTIVE, follow the returned auth link to complete Microsoft OAuth
- Confirm connection status shows ACTIVE before running any workflows
获取Rube MCP:在客户端配置中添加作为MCP服务器。无需API密钥,只需添加端点即可使用。
https://rube.app/mcp- 确认能正常响应,以此验证Rube MCP是否可用
RUBE_SEARCH_TOOLS - 调用并指定工具包为
RUBE_MANAGE_CONNECTIONSoutlook - 如果连接状态未显示为ACTIVE,请按照返回的授权链接完成Microsoft OAuth认证
- 在运行任何工作流之前,确认连接状态已显示为ACTIVE
Core Workflows
核心工作流
1. Create Calendar Events
1. 创建日历活动
When to use: User wants to schedule a new event on their Outlook calendar
Tool sequence:
- - List available calendars [Optional]
OUTLOOK_LIST_CALENDARS - - Create the event [Required]
OUTLOOK_CALENDAR_CREATE_EVENT
Key parameters:
- : Event title
subject - : ISO 8601 start time (e.g., '2025-01-03T10:00:00')
start_datetime - : ISO 8601 end time (must be after start)
end_datetime - : IANA or Windows timezone (e.g., 'America/New_York', 'Pacific Standard Time')
time_zone - : Array of email strings or attendee objects
attendees_info - : Event description (plain text or HTML)
body - : Set true if body contains HTML
is_html - : Physical location string
location - : Set true for Teams meeting link
is_online_meeting - : 'teamsForBusiness' for Teams integration
online_meeting_provider - : 'free', 'tentative', 'busy', 'oof'
show_as
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日历中安排新活动
工具序列:
- - 列出可用日历(可选)
OUTLOOK_LIST_CALENDARS - - 创建活动(必填)
OUTLOOK_CALENDAR_CREATE_EVENT
关键参数:
- :活动标题
subject - :ISO 8601格式的开始时间(例如:'2025-01-03T10:00:00')
start_datetime - :ISO 8601格式的结束时间(必须晚于开始时间)
end_datetime - :IANA或Windows时区(例如:'America/New_York'、'Pacific Standard Time')
time_zone - :邮箱字符串或参会者对象数组
attendees_info - :活动描述(纯文本或HTML格式)
body - :如果body包含HTML内容,请设为true
is_html - :物理地点字符串
location - :设为true可生成Teams会议链接
is_online_meeting - :集成Teams时设为'teamsForBusiness'
online_meeting_provider - :'free'(空闲)、'tentative'(暂定)、'busy'(忙碌)、'oof'(外出)
show_as
注意事项:
- 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:
- - Get user timezone for accurate queries [Prerequisite]
OUTLOOK_GET_MAILBOX_SETTINGS - - Search events with filters [Required]
OUTLOOK_LIST_EVENTS - - Get full details for a specific event [Optional]
OUTLOOK_GET_EVENT - - Get events active during a time window [Alternative]
OUTLOOK_GET_CALENDAR_VIEW
Key parameters:
- : OData filter string (e.g., "start/dateTime ge '2024-07-01T00:00:00Z'")
filter - : Array of properties to return
select - : Sort criteria (e.g., ['start/dateTime desc'])
orderby - : Results per page (1-999)
top - : Display timezone for results
timezone - /
start_datetime: For CALENDAR_VIEW time window (UTC with Z suffix)end_datetime
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
适用场景:用户需要查找日历中的活动
工具序列:
- - 获取用户时区以确保查询准确(前提步骤)
OUTLOOK_GET_MAILBOX_SETTINGS - - 使用过滤器搜索活动(必填)
OUTLOOK_LIST_EVENTS - - 获取特定活动的完整详情(可选)
OUTLOOK_GET_EVENT - - 获取指定时间范围内的活动(替代方案)
OUTLOOK_GET_CALENDAR_VIEW
关键参数:
- :OData过滤字符串(例如:"start/dateTime ge '2024-07-01T00:00:00Z'")
filter - :需要返回的属性数组
select - :排序条件(例如:['start/dateTime desc'])
orderby - :每页结果数量(1-999)
top - :结果显示的时区
timezone - /
start_datetime:CALENDAR_VIEW的时间范围(需带Z后缀的UTC时间)end_datetime
注意事项:
- 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:
- - Find the event to update [Prerequisite]
OUTLOOK_LIST_EVENTS - - Update the event [Required]
OUTLOOK_UPDATE_CALENDAR_EVENT
Key parameters:
- : Unique event identifier (from LIST_EVENTS)
event_id - : New event title (optional)
subject - /
start_datetime: New times (optional)end_datetime - : Timezone for new times
time_zone - : Updated attendee list (replaces existing if provided)
attendees - : Updated description with contentType and content
body - : Updated location
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
适用场景:用户需要修改已有的日历活动
工具序列:
- - 找到需要更新的活动(前提步骤)
OUTLOOK_LIST_EVENTS - - 更新活动(必填)
OUTLOOK_UPDATE_CALENDAR_EVENT
关键参数:
- :活动的唯一标识符(从LIST_EVENTS获取)
event_id - :新的活动标题(可选)
subject - /
start_datetime:新的时间(可选)end_datetime - :新时间对应的时区
time_zone - :更新后的参会者列表(如果提供,会替换原有列表)
attendees - :更新后的描述,包含contentType和content
body - :更新后的地点
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:
- - Delete an event [Optional]
OUTLOOK_DELETE_EVENT - - Decline a meeting invitation [Optional]
OUTLOOK_DECLINE_EVENT
Key parameters:
- : Event to delete or decline
event_id - : Send cancellation notices to attendees (default true)
send_notifications - : Reason for declining (for DECLINE_EVENT)
comment - : Suggest alternative time when declining
proposedNewTime
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
适用场景:用户需要删除活动或拒绝会议邀请
工具序列:
- - 删除活动(可选)
OUTLOOK_DELETE_EVENT - - 拒绝会议邀请(可选)
OUTLOOK_DECLINE_EVENT
关键参数:
- :需要删除或拒绝的活动ID
event_id - :向参会者发送取消通知(默认值为true)
send_notifications - :拒绝邀请的理由(仅用于DECLINE_EVENT)
comment - :拒绝时建议的替代时间
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:
- - Get meeting time suggestions [Required]
OUTLOOK_FIND_MEETING_TIMES - - Check free/busy for specific people [Alternative]
OUTLOOK_GET_SCHEDULE
Key parameters:
- : Array of attendee objects with email and type
attendees - : ISO 8601 duration (e.g., 'PT1H' for 1 hour, 'PT30M' for 30 min)
meetingDuration - : Time slots to search within
timeConstraint - : Minimum confidence threshold (0-100)
minimumAttendeePercentage - : Email array for GET_SCHEDULE
Schedules - /
StartTime: Time window for schedule lookup (max 62 days)EndTime
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
适用场景:用户需要为多个人查找最佳会议时段
工具序列:
- - 获取会议时间建议(必填)
OUTLOOK_FIND_MEETING_TIMES - - 查看特定人员的空闲/忙碌状态(替代方案)
OUTLOOK_GET_SCHEDULE
关键参数:
- :包含邮箱和类型的参会者对象数组
attendees - :ISO 8601格式的时长(例如:'PT1H'表示1小时,'PT30M'表示30分钟)
meetingDuration - :搜索的时间范围
timeConstraint - :最低参会者可用率阈值(0-100)
minimumAttendeePercentage - :GET_SCHEDULE的邮箱数组
Schedules - /
StartTime:日程查询的时间窗口(最长62天)EndTime
注意事项:
- 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 calls1. 调用OUTLOOK_LIST_EVENTS并设置时间范围过滤器
2. 通过活动标题或其他条件找到目标活动
3. 提取活动ID(例如:'AAMkAGI2TAAA=')
4. 在UPDATE、DELETE或GET_EVENT调用中使用该IDOData 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: with select=['timeZone']
OUTLOOK_GET_MAILBOX_SETTINGS - Use consistent timezone in filter datetime values
- Calendar View requires UTC timestamps with Z suffix
- LIST_EVENTS filter accepts timezone in datetime values
- 获取用户时区:调用并设置select=['timeZone']
OUTLOOK_GET_MAILBOX_SETTINGS - 在过滤器的日期时间值中使用一致的时区
- 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 URL1. 设置is_online_meeting: true
2. 设置online_meeting_provider: 'teamsForBusiness'
3. 使用OUTLOOK_CALENDAR_CREATE_EVENT创建活动
4. Teams加入链接可在返回结果的onlineMeeting字段中获取
5. 或通过OUTLOOK_GET_EVENT获取完整的加入URLKnown 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
快速参考
| 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 |
Powered by Composio
| 任务 | 工具标识 | 关键参数 |
|---|---|---|
| 创建活动 | OUTLOOK_CALENDAR_CREATE_EVENT | subject, start_datetime, end_datetime, time_zone |
| 列出活动 | OUTLOOK_LIST_EVENTS | filter, select, top, timezone |
| 获取活动详情 | OUTLOOK_GET_EVENT | event_id |
| 日历视图 | OUTLOOK_GET_CALENDAR_VIEW | start_datetime, end_datetime |
| 更新活动 | OUTLOOK_UPDATE_CALENDAR_EVENT | event_id, subject, start_datetime |
| 删除活动 | OUTLOOK_DELETE_EVENT | event_id, send_notifications |
| 拒绝活动邀请 | OUTLOOK_DECLINE_EVENT | event_id, comment |
| 查找会议时间 | OUTLOOK_FIND_MEETING_TIMES | attendees, meetingDuration |
| 获取日程 | OUTLOOK_GET_SCHEDULE | Schedules, StartTime, EndTime |
| 列出日历 | OUTLOOK_LIST_CALENDARS | user_id |
| 邮箱设置 | OUTLOOK_GET_MAILBOX_SETTINGS | select |
由Composio提供支持