Outlook Calendar
Connect a Microsoft 365 calendar so assistants can read and book meetings on it and react when events change.
An Outlook Calendar integration connects a person's or business-owned Microsoft 365 calendar to Mobius. Assistants can list what is on it, book a meeting, move or cancel one, and ask when a group of people is free. When something on that calendar changes, Mobius records a source event that a routine or trigger can react to.
Use it when the work involves meetings: an assistant that books the follow-up call a support thread asked for, one that posts tomorrow's schedule every evening, or one that watches for a cancelled customer meeting and tells the account owner.
For the sign-in, consent, and disconnect rules this provider shares with the rest of the Microsoft 365 family, see Microsoft integrations.
Capability map
| Capability | Value |
|---|---|
| Provider ID | outlook_calendar |
| Auth kind | oauth2_user |
| Connect flow | Microsoft user grant or application consent |
| Actions | Yes |
| Events | Yes |
| Webhook delivery | Yes |
| Live status | Yes |
Connect Outlook Calendar
| Surface | Support |
|---|---|
| App | Open Build > Integrations, choose Outlook Calendar, then sign in and pick the work account whose calendar you want. |
| CLI | The mobius CLI does not connect Outlook Calendar integrations yet. Use the app or API. |
| API | Call POST /v1/integrations/providers/outlook_calendar/connect with an empty JSON body, then send the person to the returned Microsoft URL. |
For delegated sign-in, Account manager defaults to You. An organization administrator can choose Your team before connecting. Either choice still acts as the Microsoft account selected on the account chooser. Connecting a second account adds a second connection rather than replacing the first, and reconnecting refreshes the connection that account already has. Mobius matches on the account's directory object ID, so a name or email change keeps the connection intact.
Microsoft always shows the account chooser, even when the browser is already signed in to a work account. Pick deliberately: the account you choose is the one every action runs as.
For a calendar the business owns, an organization administrator can create an application connection through the API:
{
"controller": { "kind": "organization" },
"auth_mode": "application",
"mailbox": "bookings@contoso.com"
}This connection runs with the Entra application's grant and belongs to the
organization. It requires application Calendars.ReadWrite permission and a
prior delegated Outlook or Outlook Calendar connection to establish the tenant.
See Microsoft integrations
for consent and mailbox access controls. The calendar app connect screen still
uses the delegated flow.
On connect, Mobius creates a change subscription for that account's default calendar and records where the calendar stood, so a later outage has a point to catch up from. Microsoft expires these subscriptions on a schedule of its own, and a lapsed one cannot be extended, only replaced. Mobius therefore renews each one with hours to spare rather than at the last moment.
After connecting, open the account's Assistant access section and grant it to selected assistants. A personal grant limits use of the calendar and retention of its tool results to the manager's Mobius audience. A team-managed calendar can be available to the team or named people. That audience does not restrict meeting attendees. Adding Outlook Calendar tools does not grant the account.
Your Microsoft administrator may need to approve Mobius first
Calendar read and write access is not one of the permissions a Microsoft 365 tenant hands out on an individual's say-so, so the first person to connect may be told to ask an administrator. See administrator approval for what that approval covers and who can give it.
Permissions
Mobius requests Calendars.ReadWrite, which covers reading events, writing
them, and the change subscription. It also requests User.Read to learn the
account's name and address for display.
Free/busy answers are limited to what the connected account can already see. Asking about a colleague whose calendar is not shared returns that person's row with an error on it rather than failing the whole lookup, so a request covering five people still answers for the four it can read.
Events
outlook_calendar.event.changedOne event covers the whole life of a calendar entry. Microsoft says which of
the three things happened, and the payload carries it as change_type:
change_type | Sent when |
|---|---|
created | An event was added to the watched calendar. |
updated | An existing event changed, including being cancelled by its organizer. |
deleted | An event was removed from the calendar. |
A created or updated payload carries the event's subject, start, end,
location, organizer, attendees, free/busy marking, join URL, web link, and
timestamps. A deleted payload carries only the calendar and the event ID,
because the event no longer exists to read.
Filter on change_type when a routine cares about one kind of change. A
routine that welcomes new bookings wants created; one that alerts on
cancellations wants updated with is_cancelled true, plus deleted.
Actions
outlook_calendar.calendar.list
outlook_calendar.event.create
outlook_calendar.event.delete
outlook_calendar.event.get
outlook_calendar.event.list
outlook_calendar.event.update
outlook_calendar.freebusy.queryEvery action works on the account's default calendar unless the input names a
calendar_id, in which case it works on that calendar if the account can see
it.
Use outlook_calendar.calendar.list to discover the calendar IDs visible to the
connected account.
outlook_calendar.event.update changes only the fields it is given. Sending
just a new subject leaves the times, attendees, and body exactly as they
were.
outlook_calendar.event.delete is marked destructive because deleting an event
the connected account organizes cancels it for everyone who was invited.
Creating, updating, or deleting an event runs without an automatic Mobius confirmation. Dispatch still rechecks the exact selected calendar connection and assistant grant. If the instructions require human review, the assistant can open an interaction, but that review does not enforce the later Calendar call.
outlook_calendar.event.list returns each occurrence of a recurring meeting
when the input gives both time_min and time_max. Without both bounds it
returns the series itself as a single entry, which is rarely what you want for
"what is on my calendar next week". Narrow the results further with an OData
filter such as showAs eq 'busy'.
Times come back in UTC. When writing an event you can supply either a full
RFC 3339 timestamp such as 2026-09-10T14:00:00Z, which Mobius converts, or a
local time plus a zone name such as America/New_York.
Creating or editing a recurring series is not supported yet. Actions work on single events and on individual occurrences of a series.
Troubleshooting
The live status says the subscription expired
Microsoft expires calendar subscriptions on a fixed schedule. Mobius renews each one before that happens, but a deployment outage or an unreachable callback URL can let one lapse. The renewal runner recreates it on its next pass, and reconnecting does it immediately.
A meeting changed but no event was recorded
Microsoft sends a notification carrying the event's ID, and Mobius then fetches the event itself. If the event was deleted in the moment between those two steps, there is nothing to fetch and nothing is recorded. Recurring series are another case: an edit to one occurrence reports that occurrence, not the whole series.
Nothing arrived while Mobius was down
After a delivery gap Mobius replays the events that changed since its last recorded point, so created and updated events catch up on the next sync. An event that was deleted entirely inside the gap is the exception: it is gone from the calendar, so nothing lists it and no event is recorded for it.
Free/busy came back empty for someone
An empty answer with no error means the calendar was readable and genuinely free. An answer with an error on that row means the connected account cannot see that calendar, which is a sharing setting in Microsoft 365 rather than something Mobius can change. If every row comes back with a permission error, the tenant restricts free/busy sharing across the board and an administrator has to relax it.
Disconnecting did not sign the account out of Microsoft
That is deliberate. Every Mobius Microsoft integration shares one grant per person, so revoking it here would also break that person's Outlook mailbox connection. Disconnecting removes the subscription and the stored credential. See one app registration, one grant per person for how to withdraw the authorization itself.
Next
- Inspect event payloads from the event catalog.
- Manage calendar access in Connect accounts.