Smithery's MCP Proxy and managed identity shut down on October 31. See what's changing

SmitherySign up for Arcade

Microsoft Outlook Mail

Arcade toolkit · docs.arcade.dev

The Microsoft Outlook Mail toolkit connects Arcade to a user's Outlook mailbox via Microsoft Graph, enabling LLM agents to read, compose, send, organize, search, and manage mail — including shared and delegated mailboxes — through a structured set of tools.

Capabilities

  • Reading & searching mail: Retrieve individual messages (with pagination for long bodies), list emails by folder or conversation, search full-text across the mailbox with structured filters (sender, read state, attachments, importance, date), list folders and attachment metadata, and check the signed-in user's profile and mailbox timezone.
  • Composing & sending: Create and immediately send new emails, reply (or reply-all) to existing threads, forward messages with attachments, and check or set out-of-office automatic replies with per-audience message control.
  • Draft lifecycle: Save new drafts or revise existing ones, create reply/reply-all/forward drafts (without sending), then send any draft later — returning message_id and conversation_id for chaining.
  • Organization: Move batches of up to 50 emails into any folder, mark messages read/unread or flag/unflag them, create and rename mail folders, and manage categories (create, recolor, rename, delete, apply, remove) across the entire mailbox.
  • Shared & delegated mailboxes: A parallel set of tools mirrors every personal-mailbox capability for shared or delegated mailboxes (team inboxes, executive delegation), sending from the shared address and requiring Full Access permission for write operations; a capability checker tool probes reachability before committing.

Tools40

  • MicrosoftOutlookMail_CategorizeEmails

    Put a category on emails in the user's own mailbox, or take one off, keeping every other category each email carries. One call for a list of ids, a whole thread, a search, or every email that already carries the category, reporting one outcome per email with its categories before and after. Select exactly one way. The category must already be in the mailbox's category list to be added, and this call cannot create one; a category that is no longer in the list can still be removed. An email already in the state asked for is a success that changed nothing, and a job needing more than 50 changes is refused whole rather than part-done. Tagging, labelling or categorizing mail is this call; it never moves the mail and never flags it.

  • MicrosoftOutlookMail_CreateAndSendEmail

    Create and immediately send a new email in Outlook to the specified recipients. Returns the sent message's message_id and conversation_id so callers can immediately chain follow-ups (e.g. reply to what they just sent) without having to search Sent Items. The confirmation message names how many recipient addresses the email went to across To, Cc and Bcc.

  • MicrosoftOutlookMail_CreateDraftForward

    Create a forward of an existing Outlook email, with its attachments, as an unsent draft. Recipients are optional, but the draft needs one before it can be sent. Returns the draft; its message_id is the draft's own id, used to revise or send it later.

  • MicrosoftOutlookMail_CreateDraftReply

    Create a reply or reply-all draft for an existing Outlook email without sending it. The draft is threaded to the original message and saved to the Drafts folder, so it can be reviewed, edited, and sent later. For a reply-all, the original recipients (excluding the mailbox owner) are populated automatically. Use cc_add to copy someone in on the draft, including someone who was never on the thread, and cc_remove to take somebody off the copied line; who the reply is addressed to is the thread's own and reply_type decides it. This tool never sends the email.

  • MicrosoftOutlookMail_CreateMailFolder

    Create a mail folder in the user's own Outlook mailbox, to keep related messages together. The folder is created in the signed-in user's own mailbox, and in no other: this tool cannot reach a mailbox named by address, whether a team mailbox or another person's. Safe to call for a folder that may already exist: an existing folder of the same name under the same parent is returned instead of a duplicate. A parent_folder that names no folder in the mailbox creates nothing.

  • MicrosoftOutlookMail_DeleteEmailCategory

    Delete a category (label or tag) from the user's own Outlook mailbox and take it off every email that carries it, in every folder. The category is deleted only once no email carries it. Up to 50 emails per call; a bigger job is refused before anything changes. Running it again finishes a call that stopped short. Calendar events and bounce reports keep the name. Taking a category off emails while keeping it is not this call.

  • MicrosoftOutlookMail_ForwardEmail

    Forward an existing email in Outlook, with its attachments, and send it immediately. At least one recipient is required across to_recipients, cc_recipients and bcc_recipients. Returns the forward's message_id, its conversation_id (the original thread's) and how many addresses it reached.

  • MicrosoftOutlookMail_GetAutomaticReplies

    Check the user's out-of-office automatic replies (auto-reply, vacation responder): whether they are going out now, what they say, to whom, and until when. Reads the signed-in user's own mailbox. These are the replies Outlook sends to incoming mail, not an out-of-office block on the calendar. Reports the current state only. Times are UTC, with a copy in the mailbox's timezone.

  • MicrosoftOutlookMail_GetEmail

    Retrieve a single email message by its ID. Returns email metadata, categories, and body content. By default, the body is returned as plain text (HTML tags stripped) and capped at 5000 characters. Set body_format to HTML to get the original markup. Use body_offset to continue reading long emails: body_total_characters reports how long the body is, and body_next_offset is where the next call resumes. Use this tool to read the full content of an email whose ID is already known, to see which categories it is tagged with, and to page through a body too long for one response.

  • MicrosoftOutlookMail_ListEmailAttachments

    List attachment metadata for an email message. Returns metadata only (name, size, type, etc.). Attachment content is not included. Use this tool when the user wants to know what files are attached to an email.

  • MicrosoftOutlookMail_ListEmailCategories

    List the categories (labels or tags) in the user's Outlook mailbox. Returns categories, not emails. Two names can look alike; use category_id to tell them apart. Emails can carry a category not in this list.

  • MicrosoftOutlookMail_ListEmails

    List email messages in the user's mailbox. Returns ordinary mail by default: Deleted Items, Junk Email, Sent Items and Drafts are left out unless named in folders, folder_ids or conversation_id. Rows carry a 255-character body preview unless include_body is set, which returns each message in full up to max_body_characters.

  • MicrosoftOutlookMail_ListMailFolders

    List mail folders in the user's mailbox. Returns folder names, IDs, unread counts, and total item counts. A returned folder ID is what scopes a mail listing to a user-created folder. Omit parent_folder_id to list top-level folders, or provide a folder ID to list its child folders.

  • MicrosoftOutlookMail_MarkEmails

    Set the read state or the follow-up flag on a selection of emails in the user's own mailbox. One call for a list of ids, a whole thread, or a search, reporting one outcome per email. Select exactly one way. An email already in the state asked for is a success that changed nothing, and a job needing more than 50 changes is refused whole rather than part-done. A request to star, pin, flag or follow up on mail is this call; it never moves the mail.

  • MicrosoftOutlookMail_MoveEmails

    Move a selection of emails into one folder in the user's own mailbox. Use this single call for a pile of emails instead of moving them one at a time: it takes a list of ids, a whole conversation, or a search, and reports one outcome per email. Select the emails exactly one way. Naming none, or naming two, is refused and moves nothing, as is a selection of more than 50 emails. A conversation spans folders, so filing a thread moves the unsent drafts and sent replies in it too unless folders narrows the selection. Run the request with count_only first when that matters: it reports which folders the mail would leave before anything moves. Anything the caller got wrong -- the selection, an id, a folder that names several folders or none -- is refused before the first email moves. After that, an email Outlook refuses is reported as a failed row beside the ones that moved rather than failing the whole request. Filing into junk is not a reversible hide: Outlook permanently deletes mail left in the Junk Email folder after 14 days, it does not report the sender to Microsoft, and it does not train the junk filter. Tell the user that before junking mail on their behalf. Outlook does not record where an email came from, so putting mail back is a move to the inbox like any other: name inbox as the destination, and name the folder it is coming out of in folders so mail sitting elsewhere is left alone.

  • MicrosoftOutlookMail_RenameEmailCategory

    Rename a category (label or tag) in the user's own Outlook mailbox, keeping it on every email that carries it, in every folder. Outlook cannot rename in place, so this creates the new name in the old one's colour, or uses it if it already exists, joining the emails to that category. It moves the tag on each email and deletes the old name only once no email carries it. Up to 50 emails per call; a bigger job is refused before anything changes. A call that stops short leaves both names, and running it again finishes it. Calendar events and bounce reports keep the old name. A change of letter case or surrounding spaces alone is not possible.

  • MicrosoftOutlookMail_ReplyToEmail

    Reply to an existing email in Outlook. Use this tool to reply to the sender or all recipients of the email. Specify the reply_type to determine the scope of the reply. Use cc_add to copy someone in on the reply, including someone who was never on the thread, and cc_remove to take somebody off the copied line; who the reply is addressed to is the thread's own and reply_type decides it. The confirmation message names how many recipient addresses the reply went to across To, Cc and Bcc, when Outlook reported both the To and Cc lines.

  • MicrosoftOutlookMail_SaveDraftEmail

    Save an email draft in Outlook, creating a new one or revising one that exists. Supplying message_id revises that draft; omitting it creates a new one. Only the fields supplied are written — anything left out keeps whatever the draft already had. Nothing is ever sent. Returns a DraftMessage. Its message_id identifies the saved draft and can be passed straight back to this tool to make further changes to it.

  • MicrosoftOutlookMail_SaveEmailCategory

    Create a category (label or tag) in the user's own Outlook mailbox, or recolor an existing one. Cannot add one to a shared mailbox. Does not rename categories or tag emails. Safe to repeat.

  • MicrosoftOutlookMail_SearchEmails

    Search emails across the user's entire mailbox. Combines full-text keyword search with structured filters for sender, read status, attachments, importance, and more. All provided parameters are combined with AND. At least one search criterion is required. folder, only_focused, include_body and limit narrow or page a result set rather than build one, so they are not enough on their own. Junk Email and Deleted Items are left out unless folder names one of them; sent mail and drafts stay searchable. Rows carry a 255-character body preview unless include_body is set. Results come back in the search index's own order and cannot be re-sorted. Outlook's search index answers one query with at most 1,000 messages, so a walk that runs out of pages has reached the end of what the index serves rather than the end of the mailbox. The folders left out, the Focused split and the exact category match are applied to those 1,000 after they are chosen, so a broad term matching a lot of junk can come back with few rows, or none, while matching mail exists. A narrower term reaches it; a smaller limit does not. Use this tool when the user wants to find emails by content, topic, sender, or a combination of criteria. .. note:: Microsoft Graph's $search on messages is backed by the Microsoft Search index, which returns message IDs in the legacy REST-ID format even when the client opts into Immutable IDs. Do not directly compare these message IDs with Immutable IDs; the formats differ. Use conversation_id to correlate conversations across result sets.

  • MicrosoftOutlookMail_SendDraftEmail

    Send an existing draft email in Outlook. Sends any un-sent message — draft, reply-draft, reply-all draft, or forward draft — and returns the message's message_id and conversation_id so callers can chain follow-ups (e.g. reply to the message they just sent) without searching Sent Items.

  • MicrosoftOutlookMail_SetAutomaticReplies

    Turn the user's out-of-office automatic replies (auto-reply, vacation responder) on, off, or on a schedule, and set what they say. Acts on the signed-in user's own mailbox. This is the reply Outlook sends to incoming mail; it does not forward mail or block time on the calendar. Omitted arguments keep what is stored, except as each one says. A start already past sends replies at once.

  • MicrosoftOutlookMail_SharedMailboxCategorizeEmails

    Put a category on emails in a shared or delegated mailbox, or take one off, keeping every other category each email carries. One call for a list of ids, a whole thread, a search, or every email that already carries the category, reporting one outcome per email with its categories before and after. Select exactly one way. The category must already be in that mailbox's category list to be added, and this call cannot create one; a category that is no longer in the list can still be removed. An email already in the state asked for is a success that changed nothing, and a job needing more than 50 changes is refused whole rather than part-done. Tagging, labelling or categorizing mail is this call; it never moves the mail and never flags it. Needs Full Access to the mailbox; a folder-level share is refused.

  • MicrosoftOutlookMail_SharedMailboxCheckCapabilities

    Check which provided mailboxes are reachable via shared mailbox APIs. This is a capability checker, not an Exchange permission inventory. It verifies whether each provided mailbox can be reached through a cheap, read-only Graph call. When checking multiple mailboxes, pass them together in one owner_emails list so results can be deduplicated and rate-limited consistently. Microsoft Graph does not expose exact Send As vs Send on behalf permissions, so the response names that limitation explicitly instead of guessing.

  • MicrosoftOutlookMail_SharedMailboxCreateAndSendEmail

    Create and immediately send an email from a shared or delegated mailbox. Use this when the user wants the email to be sent from a team inbox (like sales@ or support@) or from an executive's mailbox they have been delegated access to, rather than from their own address. The confirmation message names how many recipient addresses the email went to across To, Cc and Bcc.

  • MicrosoftOutlookMail_SharedMailboxCreateDraftForward

    Create a forward of an email in a shared or delegated mailbox, with its attachments, as an unsent draft. Saved to that mailbox's Drafts folder, from the shared mailbox address. Recipients are optional, but the draft needs one before it can be sent.

  • MicrosoftOutlookMail_SharedMailboxCreateDraftReply

    Create a reply or reply-all draft in a shared or delegated mailbox without sending it. The draft is threaded to the original message and saved to the mailbox's Drafts folder, so it can be reviewed, edited, and sent later. For a reply-all, the original recipients (excluding the mailbox owner) are populated automatically. Use cc_add to copy someone in on the draft, including someone who was never on the thread, and cc_remove to take somebody off the copied line; who the reply is addressed to is the thread's own and reply_type decides it. This tool never sends the email.

  • MicrosoftOutlookMail_SharedMailboxCreateMailFolder

    Create a mail folder in a shared or delegated mailbox, to keep related messages together. Creates the folder in the mailbox owner_email names, which is what a request for a folder in a team mailbox, or in another person's, asks for. The folder id it returns addresses that mailbox only. Safe to call for a folder that may already exist: an existing folder of the same name under the same parent is returned instead of a duplicate. A parent_folder that names no folder in that mailbox creates nothing.

  • MicrosoftOutlookMail_SharedMailboxForwardEmail

    Forward an email in a shared or delegated mailbox, with its attachments, and send it immediately. Sent from the shared mailbox address, not the signed-in user's own. At least one of to_recipients, cc_recipients or bcc_recipients must be non-empty.

  • MicrosoftOutlookMail_SharedMailboxGetEmail

    Retrieve a single email from a shared or delegated mailbox by message ID. Returns email metadata and body content. By default, the body is returned as plain text (HTML tags stripped) and capped at 5000 characters. Use body_offset to continue reading long emails: body_total_characters reports how long the body is, and body_next_offset is where the next call resumes.

  • MicrosoftOutlookMail_SharedMailboxListEmailAttachments

    List attachment metadata for an email in a shared or delegated mailbox.

  • MicrosoftOutlookMail_SharedMailboxListEmails

    List email messages in a shared or delegated mailbox. Returns ordinary mail by default: Deleted Items, Junk Email, Sent Items and Drafts are left out unless named in folders, folder_ids or conversation_id. Each row reports the folder it came from in parent_folder_id. Every filter narrows the same result set, so unread mail in one folder is a single call. Naming exactly one folder reads that folder itself, which is also the only read a mailbox shared one folder at a time can serve. If a call that names no folder, or several, is refused for lack of access to the whole mailbox, repeat it naming one folder at a time.

  • MicrosoftOutlookMail_SharedMailboxListMailFolders

    List mail folders in a shared or delegated mailbox. Returns folder names, IDs, unread counts, and total item counts. A returned folder ID is what scopes a mail listing to a user-created folder.

  • MicrosoftOutlookMail_SharedMailboxMarkEmails

    Set the read state or the follow-up flag on emails in a shared or delegated mailbox. One call for a list of ids, a whole thread, or a search, reporting one outcome per email. Select exactly one way. An email already in the state asked for is a success that changed nothing, and a job needing more than 50 changes is refused whole rather than part-done. A request to star, pin, flag or follow up on mail is this call; it never moves the mail. Needs Full Access to the mailbox; a folder-level share is refused.

  • MicrosoftOutlookMail_SharedMailboxMoveEmails

    Move a selection of emails into one folder in a shared or delegated mailbox. Use this single call for a pile of emails instead of moving them one at a time: it takes a list of ids, a whole conversation, or a search, and reports one outcome per email. Select the emails exactly one way. Naming none, or naming two, is refused and moves nothing, as is a selection of more than 50 emails. A conversation spans folders, so filing a thread moves the unsent drafts and sent replies in it too unless folders narrows the selection. Run the request with count_only first when that matters: it reports which folders the mail would leave before anything moves. Anything the caller got wrong -- the selection, an id, a folder that names several folders or none -- is refused before the first email moves. After that, an email Outlook refuses is reported as a failed row beside the ones that moved rather than failing the whole request. Filing into junk is not a reversible hide: Outlook permanently deletes mail left in the Junk Email folder after 14 days, it does not report the sender to Microsoft, and it does not train the junk filter. Tell the user that before junking mail on their behalf. Outlook does not record where an email came from, so putting mail back is a move to the inbox like any other: name inbox as the destination, and name the folder it is coming out of in folders so mail sitting elsewhere is left alone. Filing needs Full Access to the mailbox. A mailbox the signed-in user holds one folder at a time instead -- a MAPI folder share -- is refused with that said, because every selection here reads the mailbox above the shared folder.

  • MicrosoftOutlookMail_SharedMailboxReplyToEmail

    Reply to an email in a shared or delegated mailbox. The reply is sent from the shared mailbox address, not the signed-in user's personal address. Specify reply_type to reply only to the sender or to all recipients. Use cc_add to copy someone in on the reply, including someone who was never on the thread, and cc_remove to take somebody off the copied line; who the reply is addressed to is the thread's own and reply_type decides it. The confirmation message names how many recipient addresses the reply went to across To, Cc and Bcc, when Outlook reported the line it was addressed to.

  • MicrosoftOutlookMail_SharedMailboxSaveDraftEmail

    Save an email draft in a shared or delegated Outlook mailbox. Supplying message_id revises that draft; omitting it creates a new one. Only the fields supplied are written — anything left out keeps whatever the draft already had. Nothing is ever sent. Returns a DraftMessage. Its message_id identifies the saved draft and can be passed straight back to this tool to make further changes to it.

  • MicrosoftOutlookMail_SharedMailboxSearchEmails

    Search emails in a shared or delegated mailbox. Combines full-text keyword search with structured filters for sender, read status, attachments, importance, and more. All provided parameters are combined with AND. At least one search criterion is required. folder, only_focused, include_body and limit narrow or page a result set rather than build one, so they are not enough on their own. Junk Email and Deleted Items are left out unless folder names one of them; sent mail and drafts stay searchable. Rows carry a 255-character body preview unless include_body is set. Results come back in the search index's own order and cannot be re-sorted. Outlook's search index answers one query with at most 1,000 messages, so a walk that runs out of pages has reached the end of what the index serves rather than the end of the mailbox. The folders left out, the Focused split and the exact category match are applied to those 1,000 after they are chosen, so a broad term matching a lot of junk can come back with few rows, or none, while matching mail exists. A narrower term reaches it; a smaller limit does not. .. note:: Search results may use a different Graph ID shape than list/get results. Use returned message IDs directly for message retrieval and conversation_id for deduplication across result sets.

  • MicrosoftOutlookMail_SharedMailboxSendDraftEmail

    Send an existing draft email from a shared or delegated mailbox. This tool can send any un-sent email in the shared mailbox: - draft - reply-draft - reply-all draft - forward draft Returns the message's message_id and conversation_id so callers can chain follow-ups (e.g. reply to the message they just sent) without searching Sent Items.

  • MicrosoftOutlookMail_WhoAmI

    Get the signed-in user's profile and the mailbox this toolkit acts on. Returns the user's name, email, tenant and other profile details, plus the mailbox the toolkit reads mail from. mailbox_timezone identifies the mailbox's configured time zone or the fallback identified by mailbox_timezone_source. received_date_time remains in UTC; received_date_time_local contains its local representation when available. mailbox_timezone may be a Windows name such as "Eastern Standard Time" rather than an IANA identifier - that names a zone observing daylight saving, not a fixed offset. mailbox_timezone_source says where that zone came from: "mailbox" and "mailbox_utc" mean the mailbox itself names the zone, whereas "default_not_configured" (the mailbox names none) and "default_unreadable" (the setting could not be read) mean UTC is a fallback this toolkit applied, not a zone the mailbox is set to. On either fallback, do not tell the user their mailbox is configured for that zone.