---
title: "Microsoft 365 Calendar MCP server for AI agents - actionlake"
description: "Give Claude 105 Microsoft 365 Calendar actions through one MCP server: events, rooms. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/microsoft-365-calendar
updated: 2026-09-21
---

Connectors · Workspace

# Microsoft 365 Calendar MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Microsoft 365 Calendar and the rest of your systems. It gives your agent 105 Microsoft 365 Calendar actions (61 reads, 30 writes and 14 that wait for a confirmation) and holds the Microsoft 365 Calendar credential itself, so the agent never does. It paces Microsoft 365 Calendar's limits and records every call.

[Connect Microsoft 365 Calendar free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "m365_graph_calendar.rooms.list",
  intent: "check which Microsoft 365 Calendar account is connected"
}
# List bookable rooms · read · 1 upstream call
```

- 105 actions in one signed file
- 61 read look, never change
- 30 write create and update
- 14 wait for a yes destructive, confirmed first

Set up

## Connect Microsoft 365 Calendar in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Microsoft 365 Calendar.
   OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `client_id` Entra application (client) id
   - `client_secret` Entra client secret
   - `tenant_id` Your Microsoft 365 Calendar tenant id
   ```
   account { op: "connections.requirements", service: "m365_graph_calendar" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "m365_graph_calendar.rooms.list" }
   # list bookable rooms · read · 1 upstream call
   check { action: "m365_graph_calendar.events.delete", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Microsoft 365 Calendar at a glance

**Sign-in**

OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in.

**You provide**

`client_id` `client_secret`

**Setup fields**

`tenant_id`

**Limits we pace to**

10,000 calls per 10 minutes, per connection

**API covered**

Microsoft 365 Calendar API v1.0`graph.microsoft.com/v1.0`

**Built from**

Microsoft 365 Calendar's documentation, read 8 September 2026[learn.microsoft.com](https://learn.microsoft.com/en-us/graph/api/overview)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

61 of 61 reads, for up to an hour; a write clears what it affects

**Ready-made plans**

8 in the store

**Shared entities**

1, so ask can line Microsoft 365 Calendar up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Microsoft 365 Calendar.

105 actions in 1 area. Every one carries its effect, so a key can allow the reads and hold the rest.

- **61** read look, never change
- **30** write create and update
- **14** destructive wait for a confirmation

1. ### Calendar
   105
   61 read · 30 write · 14 destructive
   List events on the default calendar · Track event on the default calendar, addressed explicitly changes · List events on the default calendar, addressed explicitly · Track changes in the calendar view (calendar view)

Top actions

## The Microsoft 365 Calendar API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 33 of Microsoft 365 Calendar's 37 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `m365_graph_calendar.events.list` List events on the default calendar | List events on the default calendar for a mailbox. | read | `comm.event.list` 61 connectors |
| `m365_graph_calendar.events.delta` Track event on the default calendar changes | Changes to events on the default calendar since a delta token, for incremental sync. | read | `comm.event.list` 61 connectors |
| `m365_graph_calendar.rooms.list` List bookable rooms | Every bookable room published in the tenant's directory of places. | read | `comm.bookable_room.list` 2 connectors |
| `m365_graph_calendar.events.delete` Delete an event on the default calendar | Delete one event on the default calendar. Graph answers 204 with an empty body. | destructive | `comm.event.delete` 45 connectors |
| `m365_graph_calendar.room_lists.list` List room lists | Every room list published in the tenant's directory of places. | read | `comm.bookable_room.list` 2 connectors |
| `m365_graph_calendar.scheduling.reminder_view` List reminders due in a window | Every calendar reminder falling between two times. | read | `comm.notification.list` 19 connectors |
| `m365_graph_calendar.calendars.list` List calendars | List calendars for a mailbox. | read | `comm.calendar.list` 14 connectors |
| `m365_graph_calendar.calendar_groups.list` List calendar groups | List calendar groups for a mailbox. | read | `comm.calendar.list` 14 connectors |
| `m365_graph_calendar.scheduling.get_schedule` Get free/busy for a set of mailboxes | Read availability for up to 20 mailboxes or rooms over a window. | read | `comm.availability.query` 5 connectors |
| `m365_graph_calendar.events.snooze_reminder` Snooze an event reminder | Postpone an event's reminder to a later time. | write | `comm.notification.update` 10 connectors |
| `m365_graph_calendar.events.accept` Accept a meeting invitation | Accept a meeting invitation on behalf of the mailbox owner. | write | `comm.event_attendee.update` 9 connectors |
| `m365_graph_calendar.events.decline` Decline a meeting invitation | Decline a meeting invitation on behalf of the mailbox owner. | write | `comm.event_attendee.update` 9 connectors |

Try it

## Prompts to paste into Claude.

Each one names the Microsoft 365 Calendar actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   What is on the Microsoft 365 Calendar calendar this week?
   calls `m365_graph_calendar.events.list`
2. Plan write
   Stand up a shared project calendar in Microsoft 365 Calendar.
   calls `m365_graph_calendar.calendar_groups.create` `m365_graph_calendar.calendar_group_calendars.create` `m365_graph_calendar.named_calendar_permissions.create` `m365_graph_calendar.named_calendar_permissions.list` `m365_graph_calendar.calendar_group_calendars.list`
3. Plan destructive
   Empty and delete a retired calendar in Microsoft 365 Calendar. Ask me before anything is sent or changed.
   calls `m365_graph_calendar.calendars.get` `m365_graph_calendar.named_calendar_events.count` `m365_graph_calendar.named_calendar_events.list` `m365_graph_calendar.named_calendar_events.delete` `m365_graph_calendar.calendars.delete`
4. Write write
   Snooze an event reminder in Microsoft 365 Calendar. Show me exactly what you will send before you save it.
   calls `m365_graph_calendar.events.snooze_reminder`

The plan store

## Ready-made plans for Microsoft 365 Calendar.

8 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

1. ### Build a daily agenda digest for one person
   Use it when Someone wants a complete picture of what is on a person's calendar for a day or a short window.
   **Effect**
   read
   **Steps**
   4 · loops
   **Needs**
   end date time, start date time and user id
   **Install**
   `m365_graph_calendar-daily-agenda-digest`
2. ### Audit how hard the meeting rooms are working
   Use it when Someone wants to know which meeting rooms are being used and which are sitting idle.
   **Effect**
   read
   **Steps**
   4 · loops
   **Needs**
   end date time, room list id, schedules, start date time and user id
   **Install**
   `m365_graph_calendar-room-booking-audit`
3. ### Accept the pending invites in a window
   Use it when A mailbox has a backlog of unanswered meeting invitations that should all be accepted.
   **Effect**
   write
   **Steps**
   3 · loops
   **Needs**
   comment, end date time, start date time and user id
   **Install**
   `m365_graph_calendar-triage-meeting-invites`
4. ### Find a free slot and book the meeting
   Use it when A meeting needs to be scheduled with several people and no time has been agreed yet.
   **Effect**
   write
   **Steps**
   4
   **Needs**
   attendees, meeting duration, schedules, subject, user id, window end and window start
   **Install**
   `m365_graph_calendar-find-time-and-book`
5. ### Stand up a shared project calendar
   Use it when A new project or team needs its own calendar with someone granted access to it.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   calendar name, group name, role, share with and user id
   **Install**
   `m365_graph_calendar-provision-project-calendar`
6. ### Move a recurring series after checking the instances
   Use it when A recurring meeting needs to move to a new time and the impact on existing instances must be checked first.
   A person decides Move the series '_subject_' to _new start_, which re-issues invitations for every remaining instance.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   event id, new end, new start, schedules, time zone, user id, window end and window start
   **Install**
   `m365_graph_calendar-reschedule-recurring-series`
7. ### Cancel a meeting after a human signs off
   Use it when A meeting must be cancelled and attendees notified, and a person should sign off before the notice goes out.
   A person decides Cancel '_subject_' starting _dateTime_ and email the cancellation notice to every attendee.
   **Effect**
   destructive
   **Steps**
   4
   **Needs**
   comment, event id and user id
   **Install**
   `m365_graph_calendar-cancel-meeting-with-approval`
8. ### Empty and delete a retired calendar
   Use it when A calendar is being decommissioned and its events plus the calendar itself must be removed.
   A person decides Permanently delete _count_ events and then the calendar '_name_' itself. This cannot be undone.
   **Effect**
   destructive
   **Steps**
   6 · loops
   **Needs**
   calendar id and user id
   **Install**
   `m365_graph_calendar-purge-stale-calendar`

install a plan

```
account { op: "plans.install", slug: "m365_graph_calendar-daily-agenda-digest" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for Microsoft 365 Calendar

## Destructive actions wait for a yes.

14 Microsoft 365 Calendar actions are destructive. These are all of them:

- Delete an event on the default calendar `m365_graph_calendar.events.delete`
- Delete an event on the default calendar, addressed explicitly `m365_graph_calendar.calendar_events.delete`
- Permanently delete an event `m365_graph_calendar.events.permanent_delete`
- Delete an event on a calendar inside a calendar group `m365_graph_calendar.group_calendar_events.delete`
- Delete an event on one named calendar `m365_graph_calendar.named_calendar_events.delete`
- Cancel a meeting `m365_graph_calendar.events.cancel`
- Delete a calendar `m365_graph_calendar.calendars.delete`
- Delete a calendar group `m365_graph_calendar.calendar_groups.delete`
- Permanently delete a calendar `m365_graph_calendar.calendars.permanent_delete`
- Delete a calendar in a group `m365_graph_calendar.calendar_group_calendars.delete`
- Delete an event attachment `m365_graph_calendar.event_attachments.delete`
- Delete an event attachment `m365_graph_calendar.calendar_event_attachments.delete`
- Delete a calendar permission `m365_graph_calendar.calendar_permissions.delete`
- Delete a calendar permission `m365_graph_calendar.named_calendar_permissions.delete`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do m365_graph_calendar.events.delete confirm_policy: **human**

Delete an event on the default calendar?

**intent:** the user asked me to delete an event on the default calendar

run suspended · waiting for a named person · key _m365-graph-calendar-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "m365-graph-calendar-agent",
  allowed_actions: ["m365_graph_calendar.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "m365_graph_calendar.events.delete", approver: "lead@example.com" },
    { match: "m365_graph_calendar.calendar_events.delete", approver: "lead@example.com" },
    { match: "m365_graph_calendar.events.permanent_delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Microsoft 365 Calendar only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Microsoft 365 Calendar costs on actionlake.

Every Microsoft 365 Calendar action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Microsoft 365 Calendar refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 105 Microsoft 365 Calendar actions
- 105 actions page each page of a long list is one call
- 61 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Microsoft 365 Calendar action.

105 actions by area: the id your agent calls, what it does, and its effect.

**Calendar 105**

- `m365_graph_calendar.calendar_event_attachments.count` Count attachments on an event read
- `m365_graph_calendar.calendar_event_attachments.delete` Delete an event attachment destructive
- `m365_graph_calendar.calendar_event_attachments.get` Get an event attachment read
- `m365_graph_calendar.calendar_event_attachments.list` List attachments on an event read
- `m365_graph_calendar.calendar_events.count` Count events on the default calendar, addressed explicitly read
- `m365_graph_calendar.calendar_events.create` Create an event on the default calendar, addressed explicitly write
- `m365_graph_calendar.calendar_events.delete` Delete an event on the default calendar, addressed explicitly destructive
- `m365_graph_calendar.calendar_events.delta` Track event on the default calendar, addressed explicitly changes read
- `m365_graph_calendar.calendar_events.get` Get an event on the default calendar, addressed explicitly read
- `m365_graph_calendar.calendar_events.list` List events on the default calendar, addressed explicitly read
- `m365_graph_calendar.calendar_events.update` Update an event on the default calendar, addressed explicitly write
- `m365_graph_calendar.calendar_group_calendars.count` Count calendars in a calendar group read
- `m365_graph_calendar.calendar_group_calendars.create` Create a calendar in a group write
- `m365_graph_calendar.calendar_group_calendars.delete` Delete a calendar in a group destructive
- `m365_graph_calendar.calendar_group_calendars.get` Get a calendar in a group read
- `m365_graph_calendar.calendar_group_calendars.list` List calendars in a calendar group read
- `m365_graph_calendar.calendar_group_calendars.update` Update a calendar in a group write
- `m365_graph_calendar.calendar_groups.count` Count calendar groups read
- `m365_graph_calendar.calendar_groups.create` Create a calendar group write
- `m365_graph_calendar.calendar_groups.delete` Delete a calendar group destructive
- `m365_graph_calendar.calendar_groups.get` Get a calendar group read
- `m365_graph_calendar.calendar_groups.list` List calendar groups read
- `m365_graph_calendar.calendar_groups.update` Update a calendar group write
- `m365_graph_calendar.calendar_permissions.count` Count permissions on a calendar read
- `m365_graph_calendar.calendar_permissions.create` Create a calendar permission write
- `m365_graph_calendar.calendar_permissions.delete` Delete a calendar permission destructive
- `m365_graph_calendar.calendar_permissions.get` Get a calendar permission read
- `m365_graph_calendar.calendar_permissions.list` List permissions on a calendar read
- `m365_graph_calendar.calendar_permissions.update` Update a calendar permission write
- `m365_graph_calendar.calendar_view.delta` Track changes in the calendar view (calendar view) read
- `m365_graph_calendar.calendar_view.list` List the calendar view over the whole mailbox read
- `m365_graph_calendar.calendars.allowed_sharing_roles` List the sharing roles a user may be given read
- `m365_graph_calendar.calendars.count` Count calendars read
- `m365_graph_calendar.calendars.create` Create a calendar write
- `m365_graph_calendar.calendars.delete` Delete a calendar destructive
- `m365_graph_calendar.calendars.get` Get a calendar read
- `m365_graph_calendar.calendars.get_default` Get the default calendar read
- `m365_graph_calendar.calendars.list` List calendars read
- `m365_graph_calendar.calendars.permanent_delete` Permanently delete a calendar destructive
- `m365_graph_calendar.calendars.update` Update a calendar write
- `m365_graph_calendar.calendars.update_default` Update the default calendar write
- `m365_graph_calendar.default_calendar_view.delta` Track changes in the calendar view (default calendar view) read
- `m365_graph_calendar.default_calendar_view.list` List the calendar view over the default calendar read
- `m365_graph_calendar.event_attachments.count` Count attachments on an event read
- `m365_graph_calendar.event_attachments.create` Attach a file to an event write
- `m365_graph_calendar.event_attachments.create_upload_session` Start a large event attachment upload write
- `m365_graph_calendar.event_attachments.delete` Delete an event attachment destructive
- `m365_graph_calendar.event_attachments.get` Get an event attachment read
- `m365_graph_calendar.event_attachments.get_raw` Download an event attachment's bytes read
- `m365_graph_calendar.event_attachments.list` List attachments on an event read
- `m365_graph_calendar.event_exception_occurrences.list` List modified occurrences of a recurring event read
- `m365_graph_calendar.event_extended_properties.multi_list` List multi-value extended properties on an event read
- `m365_graph_calendar.event_extended_properties.single_list` List single-value extended properties on an event read
- `m365_graph_calendar.event_extensions.list` List open extensions on an event read
- `m365_graph_calendar.event_instances.get` Get one occurrence of a recurring event read
- `m365_graph_calendar.event_instances.list` List occurrences of a recurring event read
- `m365_graph_calendar.events.accept` Accept a meeting invitation write
- `m365_graph_calendar.events.cancel` Cancel a meeting destructive
- `m365_graph_calendar.events.count` Count events on the default calendar read
- `m365_graph_calendar.events.create` Create an event on the default calendar write
- `m365_graph_calendar.events.create_raw` Create an event from a raw Graph event object write
- `m365_graph_calendar.events.decline` Decline a meeting invitation write
- `m365_graph_calendar.events.delete` Delete an event on the default calendar destructive
- `m365_graph_calendar.events.delta` Track event on the default calendar changes read
- `m365_graph_calendar.events.dismiss_reminder` Dismiss an event reminder write
- `m365_graph_calendar.events.forward` Forward a meeting invitation write
- `m365_graph_calendar.events.get` Get an event on the default calendar read
- `m365_graph_calendar.events.list` List events on the default calendar read
- `m365_graph_calendar.events.permanent_delete` Permanently delete an event destructive
- `m365_graph_calendar.events.search` Search calendar events read
- `m365_graph_calendar.events.snooze_reminder` Snooze an event reminder write
- `m365_graph_calendar.events.tentatively_accept` Tentatively accept a meeting invitation write
- `m365_graph_calendar.events.update` Update an event on the default calendar write
- `m365_graph_calendar.events.update_raw` Update an event from a raw Graph event object write
- `m365_graph_calendar.group_calendar_events.count` Count events on a calendar inside a calendar group read
- `m365_graph_calendar.group_calendar_events.create` Create an event on a calendar inside a calendar group write
- `m365_graph_calendar.group_calendar_events.delete` Delete an event on a calendar inside a calendar group destructive
- `m365_graph_calendar.group_calendar_events.get` Get an event on a calendar inside a calendar group read
- `m365_graph_calendar.group_calendar_events.list` List events on a calendar inside a calendar group read
- `m365_graph_calendar.group_calendar_events.update` Update an event on a calendar inside a calendar group write
- `m365_graph_calendar.group_calendar_view.list` List the calendar view over a calendar inside a group read
- `m365_graph_calendar.named_calendar_events.count` Count events on one named calendar read
- `m365_graph_calendar.named_calendar_events.create` Create an event on one named calendar write
- `m365_graph_calendar.named_calendar_events.delete` Delete an event on one named calendar destructive
- `m365_graph_calendar.named_calendar_events.delta` Track event on one named calendar changes read
- `m365_graph_calendar.named_calendar_events.get` Get an event on one named calendar read
- `m365_graph_calendar.named_calendar_events.list` List events on one named calendar read
- `m365_graph_calendar.named_calendar_events.update` Update an event on one named calendar write
- `m365_graph_calendar.named_calendar_permissions.count` Count permissions on a calendar read
- `m365_graph_calendar.named_calendar_permissions.create` Create a calendar permission write
- `m365_graph_calendar.named_calendar_permissions.delete` Delete a calendar permission destructive
- `m365_graph_calendar.named_calendar_permissions.get` Get a calendar permission read
- `m365_graph_calendar.named_calendar_permissions.list` List permissions on a calendar read
- `m365_graph_calendar.named_calendar_permissions.update` Update a calendar permission write
- `m365_graph_calendar.named_calendar_view.list` List the calendar view over one named calendar read
- `m365_graph_calendar.places.get` Get a place read
- `m365_graph_calendar.places.update` Update a place write
- `m365_graph_calendar.room_lists.list` List room lists read
- `m365_graph_calendar.room_lists.rooms` List the rooms in a room list read
- `m365_graph_calendar.room_lists.workspaces` List the workspaces in a room list read
- `m365_graph_calendar.rooms.list` List bookable rooms read
- `m365_graph_calendar.scheduling.find_meeting_times` Find a time everyone can meet read
- `m365_graph_calendar.scheduling.get_schedule` Get free/busy for a set of mailboxes read
- `m365_graph_calendar.scheduling.get_schedule_for_calendar` Get free/busy for a set of mailboxes read
- `m365_graph_calendar.scheduling.reminder_view` List reminders due in a window read

Questions

## The Microsoft 365 Calendar MCP server, answered.

**Is there a Microsoft 365 Calendar MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 105 Microsoft 365 Calendar actions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Microsoft 365 Calendar.

**What do I need to connect Microsoft 365 Calendar?**

Entra application (client) id and Entra client secret. Plus your tenant id. The free call account { op: "connections.requirements", service: "m365_graph_calendar" } lists exactly what to paste.

**Can an AI agent delete or change things in Microsoft 365 Calendar?**

Only if its key allows it, and only with an explicit confirmation. 14 Microsoft 365 Calendar actions are destructive, including delete an event on the default calendar, delete an event on the default calendar, addressed explicitly and permanently delete an event. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Microsoft 365 Calendar API limit?**

actionlake paces every call to the limits in the Microsoft 365 Calendar service file: 10,000 calls per 10 minutes per connection. Repeated reads are answered from cache (61 Microsoft 365 Calendar actions can be), which never reaches Microsoft 365 Calendar.

**What does a Microsoft 365 Calendar action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (105 Microsoft 365 Calendar actions page). Cache hits, searches, dry runs and calls Microsoft 365 Calendar refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Microsoft 365 Calendar API does it cover?**

The Microsoft 365 Calendar API v1.0 at graph.microsoft.com/v1.0. It is built from Microsoft 365 Calendar's documentation as read on 8 September 2026. 105 actions in 1 area, each one in the signed service file (version 1.0.0).

**Does actionlake keep my Microsoft 365 Calendar data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Microsoft 365 Calendar credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Microsoft 365 Calendar

Shares the most action names with

- [Google Calendar 18](https://actionlake.com/connectors/google-calendar)
- [Recall.ai 7](https://actionlake.com/connectors/recall-ai)
- [Planning Center 2](https://actionlake.com/connectors/planning-center)

Joins with, on shared entities

- [HaloPSA 1](https://actionlake.com/connectors/halopsa)
- [HubSpot CRM 1](https://actionlake.com/connectors/hubspot-crm)
- [Salesforce Sales Cloud 1](https://actionlake.com/connectors/salesforce-sales-cloud)
- [Canvas LMS 1](https://actionlake.com/connectors/canvas-lms)
- [Odoo 1](https://actionlake.com/connectors/odoo)
- [Unified.to 1](https://actionlake.com/connectors/unified-to)

Browse

- [All Workspace connectors](https://actionlake.com/connectors/category/workspace)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Microsoft 365 Calendar; the name is the vendor's own. Counts are from the Microsoft 365 Calendar service file, version 1.0.0.

## Give your agent Microsoft 365 Calendar today.

[Connect Microsoft 365 Calendar free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/microsoft-365-calendar
More: https://actionlake.com/llms.txt
