Microsoft Outlook Mail
Arcade.dev LLM tools for Outlook Mail
The Microsoft Outlook Mail toolkit provides Arcade LLM tools for reading, composing, sending, searching, and managing email in Outlook via the Microsoft Graph API. It covers both personal mailboxes and shared/delegated mailboxes (e.g., team inboxes like support@).
Capabilities
- Compose & Send: Create and immediately send emails, compose drafts, update drafts (subject, body, recipients), and send existing drafts — including reply-drafts, reply-all drafts, and forward drafts. Returns
message_idandconversation_idfor chaining follow-ups. - Read & Retrieve: Fetch full email content by ID with configurable body format (plain text or HTML), character limits, and pagination offset for long messages.
- Search & Filter: Full-text keyword search across the entire mailbox with structured filters (sender, read status, attachments, importance); list emails globally or within a specific folder; filter by exact property (conversation ID, flag status, etc.); sort by date, subject, sender, or importance.
- Folder & Attachment Metadata: List all mail folders (with unread/total counts) at any level of the hierarchy; list attachment metadata (name, size, type) for any message.
- Shared & Delegated Mailboxes: Full parity set of tools for shared/delegated mailboxes — compose, send, read, search, list, reply, update drafts, and check mailbox reachability — with replies sent from the shared address, not the signed-in user.
- Identity & Mailbox Settings: Retrieve the authenticated user's profile, mailbox settings, and auto-reply configuration via
WhoAmI.
OAuth
This toolkit uses OAuth 2.0 with Microsoft as the identity provider. Arcade handles the authorization flow automatically.
See the Microsoft auth provider docs for configuration details.
Available tools(26)
| Tool name | Description | Secrets | |
|---|---|---|---|
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. | |||
Compose a new draft email in Outlook | |||
Retrieve a single email message by its ID.
Returns email metadata 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, or set max_body_characters to None for the
full body.
Use this tool to read the full content of an email after finding it via
search_emails or any listing tool. | |||
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. | |||
List emails in the user's mailbox across all folders.
Results are sorted by sort_by in the sort_order direction.
Defaults to newest first (receivedDateTime descending).
Since this tool lists email across all folders, it may return sent items,
drafts, and other items that are not in the inbox. | |||
List emails in the user's mailbox across all folders filtering by a property.
Results are sorted by sort_by in the sort_order direction.
Defaults to newest first (receivedDateTime descending).
Sorting by RECEIVED_DATE_TIME works with any filter property. Sorting by
a different property (SUBJECT, SENDER, IMPORTANCE) while filtering by an
unrelated property may fail due to a Microsoft Graph API restriction. If
this happens, either sort by RECEIVED_DATE_TIME, or use list_emails (no
filter) with the desired sort_by. | |||
List the user's emails in the specified folder.
Exactly one of `well_known_folder_name` or `folder_id` MUST be provided.
Results are sorted by sort_by in the sort_order direction.
Defaults to newest first (receivedDateTime descending). | |||
List mail folders in the user's mailbox.
Returns folder names, IDs, unread counts, and total item counts.
Use the folder ID in follow-up calls to list_emails_in_folder.
Omit parent_folder_id to list top-level folders, or provide a folder ID
to list its child folders. | |||
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. | |||
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. Results are ordered by date sent (most recent first).
Email bodies are truncated to 255 characters for efficient skimming.
Use get_email with the message_id to retrieve the full email content.
Use this tool when the user wants to find emails by content, topic, sender,
or a combination of criteria. For exact property filtering (e.g., by
conversationId or flag status), use list_emails_by_property instead.
.. 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 (which other tools in
this toolkit do by default). Do not directly compare a ``message_id``
from ``search_emails`` against one from ``list_emails`` /
``get_email`` — the ID shapes differ. To chain from a search hit,
pass the returned ID straight back into ``get_email`` (which accepts
either format), and use ``conversation_id`` as the deduplication
key across result sets. | |||
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. | |||
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. | |||
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. | |||
Compose a new draft email in a shared or delegated mailbox. | |||
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, or set max_body_characters
to None for the full body. | |||
List attachment metadata for an email in a shared or delegated mailbox. | |||
List emails in a shared or delegated mailbox, across all folders.
Results are sorted by sort_by in the sort_order direction.
Defaults to newest first (receivedDateTime descending). | |||
List emails in a shared or delegated mailbox filtered by a property.
Results are sorted by sort_by in the sort_order direction.
Defaults to newest first (receivedDateTime descending). | |||
List emails in a specific folder of a shared or delegated mailbox.
Exactly one of `well_known_folder_name` or `folder_id` MUST be provided.
Results are sorted by sort_by in the sort_order direction.
Defaults to newest first (receivedDateTime descending). | |||
List mail folders in a shared or delegated mailbox.
Returns folder names, IDs, unread counts, and total item counts.
Use the folder ID when listing emails in a specific folder. | |||
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. | |||
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. Results are ordered by date sent (most recent first).
Email bodies are truncated to 255 characters. Retrieve a message by its
message ID when the full content is needed.
.. 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. | |||
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. | |||
Update an existing draft email in a shared or delegated mailbox.
Overwrites the subject and body of a draft (if provided) and modifies its
recipient lists by selectively adding or removing email addresses. | |||
Update an existing draft email in Outlook.
This tool overwrites the subject and body of a draft email (if provided),
and modifies its recipient lists by selectively adding or removing email addresses.
This tool can update any un-sent email:
- draft
- reply-draft
- reply-all draft
- forward draft |
Selected tools
No tools selected.
Click "Show all tools" to add tools.
Requirements
Select tools to see requirements
MicrosoftOutlookMail.CreateAndSendEmail
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
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.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
subject | string | Required | The subject of the email to create |
body | string | Required | The body of the email to create |
to_recipients | array<string> | Required | The email addresses that will be the recipients of the email |
cc_recipients | array<string> | Optional | The email addresses that will be the CC recipients of the email. |
bcc_recipients | array<string> | Optional | The email addresses that will be the BCC recipients of the email. |
body_type | string | Optional | The content type of the email body. Defaults to 'text'texthtml |
Requirements
Output
json— No description provided.MicrosoftOutlookMail.CreateDraftEmail
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Compose a new draft email in Outlook
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
subject | string | Required | The subject of the draft email to create |
body | string | Required | The body of the draft email to create |
to_recipients | array<string> | Required | The email addresses that will be the recipients of the draft email |
cc_recipients | array<string> | Optional | The email addresses that will be the CC recipients of the draft email. |
bcc_recipients | array<string> | Optional | The email addresses that will be the BCC recipients of the draft email. |
body_type | string | Optional | The content type of the email body. Defaults to 'text'texthtml |
Requirements
Output
json— A dictionary containing the created email detailsMicrosoftOutlookMail.GetEmail
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Retrieve a single email message by its ID. Returns email metadata 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, or set max_body_characters to None for the full body. Use this tool to read the full content of an email after finding it via search_emails or any listing tool.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
message_id | string | Required | The ID of the email message to retrieve. |
body_format | string | Optional | Format for the returned email body. PLAIN_TEXT strips HTML tags for clean reading. HTML returns the original markup. Defaults to PLAIN_TEXT.plain_texthtml |
max_body_characters | integer | Optional | Maximum number of characters to return from the email body. Defaults to 5000. Set to None to return the full body without a cap. |
body_offset | integer | Optional | Character offset to start reading the body from. Use this to continue reading a long email body that was capped by ``max_body_characters`` on a prior call. Defaults to 0 (start of body). |
Requirements
Output
json— A dictionary containing the email message.MicrosoftOutlookMail.ListEmailAttachments
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
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.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
message_id | string | Required | The ID of the email message to list attachments for. |
limit | integer | Optional | The maximum number of attachments to return. Max is 100. Defaults to 25. |
pagination_token | string | Optional | The pagination token to continue a previous request |
Requirements
Output
json— A dictionary containing a list of attachment metadata objects.MicrosoftOutlookMail.ListEmails
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List emails in the user's mailbox across all folders. Results are sorted by sort_by in the sort_order direction. Defaults to newest first (receivedDateTime descending). Since this tool lists email across all folders, it may return sent items, drafts, and other items that are not in the inbox.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
sort_by | string | Optional | Property to sort results by. Defaults to received date.receivedDateTimesubjectsender_email_addressimportance |
sort_order | string | Optional | Sort direction. Defaults to descending.ascendingdescending |
limit | integer | Optional | The number of messages to return. Max is 100. Defaults to 10. |
pagination_token | string | Optional | The pagination token to continue a previous request |
Requirements
Output
json— A dictionary containing a list of emailsMicrosoftOutlookMail.ListEmailsByProperty
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List emails in the user's mailbox across all folders filtering by a property. Results are sorted by sort_by in the sort_order direction. Defaults to newest first (receivedDateTime descending). Sorting by RECEIVED_DATE_TIME works with any filter property. Sorting by a different property (SUBJECT, SENDER, IMPORTANCE) while filtering by an unrelated property may fail due to a Microsoft Graph API restriction. If this happens, either sort by RECEIVED_DATE_TIME, or use list_emails (no filter) with the desired sort_by.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
mail_property | string | Required | The property to filter the emails by.subjectconversationIdreceivedDateTimesender/emailAddress/addressisReadhasAttachmentsimportanceflag/flagStatus |
operator | string | Required | The operator to use for the filter.eqnegtgeltlestartsWithendsWithcontains |
value | string | Required | The value to filter the emails by |
sort_by | string | Optional | Property to sort results by. Defaults to received date. Sorting by received date works with any filter property. Sorting by a different property while filtering by another may not be supported — if the combination fails, use sort_by=RECEIVED_DATE_TIME or use list_emails with the desired sort_by instead.receivedDateTimesubjectsender_email_addressimportance |
sort_order | string | Optional | Sort direction. Defaults to descending.ascendingdescending |
limit | integer | Optional | The number of messages to return. Max is 100. Defaults to 10. |
pagination_token | string | Optional | The pagination token to continue a previous request |
Requirements
Output
json— A dictionary containing a list of emailsMicrosoftOutlookMail.ListEmailsInFolder
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the user's emails in the specified folder. Exactly one of `well_known_folder_name` or `folder_id` MUST be provided. Results are sorted by sort_by in the sort_order direction. Defaults to newest first (receivedDateTime descending).
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
well_known_folder_name | string | Optional | The name of the folder to list emails from. Defaults to None.deleteditemsdraftsinboxjunkemailsentitemsstarredtasks |
folder_id | string | Optional | The ID of the folder to list emails from if the folder is not a well-known folder. Defaults to None. |
sort_by | string | Optional | Property to sort results by. Defaults to received date.receivedDateTimesubjectsender_email_addressimportance |
sort_order | string | Optional | Sort direction. Defaults to descending.ascendingdescending |
limit | integer | Optional | The number of messages to return. Max is 100. Defaults to 10. |
pagination_token | string | Optional | The pagination token to continue a previous request |
Requirements
Output
json— A dictionary containing a list of emails and a pagination token, if applicableMicrosoftOutlookMail.ListMailFolders
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List mail folders in the user's mailbox. Returns folder names, IDs, unread counts, and total item counts. Use the folder ID in follow-up calls to list_emails_in_folder. Omit parent_folder_id to list top-level folders, or provide a folder ID to list its child folders.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
parent_folder_id | string | Optional | ID of a parent folder to list child folders of. When omitted, lists top-level mailbox folders. |
include_hidden | boolean | Optional | Whether to include hidden folders in the response. Defaults to False. |
limit | integer | Optional | Maximum number of folders to return. Max is 100. Defaults to 25. |
pagination_token | string | Optional | The pagination token to continue a previous request. |
Requirements
Output
json— A dictionary containing a list of mail folders.MicrosoftOutlookMail.ReplyToEmail
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
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.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
message_id | string | Required | The ID of the email to reply to |
body | string | Required | The body of the reply to the email |
reply_type | string | Optional | Specify ReplyType.REPLY to reply only to the sender or ReplyType.REPLY_ALL to reply to all recipients. Defaults to ReplyType.REPLY.replyreply_all |
Requirements
Output
json— No description provided.MicrosoftOutlookMail.SearchEmails
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
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. Results are ordered by date sent (most recent first). Email bodies are truncated to 255 characters for efficient skimming. Use get_email with the message_id to retrieve the full email content. Use this tool when the user wants to find emails by content, topic, sender, or a combination of criteria. For exact property filtering (e.g., by conversationId or flag status), use list_emails_by_property instead. .. 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 (which other tools in this toolkit do by default). Do not directly compare a ``message_id`` from ``search_emails`` against one from ``list_emails`` / ``get_email`` — the ID shapes differ. To chain from a search hit, pass the returned ID straight back into ``get_email`` (which accepts either format), and use ``conversation_id`` as the deduplication key across result sets.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
keywords | array<string> | Optional | Words or phrases to search for across email subject, body, and sender fields. All terms must match (AND operator). Defaults to None. |
sender | array<string> | Optional | Filter by sender email address, display name, or alias. When multiple values are provided, emails from any of the senders are returned (OR operator). Defaults to None. |
recipient | array<string> | Optional | Filter by To-recipient email address or display name. When multiple values are provided, emails to any of the recipients are returned (OR operator). Defaults to None. |
attachment_name | array<string> | Optional | Filter by attachment filename. When multiple values are provided, emails with any of the attachment names are returned (OR operator). Defaults to None. |
has_attachments | boolean | Optional | Filter for emails with or without attachments. Defaults to None (no filter). |
importance | string | Optional | Filter by email importance level. Defaults to None (no filter).lownormalhigh |
is_read | boolean | Optional | Filter by read status. True for read emails, False for unread. Defaults to None (no filter). |
category | string | Optional | Filter by email category name. Categories are user-defined. Defaults to None (no filter). |
received_after | string | Optional | Filter for emails received on or after this date (YYYY-MM-DD). Dates are interpreted in UTC. Defaults to None (no filter). |
received_before | string | Optional | Filter for emails received on or before this date (YYYY-MM-DD). Dates are interpreted in UTC. Defaults to None (no filter). |
limit | integer | Optional | The maximum number of search results to return. Max is 25. Defaults to 10. |
pagination_token | string | Optional | The pagination token to continue a previous request. |
Requirements
Output
json— A dictionary containing a list of matching emails.MicrosoftOutlookMail.SendDraftEmail
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
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.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
message_id | string | Required | The ID of the draft email to send |
Requirements
Output
json— No description provided.MicrosoftOutlookMail.UpdateDraftEmail
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Update an existing draft email in Outlook. This tool overwrites the subject and body of a draft email (if provided), and modifies its recipient lists by selectively adding or removing email addresses. This tool can update any un-sent email: - draft - reply-draft - reply-all draft - forward draft
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
message_id | string | Required | The ID of the draft email to update |
subject | string | Optional | The new subject of the draft email. If provided, the existing subject will be overwritten |
body | string | Optional | The new body of the draft email. If provided, the existing body will be overwritten |
to_add | array<string> | Optional | Email addresses to add as 'To' recipients. |
to_remove | array<string> | Optional | Email addresses to remove from the current 'To' recipients. |
cc_add | array<string> | Optional | Email addresses to add as 'CC' recipients. |
cc_remove | array<string> | Optional | Email addresses to remove from the current 'CC' recipients. |
bcc_add | array<string> | Optional | Email addresses to add as 'BCC' recipients. |
bcc_remove | array<string> | Optional | Email addresses to remove from the current 'BCC' recipients. |
Requirements
Output
json— A dictionary containing the updated email detailsMicrosoftOutlookMail.WhoAmI
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Get comprehensive user profile and Outlook Mail environment information. This tool provides detailed information about the authenticated user including their name, email, mailbox settings, automatic replies configuration, and other important profile details from Outlook Mail services.
Parameters
No parameters required.
Requirements
Output
json— Get comprehensive user profile and Outlook Mail environment information.