Microsoft Outlook Mail
Service domainEMAIL
Arcade Optimized
Arcade.dev LLM tools for Outlook Mail
26tools
The Microsoft Outlook Mail toolkit lets Arcade-powered agents read, compose, organize, and search email in Outlook mailboxes via Microsoft Graph — including both personal and shared/delegated mailboxes.
Capabilities
- Compose & send — Create and immediately send emails, reply (single or reply-all) to threads, or forward messages; returns
message_idandconversation_idfor chaining follow-ups without searching Sent Items. - Draft management — Create, revise, and save drafts at any stage (new, reply, reply-all, forward) without sending; send any saved draft when ready.
- Read & search — Retrieve individual messages with paginated body reading, list mailbox contents with folder and conversation scoping, and run full-text + structured searches across up to 1,000 indexed messages.
- Folder & organization — List folders (with unread/total counts), create folders (idempotent), move up to 50 emails at a time by ID list, conversation, or search result, with per-message outcome reporting.
- Attachment inspection — List attachment metadata (name, size, type) for any message without downloading content.
- Shared & delegated mailboxes — Full parity set of tools for team inboxes and delegated mailboxes (send-as, draft, reply, search, move, folder management), plus a capability checker to verify which mailboxes are reachable before acting.
OAuth
This toolkit authenticates via OAuth 2.0 with Microsoft as the identity provider. See the Arcade Microsoft auth provider docs for setup details, required Graph permissions, and token configuration.
Available tools(26)
26 of 26 tools
Operations
Behavior
| 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.
The confirmation message names how many recipient addresses the email went to
across To, Cc and Bcc. | |||
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. | |||
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. | |||
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: 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, and to page through a body too long for one response. | |||
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 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. | |||
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. | |||
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. | |||
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. | |||
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. | |||
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 and the Focused
split 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. | |||
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.
The confirmation message names how many recipient addresses the email went to
across To, Cc and Bcc. | |||
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. | |||
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. | |||
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. | |||
List attachment metadata for an email in a shared or delegated mailbox. | |||
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. | |||
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. | |||
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. | |||
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. | |||
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. | |||
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 and the Focused
split 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. | |||
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. |
Page 1 of 2(25 of 26)
Get Building
Last updated on