Outlook / Microsoft 365 for Claude — mail, calendar, contacts and tasks, with confirm-gated sending
Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
OUTLOOK_ACCESS_TOKENAPI keyoptionalPre-obtained Outlook bearer token. Overrides the browser bridge. Power users / CI only; tokens last about 25 hours.
Declared by the author in the official MCP registry. Forge does not store, broker, or ever see these values — the config below is scaffolded with placeholders you fill in locally.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.
outlook_list_eventsList calendar events in a date window. This uses the calendar VIEW, which expands recurring series into their individual occurrences — the right tool for "what is on my schedule". Times are returned in `timeZone` when given.List calendar events in a date window. This uses the calendar VIEW, which expands recurring series into their individual occurrences — the right tool for "what is on my schedule". Times are returned in `timeZone` when given.
No input schema was published for this tool.
outlook_get_eventGet one calendar event in full, including attendees and their responses.Get one calendar event in full, including attendees and their responses.
No input schema was published for this tool.
outlook_list_calendarsList the calendars in the mailbox, for picking one to read or write against.List the calendars in the mailbox, for picking one to read or write against.
No input schema was published for this tool.
outlook_get_profileGet the signed-in mailbox's identity (email address, display name, alias). The cheapest call that proves the credential works.Get the signed-in mailbox's identity (email address, display name, alias). The cheapest call that proves the credential works.
No input schema was published for this tool.
outlook_get_mailbox_settingsGet mailbox settings: time zone, working hours, language, and automatic-replies (out-of-office) configuration.Get mailbox settings: time zone, working hours, language, and automatic-replies (out-of-office) configuration.
No input schema was published for this tool.
outlook_list_contactsList saved contacts from the mailbox address book.List saved contacts from the mailbox address book.
No input schema was published for this tool.
outlook_list_peopleList people ranked by relevance to the user — colleagues and frequent correspondents, drawn from mail traffic rather than the saved address book. Better than outlook_list_contacts for resolving "who is X" in a work mailbox.List people ranked by relevance to the user — colleagues and frequent correspondents, drawn from mail traffic rather than the saved address book. Better than outlook_list_contacts for resolving "who is X" in a work mailbox.
No input schema was published for this tool.
outlook_list_tasksList Outlook tasks with status and due dates.List Outlook tasks with status and due dates.
No input schema was published for this tool.
outlook_list_foldersList mail folders with unread and total counts. Use this to discover folder ids before listing messages; the well-known names (List mail folders with unread and total counts. Use this to discover folder ids before listing messages; the well-known names (
No input schema was published for this tool.
outlook_list_messagesList messages in a folder, newest first. Defaults to the inbox. Use `unreadOnly` for a triage view. Bodies are NOT included — call outlook_get_message for one. Note `search` and `unreadOnly` cannot be combined (the API rejects $search with $filter); pass `search` alone to search the whole mailbox.List messages in a folder, newest first. Defaults to the inbox. Use `unreadOnly` for a triage view. Bodies are NOT included — call outlook_get_message for one. Note `search` and `unreadOnly` cannot be combined (the API rejects $search with $filter); pass `search` alone to search the whole mailbox.
No input schema was published for this tool.
outlook_get_messageGet one message including its body. The body is requested as plain text rather than HTML (measured ~9x smaller and far easier to read); pass view:"raw" to get Outlook's untouched record.Get one message including its body. The body is requested as plain text rather than HTML (measured ~9x smaller and far easier to read); pass view:"raw" to get Outlook's untouched record.
No input schema was published for this tool.
outlook_list_attachmentsList a message's attachments (name, size, content type). Metadata only — this deliberately does not download bytes.List a message's attachments (name, size, content type). Metadata only — this deliberately does not download bytes.
No input schema was published for this tool.
outlook_send_mailSend an email from the signed-in mailbox. Requires confirm:true — without it this makes no network call and returns a preview of exactly what would be sent.Send an email from the signed-in mailbox. Requires confirm:true — without it this makes no network call and returns a preview of exactly what would be sent.
No input schema was published for this tool.
outlook_create_draftCreate a draft message in the Drafts folder without sending it. Requires confirm:true. Returns the created draft, which can be reviewed and sent from Outlook.Create a draft message in the Drafts folder without sending it. Requires confirm:true. Returns the created draft, which can be reviewed and sent from Outlook.
No input schema was published for this tool.
outlook_mark_readMark a message read or unread. Requires confirm:true. The result is verified by re-reading the message — a 2xx alone is not proof it persisted.Mark a message read or unread. Requires confirm:true. The result is verified by re-reading the message — a 2xx alone is not proof it persisted.
No input schema was published for this tool.
outlook_move_messageprivilegedMove a message to another folder (e.g. "archive", "deleteditems", or a folder id from outlook_list_folders). Requires confirm:true. Moving assigns a NEW message id, which is returned.Move a message to another folder (e.g. "archive", "deleteditems", or a folder id from outlook_list_folders). Requires confirm:true. Moving assigns a NEW message id, which is returned.
No input schema was published for this tool.
outlook_create_eventCreate a calendar event. Requires confirm:true. `timeZone` takes a WINDOWS zone name such as "Eastern Standard Time", not an IANA name.Create a calendar event. Requires confirm:true. `timeZone` takes a WINDOWS zone name such as "Eastern Standard Time", not an IANA name.
No input schema was published for this tool.
17 of 17 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
Outlook / Microsoft 365 for Claude — mail, calendar, contacts and tasks, with confirm-gated sending
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.