Microsoft Calendar Runtime Skill
SkillProductivityRead and manage the user's Microsoft / Outlook Calendar through the Microsoft Calendar MCP. Use when the user asks to check their schedule, find a free slot or meeting time, create / update / cancel events, or accept/decline a meeting invite on their Microsoft 365 calendar.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Microsoft Calendar Runtime Skill skill
What this skill tells your AI
The instructions your AI receives, as published by manor-os/manor-ai in packages/core/ai/skills/mcp_ms_calendar/SKILL.md and read by ahel’s review.
Use this skill to read and manage the user's connected Microsoft (Outlook) Calendar through the Microsoft Calendar MCP (mcp__ms_calendar__*). For Google Calendar use mcp_google_calendar. It is the source of truth for their schedule — do not guess availability.
When To Use
Use this skill when the user asks about their Microsoft/Outlook schedule, wants to schedule/reschedule/cancel a meeting, find a free slot or a time that works for several people, or respond to an invite.
Connection
Authenticates via Microsoft OAuth. On an auth/scope error, stop and ask the user to reconnect. Use list_calendars to discover calendar IDs when working across multiple calendars; default to the primary calendar otherwise.
Core Tools
Read / availability:
list_events,get_event(reqevent_id),list_event_instances(reqevent_id,time_min,time_max— expand a recurring series).list_calendars.get_schedule(reqcalendars,time_min,time_max) — free/busy across calendars (MS analog of Google free/busy).find_meeting_times(reqattendees) — suggest slots when attendees are free.
Write (high-impact — see Guardrails):
create_event(reqsubject,start_time),update_event(reqevent_id).cancel_event(reqevent_id) — cancels and notifies attendees (use for meetings you organize).delete_event(reqevent_id) — deletes without notifying attendees.accept_event/decline_event/tentatively_accept_event(reqevent_id).
Common Recipes
Find a time for a group and book it
find_meeting_timeswithattendees(and duration) — orget_scheduleto inspect free/busy.- Pick a slot; confirm time + attendees with the user.
create_eventwith explicitstart_time/end and timezone.
Reschedule
get_eventto read current time/attendees. 2. Confirm new time. 3.update_event.
Respond to an invite
get_eventto read details. 2.accept_event/decline_event/tentatively_accept_event.
Guardrails
- Confirm before
create_event,update_event,cancel_event, ordelete_event— they change the calendar and may notify attendees. State the exact date/time/attendees. cancel_eventvsdelete_eventdiffer:cancel_eventnotifies attendees (correct for a meeting you organize);delete_eventremoves silently. Pick deliberately and tell the user which you'll use.- Always resolve timezone explicitly — don't assume; say which timezone you used.
- Check
get_schedule/find_meeting_timesbefore booking to avoid conflicts.
Edge Cases & Errors
- Recurring events: edit the series vs one occurrence differs — use
list_event_instancesand be explicit about which you change. - Multiple calendars: confirm which calendar you're writing to; default to primary unless told.
find_meeting_timesreturns suggestions, not a booking — you still mustcreate_eventafter confirmation.- Auth/consent errors → stop and ask the user to reconnect.
Signals
- GitHub stars
- 171
- Forks
- 52
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
mcp-ms-calendar- Source
- github.com/manor-os/manor-ai