[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-c6bcecd4-be8d-4cb5-8ae9-d894616c014e":3,"$fG6ypSq2l-vRh8oH9z0C4_-LiQEPmU86IcUxpY6KalVw":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"c6bcecd4-be8d-4cb5-8ae9-d894616c014e","outlook-calendar-automation","通过Rube MCP（Composio）自动化Outlook日历任务：创建事件、管理参会者、查找会议时间、处理邀请。始终首先搜索当前模式下的工具。","cat_prod_automation","mod_productivity","sickn33,productivity","---\nname: outlook-calendar-automation\ndescription: \"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.\"\nrisk: critical\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Outlook Calendar Automation via Rube MCP\n\nAutomate Outlook Calendar operations through Composio's Outlook toolkit via Rube MCP.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Outlook connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `outlook`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `outlook`\n3. If connection is not ACTIVE, follow the returned auth link to complete Microsoft OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Create Calendar Events\n\n**When to use**: User wants to schedule a new event on their Outlook calendar\n\n**Tool sequence**:\n1. `OUTLOOK_LIST_CALENDARS` - List available calendars [Optional]\n2. `OUTLOOK_CALENDAR_CREATE_EVENT` - Create the event [Required]\n\n**Key parameters**:\n- `subject`: Event title\n- `start_datetime`: ISO 8601 start time (e.g., '2025-01-03T10:00:00')\n- `end_datetime`: ISO 8601 end time (must be after start)\n- `time_zone`: IANA or Windows timezone (e.g., 'America\u002FNew_York', 'Pacific Standard Time')\n- `attendees_info`: Array of email strings or attendee objects\n- `body`: Event description (plain text or HTML)\n- `is_html`: Set true if body contains HTML\n- `location`: Physical location string\n- `is_online_meeting`: Set true for Teams meeting link\n- `online_meeting_provider`: 'teamsForBusiness' for Teams integration\n- `show_as`: 'free', 'tentative', 'busy', 'oof'\n\n**Pitfalls**:\n- start_datetime must be chronologically before end_datetime\n- time_zone is required and must be a valid IANA or Windows timezone name\n- Adding attendees can trigger invitation emails immediately\n- To generate a Teams meeting link, set BOTH is_online_meeting=true AND online_meeting_provider='teamsForBusiness'\n- user_id defaults to 'me'; use email or UUID for other users' calendars\n\n### 2. List and Search Events\n\n**When to use**: User wants to find events on their calendar\n\n**Tool sequence**:\n1. `OUTLOOK_GET_MAILBOX_SETTINGS` - Get user timezone for accurate queries [Prerequisite]\n2. `OUTLOOK_LIST_EVENTS` - Search events with filters [Required]\n3. `OUTLOOK_GET_EVENT` - Get full details for a specific event [Optional]\n4. `OUTLOOK_GET_CALENDAR_VIEW` - Get events active during a time window [Alternative]\n\n**Key parameters**:\n- `filter`: OData filter string (e.g., \"start\u002FdateTime ge '2024-07-01T00:00:00Z'\")\n- `select`: Array of properties to return\n- `orderby`: Sort criteria (e.g., ['start\u002FdateTime desc'])\n- `top`: Results per page (1-999)\n- `timezone`: Display timezone for results\n- `start_datetime`\u002F`end_datetime`: For CALENDAR_VIEW time window (UTC with Z suffix)\n\n**Pitfalls**:\n- OData filter datetime values require single quotes and Z suffix\n- Use 'start\u002FdateTime' for event start filtering, NOT 'receivedDateTime' (that is for emails)\n- 'createdDateTime' supports orderby\u002Fselect but NOT filtering\n- Pagination: follow @odata.nextLink until all pages are collected\n- CALENDAR_VIEW is better for \"what's on my calendar today\" queries (includes spanning events)\n- LIST_EVENTS is better for keyword\u002Fcategory filtering\n- Response events have start\u002Fend nested as start.dateTime and end.dateTime\n\n### 3. Update Events\n\n**When to use**: User wants to modify an existing calendar event\n\n**Tool sequence**:\n1. `OUTLOOK_LIST_EVENTS` - Find the event to update [Prerequisite]\n2. `OUTLOOK_UPDATE_CALENDAR_EVENT` - Update the event [Required]\n\n**Key parameters**:\n- `event_id`: Unique event identifier (from LIST_EVENTS)\n- `subject`: New event title (optional)\n- `start_datetime`\u002F`end_datetime`: New times (optional)\n- `time_zone`: Timezone for new times\n- `attendees`: Updated attendee list (replaces existing if provided)\n- `body`: Updated description with contentType and content\n- `location`: Updated location\n\n**Pitfalls**:\n- UPDATE merges provided fields with existing event; unspecified fields are preserved\n- Providing attendees replaces the ENTIRE attendee list; include all desired attendees\n- Providing categories replaces the ENTIRE category list\n- Updating times may trigger re-sends to attendees\n- event_id is required; obtain from LIST_EVENTS first\n\n### 4. Delete Events and Decline Invitations\n\n**When to use**: User wants to remove an event or decline a meeting invitation\n\n**Tool sequence**:\n1. `OUTLOOK_DELETE_EVENT` - Delete an event [Optional]\n2. `OUTLOOK_DECLINE_EVENT` - Decline a meeting invitation [Optional]\n\n**Key parameters**:\n- `event_id`: Event to delete or decline\n- `send_notifications`: Send cancellation notices to attendees (default true)\n- `comment`: Reason for declining (for DECLINE_EVENT)\n- `proposedNewTime`: Suggest alternative time when declining\n\n**Pitfalls**:\n- Deletion with send_notifications=true sends cancellation emails\n- Declining supports proposing a new time with start\u002Fend in ISO 8601 format\n- Deleting a recurring event master deletes all occurrences\n- sendResponse in DECLINE_EVENT controls whether the organizer is notified\n\n### 5. Find Available Meeting Times\n\n**When to use**: User wants to find optimal meeting slots across multiple people\n\n**Tool sequence**:\n1. `OUTLOOK_FIND_MEETING_TIMES` - Get meeting time suggestions [Required]\n2. `OUTLOOK_GET_SCHEDULE` - Check free\u002Fbusy for specific people [Alternative]\n\n**Key parameters**:\n- `attendees`: Array of attendee objects with email and type\n- `meetingDuration`: ISO 8601 duration (e.g., 'PT1H' for 1 hour, 'PT30M' for 30 min)\n- `timeConstraint`: Time slots to search within\n- `minimumAttendeePercentage`: Minimum confidence threshold (0-100)\n- `Schedules`: Email array for GET_SCHEDULE\n- `StartTime`\u002F`EndTime`: Time window for schedule lookup (max 62 days)\n\n**Pitfalls**:\n- FIND_MEETING_TIMES searches within work hours by default; use activityDomain='unrestricted' for 24\u002F7\n- Time constraint time slots require dateTime and timeZone for both start and end\n- GET_SCHEDULE period cannot exceed 62 days\n- Meeting suggestions respect attendee availability but may return suboptimal times for complex groups\n\n## Common Patterns\n\n### Event ID Resolution\n\n```\n1. Call OUTLOOK_LIST_EVENTS with time-bound filter\n2. Find target event by subject or other criteria\n3. Extract event id (e.g., 'AAMkAGI2TAAA=')\n4. Use in UPDATE, DELETE, or GET_EVENT calls\n```\n\n### OData Filter Syntax for Calendar\n\n**Time range filter**:\n```\nfilter: \"start\u002FdateTime ge '2024-07-01T00:00:00Z' and start\u002FdateTime le '2024-07-31T23:59:59Z'\"\n```\n\n**Subject contains**:\n```\nfilter: \"contains(subject, 'Project Review')\"\n```\n\n**Combined**:\n```\nfilter: \"contains(subject, 'Review') and categories\u002Fany(c:c eq 'Work')\"\n```\n\n### Timezone Handling\n\n- Get user timezone: `OUTLOOK_GET_MAILBOX_SETTINGS` with select=['timeZone']\n- Use consistent timezone in filter datetime values\n- Calendar View requires UTC timestamps with Z suffix\n- LIST_EVENTS filter accepts timezone in datetime values\n\n### Online Meeting Creation\n\n```\n1. Set is_online_meeting: true\n2. Set online_meeting_provider: 'teamsForBusiness'\n3. Create event with OUTLOOK_CALENDAR_CREATE_EVENT\n4. Teams join link available in response onlineMeeting field\n5. Or retrieve via OUTLOOK_GET_EVENT for the full join URL\n```\n\n## Known Pitfalls\n\n**DateTime Formats**:\n- ISO 8601 format required: '2025-01-03T10:00:00'\n- Calendar View requires UTC with Z: '2025-01-03T10:00:00Z'\n- Filter values need single quotes: \"'2025-01-03T00:00:00Z'\"\n- Timezone mismatches shift event boundaries; always resolve user timezone first\n\n**OData Filter Errors**:\n- 400 Bad Request usually indicates filter syntax issues\n- Not all event properties support filtering (createdDateTime does not)\n- Retry with adjusted syntax\u002Fbounds on 400 errors\n- Valid filter fields: start\u002FdateTime, end\u002FdateTime, subject, categories, isAllDay\n\n**Attendee Management**:\n- Adding attendees triggers invitation emails\n- Updating attendees replaces the full list; include all desired attendees\n- Attendee types: 'required', 'optional', 'resource'\n- Calendar delegation affects which calendars are accessible\n\n**Response Structure**:\n- Events nested at response.data.value\n- Event times at event.start.dateTime and event.end.dateTime\n- Calendar View may nest at data.results[i].response.data.value\n- Parse defensively with fallbacks for different nesting levels\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| Create event | OUTLOOK_CALENDAR_CREATE_EVENT | subject, start_datetime, end_datetime, time_zone |\n| List events | OUTLOOK_LIST_EVENTS | filter, select, top, timezone |\n| Get event details | OUTLOOK_GET_EVENT | event_id |\n| Calendar view | OUTLOOK_GET_CALENDAR_VIEW | start_datetime, end_datetime |\n| Update event | OUTLOOK_UPDATE_CALENDAR_EVENT | event_id, subject, start_datetime |\n| Delete event | OUTLOOK_DELETE_EVENT | event_id, send_notifications |\n| Decline event | OUTLOOK_DECLINE_EVENT | event_id, comment |\n| Find meeting times | OUTLOOK_FIND_MEETING_TIMES | attendees, meetingDuration |\n| Get schedule | OUTLOOK_GET_SCHEDULE | Schedules, StartTime, EndTime |\n| List calendars | OUTLOOK_LIST_CALENDARS | user_id |\n| Mailbox settings | OUTLOOK_GET_MAILBOX_SETTINGS | select |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,96,1867,"2026-05-16 13:33:12",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"效率工具","productivity","mdi-lightning-bolt-outline","文档处理、数据分析、自动化工作流",4,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"自动化","automation","mdi-robot-outline","工作流自动化、批处理",3,101,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"4f2eb1e4-0540-4bbe-8d89-7005c2e5e539","1.0.0","outlook-calendar-automation.zip",4063,"uploads\u002Fskills\u002Fc6bcecd4-be8d-4cb5-8ae9-d894616c014e\u002Foutlook-calendar-automation.zip","b47afa599be19a68423e254a18776f0f2572601320d45490bf03baea06a67bbe","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":10092}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]