outlook_calendar_ accept_ eventAccept a meeting invitation.
See what this week holds, book a meeting with a Teams link at a time that suits everyone, move a call without losing its guests, and accept or decline invitations with a note.
PopMCPOutlook Calendar
All of Outlook Calendar in Microsoft Graph for a signed-in account, from calendars, events and recurring series to invitations, free/busy, sharing, reminders and Microsoft Places rooms, plus the calendar events PopMCP can watch.
114 tools in the full catalog: 63 read and 51 write. 32 load by default, and the rest are found with tool search.
outlook_calendar_ accept_ eventAccept a meeting invitation.
outlook_calendar_ batch_ readRun up to 20 read (GET) requests in one Microsoft Graph $batch, e.g. several events by id: [{ "url": "/me/events/ID1?$select=subject,start,end" }, ...].
outlook_calendar_ cancel_ eventCancel a meeting you organize and email attendees a cancellation, with an optional comment.
outlook_calendar_ create_ eventCreate an event or meeting (default calendar when calendarId is omitted).
outlook_calendar_ decline_ eventDecline a meeting invitation, optionally proposing another time (proposedNewTime: { "start": ..., "end": ...
outlook_calendar_ delete_ eventDelete an event (it goes to Deleted Items).
outlook_calendar_ forward_ eventForward a meeting invitation to new people (toRecipients) with an optional comment.
outlook_calendar_ get_ agendaEverything on the user's calendars for a day or a period, every calendar merged and sorted by start (recurring meetings expanded): subject, time, location, organizer, attendees and responses, join link, and which calendar.
outlook_calendar_ get_ eventRead one event in full: subject, body (plain text; bodyFormat html for HTML), start and end in the mailbox's time zone, location, organizer, attendees and their responses, recurrence, the online meeting join link, categories, iCalUId.
outlook_calendar_ list_ calendar_ viewWhat is on a calendar between two times, sorted by start: single events plus every occurrence of recurring meetings.
outlook_calendar_ list_ event_ instancesThe occurrences of a recurring meeting between two dates (changed ones included, cancelled ones not).
outlook_calendar_ list_ eventsList a calendar's events as stored: single events and recurring series (a weekly meeting is one row with its recurrence).
outlook_calendar_ reschedule_ eventMove an event to a new time, keeping its length unless newEnd is given.
outlook_calendar_ search_ eventsFind events by words: every event (recurring occurrences included) in a window whose subject, location, organizer, attendees, categories or notes contain all the words.
outlook_calendar_ tentatively_ accept_ eventTentatively accept a meeting invitation, optionally proposing another time (proposedNewTime).
outlook_calendar_ update_ attendeesAdd or remove people (or rooms) on a meeting you organize and keep everyone else.
outlook_calendar_ update_ eventChange an event: time, subject, body, location, attendees, reminder, showAs, categories.
outlook_calendar_ find_ available_ roomsMeeting rooms that are free for a time: lists the organization's rooms (Microsoft Places), optionally by room list, capacity or building, and checks each one's free/busy.
outlook_calendar_ list_ roomsList the organization's meeting rooms: displayName, emailAddress (to book it, invite this address or pass it as room), capacity, building, floor, audio and video devices, accessibility.
outlook_calendar_ attach_ filesAttach files of any size (up to 150 MB each) to an event: small ones directly, larger ones through an upload session.
outlook_calendar_ list_ event_ attachmentsList an event's attachments: id, name, contentType, size, isInline (file contents are left out).
outlook_calendar_ read_ attachmentRead an event attachment: the text of documents (Word .docx, PowerPoint .pptx, Excel .xlsx, .txt, .csv, .html, .json, .ics), or an image (returned as the image).
outlook_calendar_ create_ calendarCreate a new calendar.
outlook_calendar_ get_ calendarRead one calendar: name, color, owner, whether the user can edit or share it, and its online meeting providers.
outlook_calendar_ list_ calendarsList the user's calendars: their own and the ones others shared with them (once added in Outlook), with id, name, color, owner, canEdit and isDefaultCalendar.
outlook_calendar_ list_ calendar_ permissionsWho a calendar is shared with or delegated to, and their role: id, emailAddress, role, allowedRoles (the roles that person can be given), isRemovable, isInsideOrganization.
outlook_calendar_ list_ categoriesList the user's Outlook categories (name and color) that can be put on events: use a category's displayName in an event's categories.
outlook_calendar_ share_ calendarShare a calendar with someone, or make them a delegate of the default calendar.
outlook_calendar_ get_ mailbox_ settingsThe mailbox's calendar settings: time zone, working hours (days, start, end, time zone), date and time formats, language, and how delegates receive meeting messages.
outlook_calendar_ find_ free_ timeFree time slots of a given length: when the user (and, for work or school accounts, the attendees) has nothing busy, inside working hours by default.
outlook_calendar_ find_ meeting_ timesSuggest times when the user and the attendees (and optionally a room) are all free.
outlook_calendar_ get_ scheduleFree/busy for people, rooms or distribution lists over a time window: each one's busy blocks (status, and subject and location where allowed), working hours and an availabilityView string.
outlook_calendar_ count_ eventsCount a calendar's events (single events and recurring series; occurrences are not counted).
outlook_calendar_ dismiss_ event_ reminderDismiss an event's reminder (it stops reminding).
outlook_calendar_ get_ event_ calendarWhich calendar an event is on: the calendar's id, name, color and owner.
outlook_calendar_ list_ calendar_ view_ changesTrack what changed on a calendar between two dates: the first round returns every event, later rounds only events added, changed or deleted since (deleted ones carry @removed).
outlook_calendar_ permanently_ delete_ eventPermanently delete an event: it skips Deleted Items and the user cannot recover it.
outlook_calendar_ snooze_ event_ reminderSnooze an event's reminder until a new time.
outlook_calendar_ create_ check_ inCheck in to a booked desk, room or workspace, so the reservation is not released automatically.
outlook_calendar_ create_ placeCreate a building, floor, section, desk, room or workspace in Microsoft Places.
outlook_calendar_ delete_ placeDelete a place from Microsoft Places (Exchange administrators).
outlook_calendar_ get_ check_ inWhether someone checked in to a place for a reservation: pass the place id and the reservation event's iCalUId.
outlook_calendar_ get_ placeRead one place (building, floor, section, desk, room, workspace) by its id: its own fields, e.g. a room's capacity, emailAddress and devices.
outlook_calendar_ get_ room_ listRead one room list (displayName, emailAddress, address).
outlook_calendar_ list_ buildingsList the organization's buildings in Microsoft Places.
outlook_calendar_ list_ desksList the organization's desks in Microsoft Places.
outlook_calendar_ list_ floorsList the organization's floors in Microsoft Places.
outlook_calendar_ list_ place_ descendantsEvery place of one type under a place, e.g. all rooms in a building or all desks on a floor (up to 2,500).
outlook_calendar_ list_ room_ list_ roomsList the rooms in one room list (often one building): displayName, emailAddress, capacity.
outlook_calendar_ list_ room_ list_ workspacesList the workspaces in one room list: displayName, emailAddress, capacity.
outlook_calendar_ list_ room_ listsList the organization's room lists (groups of rooms, often one per building): displayName and emailAddress.
outlook_calendar_ list_ sectionsList the organization's sections (areas of a floor) in Microsoft Places.
outlook_calendar_ list_ workspacesList the organization's bookable workspaces (desk pools): displayName, emailAddress, capacity, mode.
outlook_calendar_ update_ placeChange a place's details (name, capacity, tags, address, devices...).
outlook_calendar_ delete_ building_ mapDelete a building's map from Microsoft Places (Exchange administrators).
outlook_calendar_ delete_ level_ fixtureDelete a fixture from a building map level (Exchange administrators).
outlook_calendar_ delete_ level_ sectionDelete a section from a building map level (Exchange administrators).
outlook_calendar_ delete_ level_ unitDelete an unit from a building map level (Exchange administrators).
outlook_calendar_ get_ building_ mapA building's map in Microsoft Places.
outlook_calendar_ ingest_ building_ mapUpload a building's indoor map to Microsoft Places: the IMDF map files as one base64 ZIP (file).
outlook_calendar_ list_ building_ footprintsA building map's footprints (IMDF footprint features: the building's outline).
outlook_calendar_ list_ building_ levelsA building map's levels (IMDF level features, one per floor): their ids for the unit, fixture and section tools.
outlook_calendar_ list_ level_ fixturesThe fixtures (furniture, equipment) on one level of a building map.
outlook_calendar_ list_ level_ sectionsThe sections (zones) on one level of a building map.
outlook_calendar_ list_ level_ unitsThe units (rooms, offices) on one level of a building map, each linked to its place.
outlook_calendar_ upsert_ level_ fixtureCreate or update a fixture on a building map level (IMDF; Exchange administrators).
outlook_calendar_ upsert_ level_ sectionCreate or update a section on a building map level (IMDF; Exchange administrators).
outlook_calendar_ upsert_ level_ unitCreate or update an unit on a building map level, e.g. link it to a room: { "placeId": "ROOM_PLACE_ID" } (IMDF; Exchange administrators).
outlook_calendar_ add_ event_ attachmentAttach a file under 3 MB (or a link) to an event.
outlook_calendar_ count_ calendar_ groupsCount the user's calendar groups.
outlook_calendar_ count_ event_ attachmentsCount an event's attachments.
outlook_calendar_ count_ group_ calendarsCount the calendars in a calendar group.
outlook_calendar_ create_ calendar_ groupCreate a calendar group.
outlook_calendar_ create_ event_ attachment_ upload_ sessionStart uploading a file of 3 MB to 150 MB to an event.
outlook_calendar_ create_ group_ calendarCreate a calendar inside a calendar group.
outlook_calendar_ delete_ calendar_ groupDelete a calendar group (not the default one).
outlook_calendar_ delete_ event_ attachmentRemove an attachment from an event.
outlook_calendar_ get_ calendar_ groupRead one calendar group.
outlook_calendar_ get_ event_ attachmentRead one attachment's details, and a small file's base64 contentBytes (large contents are left out).
outlook_calendar_ get_ event_ attachment_ contentThe raw content of an event attachment: a text file or an attached email as text; for PDFs, images and Office files use outlook_calendar_read_attachment, which decodes what it can.
outlook_calendar_ list_ calendar_ groupsList the user's calendar groups (how Outlook groups calendars, e.g. My Calendars, Other Calendars): id and name.
outlook_calendar_ list_ group_ calendarsList the calendars in one calendar group.
outlook_calendar_ update_ calendar_ groupRename a calendar group: { "name": "New name" }.
outlook_calendar_ count_ calendarsCount the user's calendars.
outlook_calendar_ delete_ calendarDelete a calendar and the events on it.
outlook_calendar_ list_ calendar_ changesTrack which calendars were added, renamed or deleted: the first round returns every calendar, later rounds only the changes (deleted ones carry @removed).
outlook_calendar_ permanently_ delete_ calendarPermanently delete a calendar and its events: they cannot be recovered.
outlook_calendar_ update_ calendarRename a calendar or change its color.
outlook_calendar_ count_ calendar_ permissionsCount a calendar's sharing entries.
outlook_calendar_ count_ categoriesCount the user's Outlook categories.
outlook_calendar_ count_ event_ extensionsCount the open extensions on an event.
outlook_calendar_ create_ categoryCreate an Outlook category: { "displayName": "Client meetings", "color": "preset4" }.
outlook_calendar_ create_ event_ extensionStore custom data on an event as an open extension: { "extensionName": "Com.Contoso.Referral", ...your fields }.
outlook_calendar_ create_ subscriptionHave Microsoft call an HTTPS webhook when events change.
outlook_calendar_ delete_ categoryDelete an Outlook category.
outlook_calendar_ delete_ event_ extensionDelete an open extension from an event.
outlook_calendar_ delete_ subscriptionDelete a subscription: Microsoft stops calling its webhook.
outlook_calendar_ get_ calendar_ permissionRead one sharing entry of a calendar: who, role, allowedRoles.
outlook_calendar_ get_ categoryRead one Outlook category (name and color).
outlook_calendar_ get_ event_ extensionRead one open extension on an event, by its extensionName.
outlook_calendar_ get_ subscriptionRead one subscription (resource, changeType, notificationUrl, expirationDateTime).
outlook_calendar_ list_ event_ extensionsList the open extensions (custom app data) stored on an event.
outlook_calendar_ list_ subscriptionsList the change-notification subscriptions this app holds for the signed-in user.
outlook_calendar_ reauthorize_ subscriptionReauthorize a subscription after Microsoft sent a reauthorizationRequired lifecycle notification.
outlook_calendar_ remove_ calendar_ permissionStop sharing a calendar with someone, or remove a delegate.
outlook_calendar_ renew_ subscriptionRenew a subscription before it expires: { "expirationDateTime": "..." } (under 7 days ahead for calendar), or change its notificationUrl.
outlook_calendar_ update_ calendar_ permissionChange the role of someone a calendar is shared with, e.g. { "role": "write" }.
outlook_calendar_ update_ categoryChange an Outlook category's color: { "color": "preset7" } (the name cannot change).
outlook_calendar_ update_ event_ extensionUpdate an open extension on an event: the fields sent replace the stored data.
outlook_calendar_ list_ supported_ languagesThe languages and locales the mailbox supports.
outlook_calendar_ list_ supported_ time_ zonesThe time zones the mailbox's server supports, as Windows names (alias and displayName).
outlook_calendar_ list_ supported_ time_ zones_ by_ standardThe supported time zones in one naming standard: Windows (Pacific Standard Time) or Iana.
outlook_calendar_ update_ mailbox_ settingsChange the mailbox's time zone, working hours, date or time format, or how delegates receive meeting messages.
outlook_calendar_ list_ remindersThe reminders that fire between two times: each event's subject, start, end, location and when its reminder fires.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Outlook Calendar side.
Register an app in the Microsoft Entra admin center with Any Entra ID Tenant + Personal Microsoft accounts, add PopMCP's Redirect URI under Authentication as a Web platform, copy the Application (client) ID and a client secret Value into PopMCP, then click Sign in with Microsoft and approve access on Microsoft's own page.
00001111-aaaa-2222-bbbb-3333cccc4444••••••••••••3f7aLeave empty unless your app is single tenantcreate_event, update_event, cancel_event and delete_event act the moment the AI calls them, and Outlook emails the attendees right away. New connections start read-only, only clients ticked on the PopMCP consent screen reach your calendar, and other people's calendars stay out of reach unless they shared them with you.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Outlook Calendar credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
What is on my calendar this week, and where are the gaps?
outlook_calendar_get_agendaok
Then just ask for the work
“What is on my calendar this week, and where are the gaps?”
“Book a 30 minute call with Priya and Sam next week when all three of us are free, with a Teams link”
“Move tomorrow's design review to Thursday at 2pm and keep everyone invited”
“Accept Dana's planning meeting and decline Friday's all hands with a note that I am on leave”
“Find a free meeting room for eight people tomorrow at 10am for an hour”
“Share my calendar with my assistant so they can add and change events”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Outlook Calendar behind an AI client.
Sign in with Microsoft and approve access on Microsoft's own page, so your password never reaches PopMCP. Today that sign-in runs through an app you register once in the Microsoft Entra admin center: pick Any Entra ID Tenant + Personal Microsoft accounts, add PopMCP's Redirect URI under Authentication as a Web platform, then copy the Application (client) ID and a client secret Value into the connect form. Tokens renew on their own after that.
Yes. Work or school accounts on Microsoft 365 and personal Microsoft accounts (Outlook.com, Hotmail, Live) both connect, and the everyday calendar, event, invitation, sharing and category tools work for both. Microsoft keeps a few things to work or school accounts: other people's free/busy (get_schedule, find_meeting_times), rooms and Microsoft Places, and naming another person's calendar. A calendar someone shared with a personal account still shows up in list_calendars.
Yes. Times come back in the time zone set in your Outlook, or in one you name, and the AI can write plain local times, IANA or Windows zone names, or words like today, tomorrow, this week and next month. Windows across a daylight saving change land on the right hour. Recurring meetings take a plain RRULE or words like weekly or weekdays, and list_calendar_view returns each occurrence.
With a work or school account, yes. find_free_time checks your calendar and your colleagues' free/busy inside working hours, and find_meeting_times asks Outlook for its own suggestions. Inviting a room by its address books it like any attendee. To list rooms and check which are free with find_available_rooms, tick Rooms and places under More options when you connect; an administrator must approve that permission once.
Yes, when that person shared their calendar with you or made you their delegate in Outlook, on a work or school account. Tick Shared and delegated calendars under More options and tools take a calendarOwner input, or enter their address under Someone else's calendar and the whole connection becomes their calendar, refusing any other. A personal account uses a shared calendar by its id from list_calendars.
Many organizations only let people approve apps from verified publishers, or none at all. The permissions Outlook Calendar asks for by default need no administrator by Microsoft's rules, but your organization's settings win. Rooms and places, and Manage buildings, rooms and desks, always need an admin. An admin approves once for everyone: in the Entra admin center open Entra ID, Enterprise apps, pick the app, then Permissions and Grant admin consent.
14 in total. Instant notifications for an event created, changed or deleted. Polling for a meeting invitation received, a meeting cancelled by its organizer, an attendee's response, an online meeting scheduled, out of office scheduled and an event starting soon. Change detection for a calendar added, calendar sharing changed, a new color category and working hours or time zone changed. One threshold fires when a day's meetings add up to more hours than you set.
36 everyday tools load by default, including the 9 that do several steps at once: get_agenda, search_events, find_free_time, reschedule_event, update_attendees, find_available_rooms, read_attachment, attach_files and batch_read. All 105 operations stay reachable through search_tools, describe_tool and raw_operation, 57 that read and 48 that write, from calendar groups and reminders to change tracking, subscriptions and Microsoft Places maps.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Outlook Calendar in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Outlook Calendar on the consent screen. The Outlook Calendar tools are then available in that session, and no Outlook Calendar credential is stored on your machine.
Loading 114 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 32-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 114 here. A trigger is something PopMCP watches for you: 14 Outlook Calendar events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Outlook Calendar.
Launch a hosted MCP endpoint for Outlook Calendar, keep tool access under control, and start testing real workflow prompts right away.