Help us improve
Share bugs, ideas, or general feedback.
From outlook-suite
Manage Outlook calendar via PowerShell: list events, create/update/delete appointments, send meeting invites, respond to meetings, recurring events, check availability, and find rooms. Scripts auto-start Outlook when needed.
npx claudepluginhub mustafaakben/outlook-suite-plugin --plugin outlook-suiteHow this skill is triggered — by the user, by Claude, or both
Slash command
/outlook-suite:outlook-calendarThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Manage Microsoft Outlook calendar events and meetings using PowerShell COM objects.
scripts/outlook-calendar-attendees.ps1scripts/outlook-calendar-create.ps1scripts/outlook-calendar-delete.ps1scripts/outlook-calendar-forward.ps1scripts/outlook-calendar-list.ps1scripts/outlook-calendar-recurring.ps1scripts/outlook-calendar-respond.ps1scripts/outlook-calendar-rooms.ps1scripts/outlook-calendar-update.ps1scripts/outlook-freebusy.ps1Automates Outlook Calendar tasks via Composio's Rube MCP: create events, manage attendees, find meeting times, handle invitations. Requires active Outlook connection.
Automates Outlook Calendar tasks: create/manage events and attendees, find meeting times, send invitations via Rube MCP Composio tools. Requires active Outlook connection.
Automates Outlook Calendar operations via Composio's Outlook toolkit through Rube MCP: create events, manage attendees, find meeting times, and handle invitations.
Share bugs, ideas, or general feedback.
Manage Microsoft Outlook calendar events and meetings using PowerShell COM objects.
List, create, update, and delete calendar events.
List upcoming calendar events with EntryIDs for use with action scripts.
Required Parameters: None (uses defaults)
| Parameter | Type | Default | Description |
|---|---|---|---|
-Days | int | 7 | Number of days to look ahead (or ahead+behind with -Past) |
-Past | switch | false | Include past events (shows -Days before and after today) |
-Limit | int | 20 | Maximum number of events to display |
# List upcoming events (next 7 days)
& "./scripts/outlook-calendar-list.ps1" -Days 7
# List events including past
& "./scripts/outlook-calendar-list.ps1" -Days 7 -Past
# List next 30 days, max 50 events
& "./scripts/outlook-calendar-list.ps1" -Days 30 -Limit 50
Create a new appointment or meeting with attendees.
Required Parameters: -Subject, -Start
| Parameter | Type | Default | Description |
|---|---|---|---|
-Subject | string | — | Event subject/title (required) |
-Start | datetime | — | Start date and time (required) |
-End | datetime | Start+1hr | End date and time |
-Location | string | "" | Event location |
-Body | string | "" | Event description/body text |
-AllDay | switch | false | Create as all-day event |
-Reminder | int | 15 | Reminder minutes before event |
-Attendees | string | "" | Semicolon-separated email addresses (sends invites) |
# Create a simple appointment
& "./scripts/outlook-calendar-create.ps1" -Subject "Team Sync" -Start "2026-02-10 14:00"
# Create meeting with attendees (sends invites)
& "./scripts/outlook-calendar-create.ps1" -Subject "Project Review" -Start "2026-02-10 10:00" -End "2026-02-10 11:30" -Location "Conference Room A" -Attendees "john@example.com; jane@example.com"
# Create all-day event
& "./scripts/outlook-calendar-create.ps1" -Subject "Company Holiday" -Start "2026-02-15" -AllDay
Update an existing calendar event's details.
Required Parameters: -EntryID or -Index (at least one)
| Parameter | Type | Default | Description |
|---|---|---|---|
-EntryID | string | "" | Outlook EntryID for direct lookup (preferred) |
-Index | int | 0 | Event position in upcoming list (fallback) |
-Days | int | 7 | Days ahead to search when using -Index |
-Subject | string | "" | New subject/title |
-Start | datetime | — | New start time (adjusts end to maintain duration) |
-End | datetime | — | New end time |
-Location | string | "" | New location |
-Body | string | "" | New body text |
# Update event by EntryID (preferred)
& "./scripts/outlook-calendar-update.ps1" -EntryID "00000000..." -Subject "Updated Meeting" -Location "Room 202"
# Update event by index (fallback)
& "./scripts/outlook-calendar-update.ps1" -Index 1 -Subject "New Title"
# Reschedule event
& "./scripts/outlook-calendar-update.ps1" -EntryID "00000000..." -Start "2026-02-10 14:00"
Delete a calendar event or meeting.
Required Parameters: -EntryID or -Index (at least one)
| Parameter | Type | Default | Description |
|---|---|---|---|
-EntryID | string | "" | Outlook EntryID for direct lookup (preferred) |
-Index | int | 0 | Event position in upcoming list (fallback) |
-Days | int | 7 | Days ahead to search when using -Index |
Supports PowerShell safety switches: -WhatIf and -Confirm.
# Delete by EntryID (preferred)
& "./scripts/outlook-calendar-delete.ps1" -EntryID "00000000..."
# Delete by index (fallback)
& "./scripts/outlook-calendar-delete.ps1" -Index 1
# Delete event in wider range
& "./scripts/outlook-calendar-delete.ps1" -Index 3 -Days 14
Respond to meeting invitations, view attendee responses, and forward events.
Accept, tentatively accept, or decline a meeting invitation.
Required Parameters: -Response, plus -EntryID or -Index
| Parameter | Type | Default | Description |
|---|---|---|---|
-EntryID | string | "" | Outlook EntryID for direct lookup (preferred) |
-Index | int | 0 | Event position in upcoming list (fallback) |
-Response | string | — | Response type: Accept, Tentative, or Decline (required) |
-Days | int | 7 | Days ahead to search when using -Index |
-NoResponse | switch | false | Save response locally without notifying organizer |
# Accept a meeting (preferred)
& "./scripts/outlook-calendar-respond.ps1" -EntryID "00000000..." -Response Accept
# Tentatively accept by index
& "./scripts/outlook-calendar-respond.ps1" -Index 1 -Response Tentative
# Decline without sending response to organizer
& "./scripts/outlook-calendar-respond.ps1" -EntryID "00000000..." -Response Decline -NoResponse
View meeting attendee list with response status (accepted/declined/tentative).
Required Parameters: -EntryID or -Index (at least one)
| Parameter | Type | Default | Description |
|---|---|---|---|
-EntryID | string | "" | Outlook EntryID for direct lookup (preferred) |
-Index | int | 0 | Event position in upcoming list (fallback) |
-Days | int | 7 | Days ahead to search when using -Index |
# View attendees by EntryID (preferred)
& "./scripts/outlook-calendar-attendees.ps1" -EntryID "00000000..."
# View attendees by index
& "./scripts/outlook-calendar-attendees.ps1" -Index 1
# Check meeting in wider range
& "./scripts/outlook-calendar-attendees.ps1" -Index 1 -Days 14
Forward a calendar event using Outlook ForwardAsVcal (vCal-style calendar attachment).
Required Parameters: -To, plus -EntryID or -Index
| Parameter | Type | Default | Description |
|---|---|---|---|
-EntryID | string | "" | Outlook EntryID for direct lookup (preferred) |
-Index | int | 0 | Event position in upcoming list (fallback) |
-To | string | — | Recipient email address (required) |
-Body | string | "" | Custom message to include |
-Days | int | 7 | Days ahead to search when using -Index |
-Send | switch | false | Send immediately (default: save as draft) |
# Forward event as draft (preferred)
& "./scripts/outlook-calendar-forward.ps1" -EntryID "00000000..." -To "colleague@example.com" -Body "FYI"
# Forward and send immediately
& "./scripts/outlook-calendar-forward.ps1" -EntryID "00000000..." -To "colleague@example.com" -Send
# Forward by index
& "./scripts/outlook-calendar-forward.ps1" -Index 1 -To "colleague@example.com" -Body "FYI" -Send
Create events that repeat on a schedule.
Create a recurring calendar event with various recurrence patterns.
Required Parameters: -Subject, -Start, -Pattern
| Parameter | Type | Default | Description |
|---|---|---|---|
-Subject | string | — | Event subject/title (required) |
-Start | datetime | — | First occurrence date/time (required) |
-Pattern | string | — | Recurrence type: Daily, Weekly, Monthly, Yearly (required) |
-Interval | int | 1 | Repeat every N days/weeks/months/years |
-Duration | int | 60 | Event duration in minutes |
-Location | string | "" | Event location |
-Body | string | "" | Event description |
-Attendees | string | "" | Semicolon-separated emails (creates meeting series) |
-Occurrences | int | 0 | End after N occurrences (0 = no limit) |
-EndByDate | datetime | — | End recurrence on this date |
-Monday ... -Sunday | switch | false | Weekly: which days to recur on |
-DayOfMonth | int | 0 | Monthly: specific day number (1-31) |
-WeekNumber | string | "" | Monthly/Yearly: First, Second, Third, Fourth, Last |
-DayOfWeek | string | "" | Monthly/Yearly: Day, Weekday, WeekendDay, or specific day name |
For monthly "Nth weekday" recurrence, provide -WeekNumber and -DayOfWeek together.
# Daily standup
& "./scripts/outlook-calendar-recurring.ps1" -Subject "Daily Standup" -Start "2026-02-10 09:00" -Pattern Daily -Duration 15
# Weekly on specific days
& "./scripts/outlook-calendar-recurring.ps1" -Subject "Team Meeting" -Start "2026-02-10 10:00" -Pattern Weekly -Monday -Wednesday -Friday
# Monthly on the 15th
& "./scripts/outlook-calendar-recurring.ps1" -Subject "Monthly Review" -Start "2026-02-10 14:00" -Pattern Monthly -DayOfMonth 15
# Second Tuesday of each month
& "./scripts/outlook-calendar-recurring.ps1" -Subject "Board Meeting" -Start "2026-02-10 09:00" -Pattern Monthly -WeekNumber Second -DayOfWeek Tuesday
# Limited occurrences
& "./scripts/outlook-calendar-recurring.ps1" -Subject "Sprint Planning" -Start "2026-02-10 09:00" -Pattern Weekly -Monday -Occurrences 10
Check attendee availability and find meeting rooms.
Check free/busy availability for one or more attendees. Requires Exchange/Office 365.
Required Parameters: -Attendees, -Start
| Parameter | Type | Default | Description |
|---|---|---|---|
-Attendees | string | — | Semicolon-separated email addresses (required) |
-Start | datetime | — | Start of time range to check (required) |
-End | datetime | Start+8hr | End of time range to check (must be later than -Start) |
-IntervalMinutes | int | 30 | Time slot granularity in minutes (minimum 1) |
# Check one person's availability
& "./scripts/outlook-freebusy.ps1" -Attendees "john@example.com" -Start "2026-02-10 09:00"
# Check multiple people for a full day
& "./scripts/outlook-freebusy.ps1" -Attendees "john@example.com; jane@example.com" -Start "2026-02-10 09:00" -End "2026-02-10 17:00"
# Finer 15-minute intervals
& "./scripts/outlook-freebusy.ps1" -Attendees "john@example.com" -Start "2026-02-10 09:00" -IntervalMinutes 15
Find available conference rooms for a time slot. Requires Exchange/Office 365 with room mailboxes.
Required Parameters: -Start
| Parameter | Type | Default | Description |
|---|---|---|---|
-Start | datetime | — | Meeting start time (required) |
-End | datetime | Start+1hr | Meeting end time (must be later than -Start) |
-Building | string | "" | Filter rooms by building name |
-Capacity | int | 0 | Currently unsupported in Outlook COM room-list data; accepted but ignored with warning |
# Find available rooms
& "./scripts/outlook-calendar-rooms.ps1" -Start "2026-02-10 10:00"
# Rooms in specific building
& "./scripts/outlook-calendar-rooms.ps1" -Start "2026-02-10 10:00" -End "2026-02-10 11:00" -Building "HQ"
| Pattern | Description | Key Options |
|---|---|---|
| Daily | Every N days | -Interval |
| Weekly | Specific days of week, every N weeks | -Monday through -Sunday, -Interval |
| Monthly | Specific day or "Nth weekday" of month | -DayOfMonth or -WeekNumber + -DayOfWeek |
| Yearly | Same date each year or "Nth weekday" of month | -WeekNumber + -DayOfWeek |
| Value | Meaning |
|---|---|
| Free | Time slot is available |
| Tentative | Tentatively booked |
| Busy | Confirmed busy |
| Out of Office | OOF/vacation |
| Working Elsewhere | Working from another location |