# Ms 365 MCP server

Agent View of the PolicyLayer registry record for Ms 365: identity, probed posture, risk grade, and all 194 tools classified. HTML page: https://policylayer.com/tools/jo3zik-ms-365-mcp-server

## Facts

- Server id: `@jo3zik/ms-365-mcp-server`
- Install: `npx -y @jo3zik/ms-365-mcp-server`
- Homepage: https://www.npmjs.com/package/@jo3zik/ms-365-mcp-server
- Registry record: grade F, identity unverified
- Lifecycle: active
- Rate-limited: no
- Tools: 194 (191 with introspected schema)
- Tool categories present: Destructive, Execute, Read, Write
- Context-window cost: 246515 tokens per request — https://policylayer.com/token-cost/jo3zik-ms-365-mcp-server
- Tags: jo3zik ms 365 mcp server, admin, automation
- Record last modified: 2026-09-22T17:23:35.228Z

## Tools (194)

| Tool | Category | Risk | Record |
| --- | --- | --- | --- |
| `cancel-calendar-event` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/cancel-calendar-event.md |
| `clear-excel-range` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/clear-excel-range.md |
| `delete-calendar` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-calendar.md |
| `delete-calendar-event` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-calendar-event.md |
| `delete-contact-folder` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-contact-folder.md |
| `delete-drive-item-permission` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-drive-item-permission.md |
| `delete-excel-range` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-excel-range.md |
| `delete-excel-table-row` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-excel-table-row.md |
| `delete-focused-inbox-override` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-focused-inbox-override.md |
| `delete-mail-attachment` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-mail-attachment.md |
| `delete-mail-folder` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-mail-folder.md |
| `delete-mail-message` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-mail-message.md |
| `delete-mail-rule` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-mail-rule.md |
| `delete-my-calendar-permission` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-my-calendar-permission.md |
| `delete-onedrive-file` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-onedrive-file.md |
| `delete-onenote-page` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-onenote-page.md |
| `delete-outlook-contact` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-outlook-contact.md |
| `delete-planner-bucket` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-planner-bucket.md |
| `delete-planner-task-message` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-planner-task-message.md |
| `delete-specific-calendar-event` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-specific-calendar-event.md |
| `delete-subscription` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-subscription.md |
| `delete-todo-linked-resource` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-todo-linked-resource.md |
| `delete-todo-task` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-todo-task.md |
| `delete-todo-task-list` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/delete-todo-task-list.md |
| `graph-batch` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/graph-batch.md |
| `logout` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/logout.md |
| `remove-account` | Destructive | Critical | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/remove-account.md |
| `parse-teams-url` | Execute | High | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/parse-teams-url.md |
| `tentatively-accept-calendar-event` | Execute | High | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/tentatively-accept-calendar-event.md |
| `dismiss-calendar-event-reminder` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/dismiss-calendar-event-reminder.md |
| `download-bytes` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/download-bytes.md |
| `download-bytes-to-file` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/download-bytes-to-file.md |
| `forward-calendar-event` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/forward-calendar-event.md |
| `get-adhoc-call-transcript-content` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-adhoc-call-transcript-content.md |
| `get-calendar-event` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-calendar-event.md |
| `get-calendar-view` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-calendar-view.md |
| `get-current-user` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-current-user.md |
| `get-download-url` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-download-url.md |
| `get-drive-delta` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-drive-delta.md |
| `get-drive-item` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-drive-item.md |
| `get-drive-root-item` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-drive-root-item.md |
| `get-excel-range` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-excel-range.md |
| `get-excel-range-format` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-excel-range-format.md |
| `get-excel-table` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-excel-table.md |
| `get-excel-used-range` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-excel-used-range.md |
| `get-mail-message` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-mail-message.md |
| `get-mail-message-mime` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-mail-message-mime.md |
| `get-mail-tips` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-mail-tips.md |
| `get-mailbox-settings` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-mailbox-settings.md |
| `get-my-profile` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-my-profile.md |
| `get-onenote-page-content` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-onenote-page-content.md |
| `get-outlook-contact` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-outlook-contact.md |
| `get-planner-bucket` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-planner-bucket.md |
| `get-planner-plan` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-planner-plan.md |
| `get-planner-task` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-planner-task.md |
| `get-planner-task-details` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-planner-task-details.md |
| `get-specific-calendar-event` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-specific-calendar-event.md |
| `get-specific-calendar-view` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-specific-calendar-view.md |
| `get-subscription` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-subscription.md |
| `get-todo-task` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/get-todo-task.md |
| `list-accounts` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-accounts.md |
| `list-adhoc-call-transcripts` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-adhoc-call-transcripts.md |
| `list-all-onenote-sections` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-all-onenote-sections.md |
| `list-calendar-event-instances` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-calendar-event-instances.md |
| `list-calendar-events` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-calendar-events.md |
| `list-calendar-events-delta` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-calendar-events-delta.md |
| `list-calendar-view-delta` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-calendar-view-delta.md |
| `list-calendars` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-calendars.md |
| `list-contact-folder-child-folders` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-contact-folder-child-folders.md |
| `list-contact-folder-contacts` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-contact-folder-contacts.md |
| `list-contact-folders` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-contact-folders.md |
| `list-drive-item-permissions` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-drive-item-permissions.md |
| `list-drive-item-thumbnails` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-drive-item-thumbnails.md |
| `list-drive-item-versions` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-drive-item-versions.md |
| `list-drives` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-drives.md |
| `list-excel-table-rows` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-excel-table-rows.md |
| `list-excel-tables` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-excel-tables.md |
| `list-excel-worksheets` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-excel-worksheets.md |
| `list-focused-inbox-overrides` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-focused-inbox-overrides.md |
| `list-folder-files` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-folder-files.md |
| `list-mail-attachments` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-mail-attachments.md |
| `list-mail-child-folders` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-mail-child-folders.md |
| `list-mail-folder-messages` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-mail-folder-messages.md |
| `list-mail-folder-messages-delta` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-mail-folder-messages-delta.md |
| `list-mail-folders` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-mail-folders.md |
| `list-mail-messages` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-mail-messages.md |
| `list-mail-rules` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-mail-rules.md |
| `list-my-calendar-permissions` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-my-calendar-permissions.md |
| `list-onenote-notebook-sections` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-onenote-notebook-sections.md |
| `list-onenote-notebooks` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-onenote-notebooks.md |
| `list-onenote-pages` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-onenote-pages.md |
| `list-onenote-section-groups` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-onenote-section-groups.md |
| `list-onenote-section-pages` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-onenote-section-pages.md |
| `list-outlook-categories` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-outlook-categories.md |
| `list-outlook-contacts` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-outlook-contacts.md |
| `list-plan-buckets` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-plan-buckets.md |
| `list-plan-tasks` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-plan-tasks.md |
| `list-planner-task-messages` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-planner-task-messages.md |
| `list-planner-tasks` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-planner-tasks.md |
| `list-specific-calendar-events` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-specific-calendar-events.md |
| `list-subscriptions` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-subscriptions.md |
| `list-supported-languages` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-supported-languages.md |
| `list-supported-time-zones` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-supported-time-zones.md |
| `list-todo-linked-resources` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-todo-linked-resources.md |
| `list-todo-task-lists` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-todo-task-lists.md |
| `list-todo-tasks` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/list-todo-tasks.md |
| `search-onedrive-files` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/search-onedrive-files.md |
| `verify-login` | Read | Low | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/verify-login.md |
| `accept-calendar-event` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/accept-calendar-event.md |
| `add-excel-table-rows` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/add-excel-table-rows.md |
| `add-mail-attachment` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/add-mail-attachment.md |
| `copy-drive-item` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/copy-drive-item.md |
| `copy-mail-message` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/copy-mail-message.md |
| `create-calendar` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-calendar.md |
| `create-calendar-event` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-calendar-event.md |
| `create-contact-child-folder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-contact-child-folder.md |
| `create-contact-folder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-contact-folder.md |
| `create-contact-in-folder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-contact-in-folder.md |
| `create-draft-email` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-draft-email.md |
| `create-drive-item-preview` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-drive-item-preview.md |
| `create-drive-item-share-link` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-drive-item-share-link.md |
| `create-excel-chart` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-excel-chart.md |
| `create-excel-table` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-excel-table.md |
| `create-focused-inbox-override` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-focused-inbox-override.md |
| `create-forward-draft` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-forward-draft.md |
| `create-mail-attachment-upload-session` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-mail-attachment-upload-session.md |
| `create-mail-child-folder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-mail-child-folder.md |
| `create-mail-folder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-mail-folder.md |
| `create-mail-rule` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-mail-rule.md |
| `create-my-calendar-permission` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-my-calendar-permission.md |
| `create-onedrive-folder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-onedrive-folder.md |
| `create-onenote-notebook` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-onenote-notebook.md |
| `create-onenote-page` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-onenote-page.md |
| `create-onenote-section` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-onenote-section.md |
| `create-onenote-section-page` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-onenote-section-page.md |
| `create-outlook-category` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-outlook-category.md |
| `create-outlook-contact` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-outlook-contact.md |
| `create-planner-bucket` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-planner-bucket.md |
| `create-planner-task` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-planner-task.md |
| `create-planner-task-message` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-planner-task-message.md |
| `create-reply-all-draft` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-reply-all-draft.md |
| `create-reply-draft` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-reply-draft.md |
| `create-shared-mailbox-forward-draft` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-shared-mailbox-forward-draft.md |
| `create-shared-mailbox-reply-all-draft` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-shared-mailbox-reply-all-draft.md |
| `create-shared-mailbox-reply-draft` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-shared-mailbox-reply-draft.md |
| `create-specific-calendar-event` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-specific-calendar-event.md |
| `create-subscription` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-subscription.md |
| `create-todo-linked-resource` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-todo-linked-resource.md |
| `create-todo-task` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-todo-task.md |
| `create-todo-task-list` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-todo-task-list.md |
| `create-upload-session` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/create-upload-session.md |
| `decline-calendar-event` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/decline-calendar-event.md |
| `format-excel-range` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/format-excel-range.md |
| `format-excel-range-border` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/format-excel-range-border.md |
| `format-excel-range-fill` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/format-excel-range-fill.md |
| `format-excel-range-font` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/format-excel-range-font.md |
| `forward-mail-message` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/forward-mail-message.md |
| `insert-excel-range` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/insert-excel-range.md |
| `login` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/login.md |
| `merge-excel-range` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/merge-excel-range.md |
| `move-mail-message` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/move-mail-message.md |
| `move-rename-onedrive-item` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/move-rename-onedrive-item.md |
| `reauthorize-subscription` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/reauthorize-subscription.md |
| `reply-all-mail-message` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/reply-all-mail-message.md |
| `reply-mail-message` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/reply-mail-message.md |
| `select-account` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/select-account.md |
| `send-draft-message` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/send-draft-message.md |
| `send-mail` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/send-mail.md |
| `send-shared-mailbox-draft` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/send-shared-mailbox-draft.md |
| `share-drive-item` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/share-drive-item.md |
| `snooze-calendar-event-reminder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/snooze-calendar-event-reminder.md |
| `sort-excel-range` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/sort-excel-range.md |
| `unmerge-excel-range` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/unmerge-excel-range.md |
| `update-calendar` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-calendar.md |
| `update-calendar-event` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-calendar-event.md |
| `update-contact-folder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-contact-folder.md |
| `update-excel-range` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-excel-range.md |
| `update-excel-table-row` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-excel-table-row.md |
| `update-focused-inbox-override` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-focused-inbox-override.md |
| `update-mail-folder` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-mail-folder.md |
| `update-mail-message` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-mail-message.md |
| `update-mail-rule` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-mail-rule.md |
| `update-mailbox-settings` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-mailbox-settings.md |
| `update-my-calendar-permission` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-my-calendar-permission.md |
| `update-outlook-contact` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-outlook-contact.md |
| `update-planner-bucket` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-planner-bucket.md |
| `update-planner-task` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-planner-task.md |
| `update-planner-task-details` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-planner-task-details.md |
| `update-specific-calendar-event` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-specific-calendar-event.md |
| `update-subscription` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-subscription.md |
| `update-todo-task` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-todo-task.md |
| `update-todo-task-list` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/update-todo-task-list.md |
| `upload-file-content` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/upload-file-content.md |
| `upload-my-profile-photo` | Write | Medium | https://policylayer.com/tools/jo3zik-ms-365-mcp-server/upload-my-profile-photo.md |

## Tool descriptions

- `cancel-calendar-event` — This action allows the organizer of a meeting to send a cancellation message and cancel the event. The action moves the event to the Deleted Items folder. The organizer can also cancel an occurrence of a recurring meeting by providing th…
- `clear-excel-range` — Clear an Excel range. 💡 TIP: Clear cell contents and/or formatting on the given range. Body: { applyTo: 'All' | 'Formats' | 'Contents' }. 'Contents' wipes values but keeps formatting; 'Formats' resets styling but keeps values; 'All' wip…
- `delete-calendar` — Delete a calendar other than the default calendar. 💡 TIP: Deletes a calendar and all its events. The default calendar cannot be deleted. This action cannot be undone.
- `delete-calendar-event` — Removes the specified event from the containing calendar. If the event is a meeting, deleting the event on the organizer's calendar sends a cancellation message to the meeting attendees. 💡 TIP: Deleting a seriesMaster deletes ALL occurr…
- `delete-contact-folder` — Delete contactFolder other than the default contactFolder. 💡 TIP: Deletes a contact folder. The default 'Contacts' folder cannot be deleted — Graph returns an error. The folder (and its contents) typically lands in Deleted Items rather …
- `delete-drive-item-permission` — Delete a drive item permission. 💡 TIP: Removes a specific permission from a file or folder. Only permissions that are not inherited can be deleted. Use list-drive-item-permissions first to find the permission ID.
- `delete-excel-range` — Delete an Excel range. 💡 TIP: Delete cells at the given range, shifting remaining content. Body: { shift: 'Up' } or { shift: 'Left' }. Use 'Up' to delete entire rows.
- `delete-excel-table-row` — Delete an Excel table row. 💡 TIP: Delete a single row from a formal Excel table by zero-based row index.
- `delete-focused-inbox-override` — Delete an override specified by its ID. 💡 TIP: Deletes a Focused Inbox override. Future messages from that sender revert to the Outlook ML classifier's default behavior. Use list-focused-inbox-overrides to find the ID first.
- `delete-mail-attachment` — Delete a mail attachment.
- `delete-mail-folder` — Delete the specified mailFolder. The folder can be a mailSearchFolder. You can specify a mail folder by its folder ID, or by its well-known folder name, if one exists. 💡 TIP: Deletes a mail folder and all its contents. This action is ir…
- `delete-mail-message` — Delete an Outlook email message by its message ID. This is a soft delete that moves the message to Deleted Items. 💡 TIP: Soft delete — moves to Deleted Items. To permanently delete, delete again from Deleted Items.
- `delete-mail-rule` — Delete the specified messageRule object. 💡 TIP: Deletes a message rule permanently. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules.
- `delete-my-calendar-permission` — Delete my calendar permission. 💡 TIP: Revokes a calendar share or delegate access. Get the permission id via list-my-calendar-permissions. Permissions where isRemovable=false (e.g. the implicit 'My Organization' default) cannot be delet…
- `delete-onedrive-file` — Delete a OneDrive file.
- `delete-onenote-page` — Delete a OneNote page. 💡 TIP: Deletes a OneNote page permanently. This cannot be undone.
- `delete-outlook-contact` — Delete a contact.
- `delete-planner-bucket` — Delete plannerBucket. 💡 TIP: CRITICAL: Requires If-Match header with ETag from get-planner-bucket (use includeHeaders=true).
- `delete-planner-task-message` — [beta] Delete a plannerTaskChatMessage object. 💡 TIP: Deletes a message from a Planner task's chat. No request body; If-Match is optional if you want conditional deletion; returns 204. BETA Graph API: subject to change; delegated work/s…
- `delete-specific-calendar-event` — Delete a specific calendar event. 💡 TIP: Deleting a seriesMaster deletes ALL occurrences. To cancel a single occurrence, use the specific instance ID.
- `delete-subscription` — Delete a subscription. For the list of resources that support subscribing to change notifications, see the table in the Permissions section. 💡 TIP: Deletes a webhook subscription. No further change notifications will be sent. Use this t…
- `delete-todo-linked-resource` — Delete a linkedResource object. 💡 TIP: Removes a linked resource from a To Do task.
- `delete-todo-task` — Delete a todoTask object.
- `delete-todo-task-list` — Deletes a todoTaskList object. 💡 TIP: Deletes a Microsoft To Do task list. Built-in lists (Flagged emails, the default Tasks list) cannot be deleted — the API returns an error for those. Get list ids via list-todo-task-lists.
- `graph-batch` — Combine up to 20 Graph requests into a single HTTP call. Body: { requests: [{ id: '1', method: 'GET'|'POST'|'PATCH'|'DELETE', url: '/me/messages?$top=5', headers?: {...}, body?: {...}, dependsOn?: ['1'] }, ...] }. Returns { responses: [{…
- `logout` — Log out from Microsoft account
- `remove-account` — Remove a Microsoft account from the cache. Accepts email address (e.g. user@outlook.com) or account ID. Use list-accounts to discover available accounts.
- `parse-teams-url` — Converts any Teams meeting URL format (short /meet/, full /meetup-join/, or recap ?threadId=) into a standard joinWebUrl. Use this before list-online-meetings when the user provides a recap or short URL.
- `tentatively-accept-calendar-event` — Tentatively accept the specified event in a user calendar. If the event allows proposals for new times, on responding tentative to the event, an invitee can choose to suggest an alternative time by including the proposedNewTime parameter…
- `dismiss-calendar-event-reminder` — Dismiss a reminder that has been triggered for an event in a user calendar. 💡 TIP: Dismisses a triggered event reminder so it won't re-fire. No request body required. Pair with list-calendar-events or get-schedule to find active reminders.
- `download-bytes` — Download binary content from Microsoft Graph and return it as base64. Single tool for any binary read: drive file content, mail attachment, profile photo, Teams hosted content, meeting recording. Returns { contentType, encoding: "base64"…
- `download-bytes-to-file` — Write authenticated Microsoft Graph byte content to a local file on the server, returning { path, contentType, bytesWritten } instead of base64. The only out-of-band way to save mail attachments and meeting recordings, whose bytes are ex…
- `forward-calendar-event` — This action allows the organizer or attendee of a meeting event to forward the meeting request to a new recipient. If the meeting event is forwarded from an attendee's Microsoft 365 mailbox to another recipient, this action also sends a …
- `get-adhoc-call-transcript-content` — The content of the transcript. Read-only.
- `get-calendar-event` — Get the properties and relationships of the specified event object. Currently, this operation returns event bodies in only HTML format. There are two scenarios where an app can get an event in another user's calendar: Since the event res…
- `get-calendar-view` — Get the occurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar, or from some other calendar of the user. 💡 TIP: Returns expanded recurring event instances (no…
- `get-current-user` — Retrieve the properties and relationships of user object. This operation returns by default only a subset of the more commonly used properties for each user. These default properties are noted in the Properties section. To get properties…
- `get-download-url` — Resolve a short-lived, pre-authenticated download URL for Microsoft Graph binary content that exposes one (drive/SharePoint file content). The returned URL streams the bytes with NO Authorization header, so the client can fetch it straig…
- `get-drive-delta` — Track changes in a driveItem and its children over time. Your app begins by calling delta without any parameters. The service starts enumerating the drive's hierarchy, returning pages of items and either an @odata.nextLink or an @odata.d…
- `get-drive-item` — All items contained in the drive. Read-only. Nullable. 💡 TIP: Gets metadata for a file or folder: name, size, lastModifiedDateTime, createdBy, webUrl, file (mimeType, hashes), folder (childCount), parentReference, and @microsoft.graph.d…
- `get-drive-root-item` — The root folder of the drive. Read-only.
- `get-excel-range` — Get an Excel range.
- `get-excel-range-format` — Returns a format object, encapsulating the range's font, fill, borders, alignment, and other properties. Read-only. 💡 TIP: Reads a range's format: alignment, wrapText, columnWidth, rowHeight. Font, fill, and borders are nested and omitt…
- `get-excel-table` — Represents a collection of tables associated with the workbook. Read-only. 💡 TIP: Gets a specific table by name or ID. Returns table properties including columns, showHeaders, showTotals, and style.
- `get-excel-used-range` — Get an Excel used range. 💡 TIP: Get the smallest range that encompasses any cells with values or formatting on the worksheet. Returns address, values, formulas, numberFormat, rowCount, columnCount. Use this to discover the populated bou…
- `get-mail-message` — Get a single Outlook email message by its message ID, including full subject, sender, recipients, body, and attachment flags. Use list-mail-messages first to obtain the message ID.
- `get-mail-message-mime` — Download the raw MIME source (RFC 822 .eml content) of an Outlook email message by its message ID. Returns the complete original message including headers and encoded attachments. 💡 TIP: Download an email message as raw RFC 5322 MIME co…
- `get-mail-tips` — Get the MailTips of one or more recipients as available to the signed-in user. Note that by making a POST call to the getMailTips action, you can request specific types of MailTips to be returned for more than one recipient at one time. …
- `get-mailbox-settings` — Get the user's mailboxSettings. You can view all mailbox settings, or get specific settings. Users can set the following settings for their mailboxes through an Outlook client: Users can set their preferred date and time formats using Ou…
- `get-my-profile` — [beta] Retrieve the properties and relationships of a profile object for a given user. The profile resource exposes various rich properties that are descriptive of the user as relationships, for example, anniversaries and education activ…
- `get-onenote-page-content` — The page's HTML content.
- `get-outlook-contact` — Retrieve the properties and relationships of a contact object. There are two scenarios where an app can get a contact in another user's contact folder:
- `get-planner-bucket` — Retrieve the properties and relationships of a plannerBucket object. 💡 TIP: Response includes @odata.etag — required as If-Match for update-planner-bucket and delete-planner-bucket. Use includeHeaders=true.
- `get-planner-plan` — Retrieve the properties and relationships of a plannerplan object.
- `get-planner-task` — Retrieve the properties and relationships of plannerTask object. 💡 TIP: Response includes @odata.etag — save it, required as If-Match header for update-planner-task. Use includeHeaders=true to capture it.
- `get-planner-task-details` — Retrieve the properties and relationships of a plannerTaskDetails object. 💡 TIP: Response includes @odata.etag — required for update-planner-task-details. Use includeHeaders=true.
- `get-specific-calendar-event` — Get a single event from one of the signed-in user's calendars, addressed by calendar ID and event ID. Any calendar can be addressed this way, including the default one.
- `get-specific-calendar-view` — List the occurrences, exceptions, and single instances of events over a time range, from one of the signed-in user's calendars addressed by calendar ID. 💡 TIP: Returns expanded recurring event instances (not just seriesMaster) within a …
- `get-subscription` — Retrieve the properties and relationships of a subscription. See the table in the Permissions section for the list of resources that support subscribing to change notifications. 💡 TIP: Gets a specific webhook subscription by id. Use lis…
- `get-todo-task` — Read the properties and relationships of a todoTask object. 💡 TIP: Returns a single To Do task. NOTE: $select is NOT supported — do not pass select parameter, Graph returns RequestBroker--ParseUri (400). Use $expand=linkedResources to i…
- `list-accounts` — List all Microsoft accounts configured in this server. Use this to discover available account emails before making tool calls. Reflects accounts added mid-session via --login.
- `list-all-onenote-sections` — Retrieve a list of onenoteSection objects. 💡 TIP: Lists all sections across all notebooks. Use list-onenote-notebook-sections to list sections within a specific notebook instead.
- `list-calendar-event-instances` — The occurrences of a recurring series, if the event is a series master. This property includes occurrences that are part of the recurrence pattern, and exceptions modified, but doesn't include occurrences canceled from the series. Naviga…
- `list-calendar-events` — Get a list of event objects in the user's mailbox. The list contains single instance meetings and series masters. To get expanded event instances, you can get the calendar view, or get the instances of an event. Currently, this operation…
- `list-calendar-events-delta` — Get a set of event resources that have been added, deleted, or updated in a calendarView (a range of events defined by start and end dates) of the user's primary calendar. Typically, synchronizing events in a calendarView in a local stor…
- `list-calendar-view-delta` — Get a set of event resources that have been added, deleted, or updated in a calendarView (a range of events defined by start and end dates) of the user's primary calendar. Typically, synchronizing events in a calendarView in a local stor…
- `list-calendars` — Get all the user's calendars (/calendars navigation property), get the calendars from the default calendar group or from a specific calendar group.
- `list-contact-folder-child-folders` — Get a collection of child folders under the specified contact folder. 💡 TIP: Lists immediate sub-folders under a given contact folder. Returns id, displayName, parentFolderId. Use list-contact-folders to discover top-level folders, then…
- `list-contact-folder-contacts` — Get a contact collection from the default Contacts folder of the signed-in user (.../me/contacts), or from the specified contact folder. 💡 TIP: Lists contacts inside a specific folder. Pair with list-contact-folders to discover the fold…
- `list-contact-folders` — Get the contact folder collection in the default Contacts folder of the signed-in user. 💡 TIP: Lists the user's Outlook contact folders (the named buckets that organize contacts). Always includes the built-in 'Contacts' folder; user-cre…
- `list-drive-item-permissions` — The set of permissions for the item. Read-only. Nullable. 💡 TIP: Lists all permissions (sharing links, direct access, inherited) on a file or folder. Each permission has roles, grantedTo (user), link (sharing URL), and inheritedFrom.
- `list-drive-item-thumbnails` — Collection of thumbnailSet objects associated with the item. For more information, see getting thumbnails. Read-only. Nullable. 💡 TIP: Lists thumbnail sets for a file. Each set contains small (96px), medium (176px), large (800px) thumbn…
- `list-drive-item-versions` — The list of previous versions of the item. For more info, see getting previous versions. Read-only. Nullable. 💡 TIP: Lists version history of a file. Each version has id, lastModifiedDateTime, lastModifiedBy, and size. Use the version i…
- `list-drives` — Retrieve the list of Drive resources available for a target User, Group, or Site.
- `list-excel-table-rows` — The list of all the rows in the table. Read-only. 💡 TIP: Lists all rows in a table. Each row has index and values (array of cell values). Use $top and $skip for pagination on large tables.
- `list-excel-tables` — Represents a collection of tables associated with the workbook. Read-only. 💡 TIP: Lists all named tables in a workbook. Each table has id, name, showHeaders, showTotals, columns, and style. Use the table name or id with other table endp…
- `list-excel-worksheets` — Represents a collection of worksheets associated with the workbook. Read-only.
- `list-focused-inbox-overrides` — Get the overrides that a user has set up to always classify messages from certain senders in specific ways. Each override corresponds to an SMTP address of a sender. Initially, a user doesn't have any overrides. 💡 TIP: Lists Focused Inb…
- `list-folder-files` — Return a collection of DriveItems in the children relationship of a DriveItem. DriveItems with a non-null folder or package facet can have one or more child DriveItems.
- `list-mail-attachments` — Retrieve a list of attachment objects. 💡 TIP: Lists attachments on a message: id, name, contentType, size, isInline. To download the bytes, call download-bytes with target=/me/messages/{message-id}/attachments/{attachment-id}/$value (th…
- `list-mail-child-folders` — Get the folder collection under the specified folder. You can use the .../me/mailFolders shortcut to get the top-level folder collection and navigate to another folder. By default, this operation doesn't return hidden folders. Use a quer…
- `list-mail-folder-messages` — Get all the messages in the specified user's mailbox, or those messages in a specified folder in the mailbox. 💡 TIP: List read search Outlook emails within a specific mail folder. CRITICAL: When searching emails, the $search parameter v…
- `list-mail-folder-messages-delta` — Get a set of messages added, deleted, or updated in a specified folder. A delta function call for messages in a folder is similar to a GET request, except that by appropriately applying state tokens in one or more of these calls, you can…
- `list-mail-folders` — Get the mail folder collection directly under the root folder of the signed-in user. The returned collection includes any mail search folders directly under the root. By default, this operation doesn't return hidden folders. Use a query …
- `list-mail-messages` — List, search, and filter Outlook email messages in the signed-in user's mailbox across all folders. Returns message metadata (subject, from, receivedDateTime, isRead, hasAttachments) plus a body preview. Use $search for keyword queries, …
- `list-mail-rules` — Get all the messageRule objects defined for the user's inbox. 💡 TIP: Lists all message rules for a mail folder. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules. Each rule has displayName, sequence, isEnabled, con…
- `list-my-calendar-permissions` — The permissions of the users with whom the calendar is shared. 💡 TIP: Lists share recipients and delegates on the user's primary calendar. Returns calendarPermission objects with id, role ('none' | 'freeBusyRead' | 'limitedRead' | 'read…
- `list-onenote-notebook-sections` — Retrieve a list of onenoteSection objects from the specified notebook.
- `list-onenote-notebooks` — Retrieve a list of notebook objects.
- `list-onenote-pages` — Retrieve a list of page objects. 💡 TIP: Lists all OneNote pages across every notebook and section the user has access to — transverse alternative to walking notebooks → sections → pages. Default returns top 20 ordered by lastModifiedTim…
- `list-onenote-section-groups` — Retrieve a list of sectionGroup objects. 💡 TIP: Lists all OneNote section groups (subfolders inside notebooks that contain their own sections and nested section groups) for the user. A section group is a folder-like container — many not…
- `list-onenote-section-pages` — Retrieve a list of page objects from the specified section.
- `list-outlook-categories` — Get all the categories that have been defined for a user. 💡 TIP: Lists the user's Outlook categories (colored labels) used to tag messages, events, contacts, and tasks. Each category has displayName and color (preset0 through preset24, …
- `list-outlook-contacts` — Get a contact collection from the default contacts folder of the signed-in user. There are two scenarios where an app can get contacts in another user's contact folder: 💡 TIP: $filter only supports startswith() — contains() and eq on em…
- `list-plan-buckets` — Retrieve a list of plannerBucket objects contained by a plannerPlan object.
- `list-plan-tasks` — Retrieve a list of plannerTask objects associated with a plannerPlan object. 💡 TIP: Priority values: 0=Urgent, 1=Important, 3=Medium, 5=Low, 9=unset.
- `list-planner-task-messages` — [beta] Retrieve a list of plannerTaskChatMessage objects associated with a plannerTask. 💡 TIP: Lists messages in a Planner task's chat — the modern Planner 'task chat', distinct from the legacy conversationThreadId comments (which live …
- `list-planner-tasks` — Retrieve a list of plannertask objects assigned to a User. 💡 TIP: Priority values: 0=Urgent, 1=Important, 3=Medium, 5=Low, 9=unset.
- `list-specific-calendar-events` — List events from one of the signed-in user's calendars, addressed by calendar ID. 💡 TIP: WARNING: Does NOT expand recurring events — only returns seriesMaster. Use get-specific-calendar-view instead.
- `list-subscriptions` — Retrieve the properties and relationships of webhook subscriptions, based on the app ID, the user, and the user's role with a tenant. The content of the response depends on the context in which the app is calling; for details, see the sc…
- `list-supported-languages` — Get the list of locales and languages that are supported for the user, as configured on the user's mailbox server. When setting up an Outlook client, the user selects the preferred language from this supported list. You can subsequently …
- `list-supported-time-zones` — Get the list of time zones that are supported for the user, as configured on the user's mailbox server. You can explicitly specify to have time zones returned in the Windows time zone format or Internet Assigned Numbers Authority (IANA) …
- `list-todo-linked-resources` — Get information of one or more items in a partner application, based on which a specified task was created. The information is represented in a linkedResource object for each item. It includes an external ID for the item in the partner a…
- `list-todo-task-lists` — Get a list of the todoTaskList objects and their properties. 💡 TIP: Lists all To Do task lists. Returns todoTaskList-id needed for all task operations. The default list is typically called 'Tasks'. NOTE: $select is NOT supported by this…
- `list-todo-tasks` — Get the todoTask resources from the tasks navigation property of a specified todoTaskList. 💡 TIP: Lists tasks in a To Do list. Requires todoTaskList-id — use list-todo-task-lists to find it. NOTE: $select is NOT supported — do not pass …
- `search-onedrive-files` — Search the hierarchy of items for items matching a query. You can search within a folder hierarchy, a whole drive, or files shared with the current user. 💡 TIP: Searches for files in a drive by name or content. The q parameter searches …
- `verify-login` — Check current Microsoft authentication status
- `accept-calendar-event` — Accept the specified event in a user calendar. 💡 TIP: Accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I will attend.' }. Set sendResponse to false to accept silently without notifying the organizer.
- `add-excel-table-rows` — Add Excel table rows. 💡 TIP: Adds rows to a table. Body: { values: [['col1val', 'col2val', 'col3val'], ['row2col1', 'row2col2', 'row2col3']] }. Each inner array is one row. Values must match the number of columns in the table.
- `add-mail-attachment` — Use this API to create a new Attachment. An attachment can be one of the following types: All these types of attachment resources are derived from the attachment resource. 💡 TIP: The only path for attachments under 3MB. contentBytes mus…
- `copy-drive-item` — Copy a drive item. 💡 TIP: Asynchronously copy a file or folder to a new location and/or name. Body: { parentReference: { driveId: '...', id: '...' }, name?: 'New Name.xlsx' }. Returns 202 Accepted with a Location header pointing at a mo…
- `copy-mail-message` — Copy a message to a folder within the user's mailbox. 💡 TIP: Copies a message to another mail folder. Body: { DestinationId: '<mailFolder-id or well-known name like inbox, archive, junkemail>' }. Returns the newly created message (with …
- `create-calendar` — Create a new calendar for a user. 💡 TIP: Creates a new personal calendar. Body: { name: 'My Calendar', color: 'auto' }. Available colors: auto, lightBlue, lightGreen, lightOrange, lightGray, lightYellow, lightTeal, lightPink, lightBrown…
- `create-calendar-event` — Create (schedule) a new calendar event — a meeting or appointment — on the user's calendar. Set subject, start/end times, time zone, location, body, and attendees; supports online meetings and recurrence. 💡 TIP: CRITICAL: Do not try to …
- `create-contact-child-folder` — Create a new contactFolder as a child of a specified folder. You can also create a new contactFolder under the user's default contact folder. 💡 TIP: Creates a sub-folder under an existing contact folder. Body: { displayName: 'Sub-folder…
- `create-contact-folder` — Create a new contactFolder under the user's default contacts folder. You can also create a new contactfolder as a child of any specified contact folder. 💡 TIP: Creates a new contact folder under the user's mailbox root. Body: { displayN…
- `create-contact-in-folder` — Add a contact to the root Contacts folder or to the contacts endpoint of another contact folder. 💡 TIP: Creates a contact inside a specific folder (instead of the default Contacts folder). Body is a contact resource: { givenName, surnam…
- `create-draft-email` — Create a draft Outlook email message in the signed-in user's Drafts folder. Set subject, body, toRecipients, ccRecipients, and importance. The draft is saved, not sent — use send-mail to send a message directly, or send the draft afterwa…
- `create-drive-item-preview` — Create a drive item preview. 💡 TIP: Generate a short-lived embeddable preview URL for a file (Office docs, PDFs, images). Body: { page?: number | string, zoom?: number, viewer?: 'onedrive' | 'office' }. Returns getUrl (interactive) and …
- `create-drive-item-share-link` — Create a link to share a driveItem driveItem. The createLink action creates a new sharing link if the specified link type doesn't already exist for the calling application. If a sharing link of the specified type already exists for the a…
- `create-excel-chart` — Creates a new chart.
- `create-excel-table` — Create a new table. The range source address determines the worksheet under which the table will be added. If the table can't be added (for example, because the address is invalid, or the table would overlap with another table), an error…
- `create-focused-inbox-override` — Create an override for a sender identified by an SMTP address. Future messages from that SMTP address will be consistently classified as specified in the override. Note 💡 TIP: Creates a Focused Inbox override for a sender. Body: { class…
- `create-forward-draft` — Create a forward draft. 💡 TIP: Create a forward draft (does not send). Useful when user wants to review before sending.
- `create-mail-attachment-upload-session` — Create an upload session that allows an app to iteratively upload ranges of a file, so as to attach the file to the specified Outlook item. The item can be a message or event. Use this approach to attach a file if the file size is betwee…
- `create-mail-child-folder` — Use this API to create a new child mailFolder. If you intend a new folder to be hidden, you must set the isHidden property to true on creation. 💡 TIP: Creates a subfolder inside an existing mail folder. Use list-mail-folders or list-mai…
- `create-mail-folder` — Use this API to create a new mail folder in the root folder of the user's mailbox. If you intend a new folder to be hidden, you must set the isHidden property to true on creation. 💡 TIP: Creates a top-level mail folder. Use create-mail-…
- `create-mail-rule` — Create a messageRule object by specifying a set of conditions and actions. Outlook carries out those actions if an incoming message in the user's Inbox meets the specified conditions. 💡 TIP: Creates a message rule for a mail folder. Use…
- `create-my-calendar-permission` — Create a calendarPermission resource to specify the identity and role of the user with whom the specified calendar is being shared or delegated. 💡 TIP: Shares the user's primary calendar with another user (or sets up a delegate). Body: …
- `create-onedrive-folder` — Create a OneDrive folder. 💡 TIP: Creates a new folder inside the specified drive item. Body must include name (string) and folder ({}) fields. Use @microsoft.graph.conflictBehavior to control behavior on name conflict: 'rename' (default…
- `create-onenote-notebook` — Create a new OneNote notebook. 💡 TIP: Creates a new OneNote notebook. Body: { displayName: 'Notebook Name' }. The name must be unique across the user's notebooks.
- `create-onenote-page` — Create a new OneNote page in the default section of the default notebook. To create a page in a different section in the default notebook, you can use the sectionName query parameter. Example: ../onenote/pages?sectionName=My%20section Th…
- `create-onenote-section` — Create a new onenoteSection in the specified notebook. 💡 TIP: Creates a new section in a notebook. Body: { displayName: 'Section Name' }.
- `create-onenote-section-page` — Create a new page in the specified section. 💡 TIP: Body must be a full HTML document (with <html><head><title>...</title></head><body>...</body></html>). Partial HTML fails silently.
- `create-outlook-category` — Create an outlookCategory object in the user's master list of categories. 💡 TIP: Creates a new Outlook category. Body: { displayName (unique), color (one of: none, preset0 … preset24 — maps to red, orange, yellow, green, teal, olive, bl…
- `create-outlook-contact` — Add a contact to the root Contacts folder or to the contacts endpoint of another contact folder.
- `create-planner-bucket` — Create a new plannerBucket object.
- `create-planner-task` — Create a new plannerTask.
- `create-planner-task-message` — [beta] Create a new plannerTaskChatMessage on a plannerTask. 💡 TIP: Posts a message to a Planner task's chat (the modern 'task chat', not the legacy conversationThreadId comment). Microsoft is retiring the classic task comments experien…
- `create-reply-all-draft` — Create a draft to reply to the sender and all recipients of a message in either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 40…
- `create-reply-draft` — Create a draft to reply to the sender of a message in either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error…
- `create-shared-mailbox-forward-draft` — Create a shared mailbox forward draft.
- `create-shared-mailbox-reply-all-draft` — Create a draft to reply to the sender and all recipients of a message in either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 40…
- `create-shared-mailbox-reply-draft` — Create a draft to reply to the sender of a message in either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error…
- `create-specific-calendar-event` — Use this API to create a new event in a calendar. The calendar can be one for a user, or the default calendar of a Microsoft 365 group. 💡 TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to…
- `create-subscription` — Subscribes a listener application to receive change notifications when the requested type of changes occur to the specified resource in Microsoft Graph. To identify the resources for which you can create subscriptions and the limitations…
- `create-todo-linked-resource` — Create a linkedResource object to associate a specified task with an item in a partner application. For example, you can associate a task with an email item in Outlook that spurred the task, and you can create a linkedResource object to …
- `create-todo-task` — Create a new task object in a specified todoTaskList. 💡 TIP: Creates a new task in a Microsoft To Do list. Body: { title: "..." }; optional dueDateTime, reminderDateTime, importance, body (notes), recurrence, categories. Requires todoTa…
- `create-todo-task-list` — Create a new lists object. 💡 TIP: Creates a new Microsoft To Do task list (the named buckets shown in the To Do app sidebar). Body: { displayName: 'My new list' }. Returns the created todoTaskList with its id, displayName, isOwner, isSh…
- `create-upload-session` — Create an upload session. 💡 TIP: For large file uploads (no size limit, and no minimum unlike the Outlook attachment session). Returns a pre-authenticated uploadUrl; the caller PUTs the bytes there itself. This server does not perform t…
- `decline-calendar-event` — Decline invitation to the specified event in a user calendar. If the event allows proposals for new times, on declining the event, an invitee can choose to suggest an alternative time by including the proposedNewTime parameter. For more …
- `format-excel-range` — Format an Excel range. 💡 TIP: Apply rangeFormat properties to a specific range. Required path param 'address' (e.g. 'A1:E5' or 'Sheet1!A1:E5'). Body: { horizontalAlignment, verticalAlignment, wrapText, columnWidth, rowHeight }. Font, fi…
- `format-excel-range-border` — Format an Excel range border. 💡 TIP: Sets one border side. The {sideIndex} path param selects which side: EdgeTop, EdgeBottom, EdgeLeft, EdgeRight, InsideVertical, InsideHorizontal, DiagonalDown, or DiagonalUp. To outline all four edges…
- `format-excel-range-fill` — Format an Excel range fill. 💡 TIP: Set the background fill color of a range's cells.
- `format-excel-range-font` — Format an Excel range font. 💡 TIP: Set font formatting on a range: bold, italic, underline, size, color, and font name.
- `forward-mail-message` — Forward a message using either JSON or MIME format. When using JSON format, you can: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - Specify either th…
- `insert-excel-range` — Insert an Excel range. 💡 TIP: Insert blank cells at the given range, shifting existing content. Body: { shift: 'Down' } or { shift: 'Right' }. Use 'Down' to insert blank rows above existing data.
- `login` — Authenticate with Microsoft account
- `merge-excel-range` — Merge an Excel range. 💡 TIP: Merge the cells in the given range into a single cell. Body: { across: false } merges the entire range into one cell; { across: true } merges each row separately. Useful for building styled headers, banner r…
- `move-mail-message` — Move a message to another folder within the specified user's mailbox. This creates a new copy of the message in the destination folder and removes the original message. 💡 TIP: destinationId accepts folder ID or well-known name (inbox, d…
- `move-rename-onedrive-item` — Move or rename a OneDrive item. 💡 TIP: Move and/or rename a file or folder. To move, provide parentReference with the target folder's id. To rename, provide a new name. Both can be done in a single request.
- `reauthorize-subscription` — Reauthorize a subscription when you receive a reauthorizationRequired challenge. 💡 TIP: Reauthorizes a subscription after receiving a 'reauthorizationRequired' lifecycle notification from Microsoft Graph. No body required. Must be calle…
- `reply-all-mail-message` — Reply to all recipients of a message using either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - If the …
- `reply-mail-message` — Reply to the sender of a message using either JSON or MIME format. When using JSON format: * Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. * If the orig…
- `select-account` — Select a Microsoft account as the default. Accepts email address (e.g. user@outlook.com) or account ID. Use list-accounts to discover available accounts.
- `send-draft-message` — Send an existing draft message. The draft message can be a new message draft, reply draft, reply-all draft, or a forward draft. This method saves the message in the Sent Items folder. Alternatively, send a new message in a single operati…
- `send-mail` — Send the message specified in the request body using either JSON or MIME format. When using JSON format, you can include a file attachment in the same sendMail action call. When using MIME format: This method saves the message in the Sen…
- `send-shared-mailbox-draft` — Send an existing draft message. The draft message can be a new message draft, reply draft, reply-all draft, or a forward draft. This method saves the message in the Sent Items folder. Alternatively, send a new message in a single operation.
- `share-drive-item` — Send a sharing invitation for a driveItem. A sharing invitation provides permissions to the recipients and, optionally, sends them an email to notify them that the item was shared. 💡 TIP: Shares a file or folder with specific users. Bod…
- `snooze-calendar-event-reminder` — Postpone a reminder for an event in a user calendar until a new time. 💡 TIP: Postpones a triggered event reminder. Body: { NewReminderTime: { dateTime (ISO 8601), timeZone (IANA or Windows, e.g. 'Pacific Standard Time') } }. The reminde…
- `sort-excel-range` — Sort an Excel range.
- `unmerge-excel-range` — Unmerge an Excel range. 💡 TIP: Unmerge any merged cells within the given range back into individual cells. No request body. Inverse of merge-excel-range.
- `update-calendar` — Update a calendar. 💡 TIP: Updates a calendar's properties. Body: { name: 'New Name', color: 'lightBlue' }. Cannot update the default calendar's name.
- `update-calendar-event` — Update the properties of the event object. 💡 TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients. WARNING: Setting attendees replaces the entire att…
- `update-contact-folder` — Update the properties of contactfolder object. 💡 TIP: Updates a contact folder. Body: { displayName?: 'New name', parentFolderId?: '<id>' } — both displayName (rename) and parentFolderId (move) are writable. The default 'Contacts' folde…
- `update-excel-range` — Update an Excel range. 💡 TIP: Set cell values, formulas, or number format on any range — does NOT require the worksheet to be a formal Excel table. Body: { values: [['v1','v2','v3']] } for a single row, or [['a','b'],['c','d']] for mult…
- `update-excel-table-row` — Update an Excel table row. 💡 TIP: Update a single row in a formal Excel table by zero-based row index. Body: { values: [[...]] } with one inner array matching the column count.
- `update-focused-inbox-override` — Change the classifyAs field of an override as specified. You cannot use PATCH to change any other fields in an inferenceClassificationOverride instance. If an override exists for a sender and the sender changes his/her display name, you …
- `update-mail-folder` — Update the properties of mailfolder object. 💡 TIP: Renames a mail folder by updating its displayName. Use list-mail-folders to find the folder ID.
- `update-mail-message` — Update an existing Outlook email message by its message ID — for example mark it read or unread (isRead), flag it (flag), change its categories, importance, or edit a draft's subject, body, or recipients.
- `update-mail-rule` — Change writable properties on a messageRule object and save the changes. 💡 TIP: Updates an existing message rule. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules. Send only the properties to change. Common use: {…
- `update-mailbox-settings` — Enable, configure, or disable one or more of the following settings as part of a user's mailboxSettings: When updating the preferred date or time format for a user, specify it in respectively, the short date or short time format. When up…
- `update-my-calendar-permission` — Update my calendar permission. 💡 TIP: Changes the role (permission level) granted to an existing share recipient or delegate. Body: { role: 'read' | 'write' | 'delegateWithoutPrivateEventAccess' | 'delegateWithPrivateEventAccess' }. Onl…
- `update-outlook-contact` — Update the properties of a contact object. 💡 TIP: emailAddresses array is replaced entirely — include all addresses, not just new ones.
- `update-planner-bucket` — Update the properties of plannerbucket object. 💡 TIP: CRITICAL: Requires If-Match header with ETag from get-planner-bucket (use includeHeaders=true).
- `update-planner-task` — Update the properties of plannerTask object. 💡 TIP: CRITICAL: Requires If-Match header with the task's @odata.etag value, otherwise returns 412 Precondition Failed. Get the ETag from get-planner-task with includeHeaders=true. Priority v…
- `update-planner-task-details` — Update the properties of plannerTaskDetails object. 💡 TIP: CRITICAL: Requires If-Match header with ETag from get-planner-task-details (use includeHeaders=true). Checklist items use GUID keys: {"checklist": {"<guid>": {"title": "...", "i…
- `update-specific-calendar-event` — Update a specific calendar event. 💡 TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients. WARNING: Setting attendees replaces the entire attendee lis…
- `update-subscription` — Renew a subscription by extending its expiry time. The table in the Permissions section lists the resources that support subscribing to change notifications. Subscriptions expire after a length of time that varies by resource type. In or…
- `update-todo-task` — Update the properties of a todoTask object. 💡 TIP: Updates a Microsoft To Do task. Use this to mark a to-do item complete or done (body: { status: "completed" }), reopen it (status: "notStarted"), rename it (title), or change its due da…
- `update-todo-task-list` — Update the properties of a todoTaskList object. 💡 TIP: Renames a Microsoft To Do task list. Body: { displayName: 'New name' }. Only displayName is writable. Built-in lists (Flagged emails, the default Tasks list) cannot be renamed — the…
- `upload-file-content` — The content stream, if the item represents a file. 💡 TIP: Body is a base64-encoded string of the file bytes; the server decodes it before PUT. Graph accepts up to 250MB here, but the whole string travels as a tool argument and a truncat…
- `upload-my-profile-photo` — Update the photo for the specified contact, group, team, or user in a tenant. The size of the photo you can update to is limited to 4 MB. You can use either PATCH or PUT for this operation. 💡 TIP: Uploads a new profile photo for the sig…

## Related servers

- UnClick (1662 tools) — https://policylayer.com/tools/io-github-malamutemayhem-unclick-mcp-server.md
- Apibase (1384 tools) — https://policylayer.com/tools/io-github-whiteknightonhorse-apibase.md
- Delx Protocol — Agent Recovery & Continuity (1076 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-protocol.md
- Delx Mcp A2a (1068 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-mcp-a2a.md
- MCP Framework Personal (912 tools) — https://policylayer.com/tools/inggerman-mcps.md
- Nodebench (824 tools) — https://policylayer.com/tools/io-github-homenshum-nodebench.md
- Eda Agent (777 tools) — https://policylayer.com/tools/eda-agent.md
- Delx MCP Server (740 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-mcp-server.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=jo3zik-ms-365-mcp-server · API: https://policylayer.com/registry/api · Recommended policies for every tool: https://policylayer.com/policies/jo3zik-ms-365-mcp-server
