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.
通过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)
- 通过并使用
RUBE_MANAGE_CONNECTIONS工具包,已建立有效的Outlook连接outlook - 请始终先调用以获取最新的工具架构
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, '项目评审')"组合过滤器:
filter: "contains(subject, '评审') and categories/any(c:c eq '工作')"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
- 获取用户时区:调用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 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 |
| 任务 | 工具标识 | 关键参数 |
|---|---|---|
| 创建活动 | 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 |
| ", |