Google Calendar Runtime Skill
SkillProductivityRead and manage the user's Google Calendar through the Google Calendar MCP. Use when the user asks to check their schedule, find a free slot, create / move / update / cancel events, or respond to a meeting invite.
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 Google 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_google_calendar/SKILL.md and read by ahel’s review.
Use this skill to read and manage the user's connected Google Calendar through the Google Calendar MCP (mcp__google_calendar__*). It is the source of truth for their schedule — do not guess availability or scrape a browser.
When To Use
Use Calendar when the user asks about their schedule/availability, wants to schedule/reschedule/cancel something, find a free slot, or accept/decline an invite.
Connection
Authenticates via Google OAuth. On an auth/scope error, stop and ask the user to reconnect Google Calendar. Use list_calendars to discover calendar IDs when the user works across multiple calendars; default to primary otherwise.
Core Tools
Read:
list_events— events in a window (defaultprimary; pass a time range).get_event— one event byevent_id.list_event_instances— concrete occurrences of a recurring event.list_event_attendees— attendees for an event.list_calendars— calendar IDs the user can access.freebusy_query— required:calendars,time_min,time_max. Use to find conflicts/free slots.
Write (high-impact — see Guardrails):
create_event— required:summary,start_time(set end/attendees/timezone as needed).quick_add_event— required:text(natural-language event, e.g. "Lunch with Sam Friday 1pm").update_event— byevent_id(time, title, attendees).move_event— required:event_id,destination_calendar_id.delete_event— cancel byevent_id.respond_to_invite— required:event_id,response(accepted/declined/tentative).
Common Recipes
Find a free slot and book it
freebusy_queryover the candidate window (and all relevantcalendars).- Pick a slot with no conflict; confirm time + attendees with the user.
create_eventwith explicitstart_time/end and timezone.
Reschedule a meeting
list_events/get_eventto locate it and read current attendees.- Confirm the new time. 3.
update_eventwith the new time (attendees are re-notified).
Respond to an invite
get_eventto read details. 2.respond_to_invitewithaccepted/declined/tentative.
Guardrails
- Confirm before
create_event,update_event,move_event, ordelete_event— these notify attendees and change other people's calendars. State the exact date/time/attendees you will write. - Always resolve timezone explicitly. Don't assume; if the user's timezone is unknown, ask or use the calendar's default and say which you used.
- Check
freebusy_querybefore booking to avoid double-booking. delete_eventcancels and notifies attendees — treat as high-impact; confirm first.
Edge Cases & Errors
- Recurring events: editing the series vs one instance differs — use
list_event_instancesand be explicit about which you change. - Multiple calendars: confirm which calendar ID you are writing to; default
primaryunless told otherwise. quick_add_eventparses natural language and may misread ambiguous dates — read back what it created viaget_event.- Auth/scope errors → stop and ask the user to reconnect.
Signals
- GitHub stars
- 171
- Forks
- 52
- Last commit
- Sep 2026
ahel review
S4info
community integration — published by manor-os, not google
Automated review, not a security audit. Ruleset v1.
Advanced
- Catalog kind
- skill
- Gateway key
mcp-google-calendar- Source
- github.com/manor-os/manor-ai