Outlook Mail
Connect Outlook Mail once and hand every teammate a governed MCP endpoint with 37 tools ready to call from Claude, ChatGPT, Cursor, or any MCP client, inside the same permissions they already have, with every call checked and logged.
Automations & dashboards
From answering questions to doing the work
A person no longer has to ask. A trigger starts the work, inside the same permissions and the same audit log as everything else. Automations and live dashboards ship on the Black plan.
Automations
Put Outlook Mail work on a schedule.
A trigger starts a sequence of steps: call a Outlook Mail tool, transform the result, branch, wait, and ask a person when it matters.
Outlook Mail digest
Run 418 · started 2 minutes ago · on behalf of Emma Laurent
-
✓
Schedule
Every weekday at 08:00
0.2s -
✓
Fetch messages
Outlook Mail
1.4s -
✓
Group by owner
Transform
0.1s -
✓
Draft the digest
Agent step
Ran with 4 tools, returned a structured summary
6.2s -
Approve the digest
Needs approval
Assigned to Michael Brennan
Approve Deny -
Post the digest
Outlook Mail
Queued
Collections and dashboards
Report on Outlook Mail without asking.
Collections hold your own data, written by an automation and read by a dashboard that refreshes on a schedule.
Outlook Mail health
Refreshed 4 minutes ago · every 15 minutes · from the messages collection
Messages
1,284 ↓ 12%
Subscriptions
96 ↓ 8%
Needs attention
3 ↑ 2
Updated this week
412 ↑ 9%
Messages created
Last 14 days
By workspace
Share of activity
Engineering 34%
Product 27%
Support 21%
Sales 18%
AI tools
Outlook Mail tools for your AI agents
37 tools are ready to call through Elaichi's MCP endpoint the moment you connect Outlook Mail, governed by the same roles, restrictions, and audit log as everything else in Elaichi.
list_all_outlook_me
Get the profile of the signed-in Outlook user. Returns: id, displayName, userPrincipalName, mail, jobTitle, businessPhones, givenName, surname, mobilePhone, officeLocation, and preferredLanguage. No required parameters.
list_all_outlook_messages
List Outlook messages for a specific user. Returns: @odata.etag, id, createdDateTime, lastModifiedDateTime, changeKey, categories, receivedDateTime, sentDateTime, hasAttachments, internetMessageId, subject, bodyPreview, importance, parentFolderId, conversationId, isDeliveryReceiptRequested, isReadReceiptRequested, isRead, isDraft, webLink, inferenceClassification, body, sender, from,…
get_single_outlook_message_by_id
Get a single Outlook message by id. Returns: @odata.context, @odata.etag, id, subject, bodyPreview, parentFolderId, body, uniqueBody. Required: user_id, id.
create_a_outlook_message
Create a new Outlook message draft for a specific user. Returns the created message including id, subject, body, toRecipients, isDraft, importance, sender, and receivedDateTime. Required: user_id.
update_a_outlook_message_by_id
Update properties of an Outlook message by id. Returns the updated message including id, subject, body, isRead, importance, inferenceClassification, and toRecipients. Required: user_id, id.
delete_a_outlook_message_by_id
Delete an Outlook message by id. Returns an empty 204 response on success. Required: user_id, id.
outlook_messages_send_draft
Send a previously created draft message in Outlook. The sent message is saved in the Sent Items folder. Returns an empty 202 response on success. Required: user_id, message_id.
outlook_messages_send_mail
Send a new email message in Outlook via the sendMail action, optionally saving it to Sent Items. The message body can be provided in JSON or MIME format. Returns an empty 202 response on success. Required: user_id, message.
outlook_messages_reply
Reply to the sender of an Outlook message, saving the reply in the Sent Items folder. Accepts a comment and optional writable message properties such as toRecipients to add or override recipients. Returns an empty 202 response on success. Required: user_id, message_id.
outlook_messages_reply_all
Reply to all recipients of an Outlook message on behalf of a specified user. The original sender and all recipients are included automatically. Returns an empty 202 Accepted response on success. Required: user_id, message_id.
outlook_messages_forward
Forward an Outlook message from the connected user mailbox to one or more recipients. Returns an empty 202 Accepted response on success. Required: message_id.
outlook_messages_forward_as_user
Forward an Outlook message from a specific user's mailbox to one or more recipients. Returns an empty 202 Accepted response on success. Required: user_id, message_id, toRecipients.
outlook_messages_move
Move an Outlook message to a different folder by specifying a destination folder id or well-known folder name. Returns the moved message object including id, subject, receivedDateTime, parentFolderId, body, and toRecipients. Required: user_id, message_id, destinationId.
list_all_outlook_search
Search for content across Outlook entities such as messages and events via the Microsoft Graph search API. Returns: hitId, rank, summary, resource. Required: requests with entityTypes and query. Max 25 results per page.
list_all_outlook_attachments
List attachments for an Outlook message. Returns: @odata.type, id, lastModifiedDateTime, name, contentType, size, isInline, contentId, contentLocation, contentBytes, item.type for each attachment. Required: message_id.
outlook_attachments_download
Download the raw binary contents of a file or item attachment from an Outlook message. Returns the raw binary content stream of the attachment (MIME format for item attachments). Required: message_id, attachment_id. Requesting the $value of a reference attachment returns HTTP 405.
get_single_outlook_attachment_by_id
Get a single attachment from a specific Outlook message, returning its metadata and content. Returns: @odata.context, @odata.type, id, lastModifiedDateTime, name, contentType, size, isInline, contentId, contentLocation, contentBytes, item.context, @odata.type, id, lastModifiedDateTime, name, contentType, size, isInline, contentId, contentLocation, contentBytes, item. Required: message_id, id.
outlook_attachments_download_as_user
Download the raw binary contents of a specific attachment from an Outlook user's message. Returns the raw attachment content as a binary stream — for file attachments the content type matches the original file; for item attachments (contact, event, message) the raw contents are returned in MIME format. Required: user_id, message_id, attachment_id.
list_all_outlook_mail_folders
List all mail folders in the specified user's Outlook mailbox, including any mail search folders. Returns: id, displayName, parentFolderId, childFolderCount, unreadItemCount, totalItemCount, isHidden, @odata.type, isSupported, filterQuery, includeNestedFolders, sourceFolderIds, sizeInBytes. Required: user_id.
get_single_outlook_mail_folder_by_id
Get a single mail folder in Outlook by id. Returns: id, displayName, parentFolderId, childFolderCount, unreadItemCount, totalItemCount, isHidden, sizeInBytes. Required: user_id, id.
create_a_outlook_mail_folder
Create a new mail folder in the root folder of the user's Outlook mailbox. Supports regular folders and search folders via @odata.type. Returns: id, displayName, parentFolderId, childFolderCount, unreadItemCount, totalItemCount, isHidden, @odata.type, filterQuery, includeNestedFolders, sourceFolderIds.type, filterQuery, includeNestedFolders, sourceFolderIds. Required: user_id, displayName.
update_a_outlook_mail_folder_by_id
Update the display name of a mail folder or the filter query of a search folder in Outlook. Returns: id, displayName, parentFolderId, childFolderCount, unreadItemCount, totalItemCount, @odata.type, filterQuery.type, filterQuery. Required: user_id, id.
delete_a_outlook_mail_folder_by_id
Delete a mail folder in Outlook by id. Returns an empty 204 response on success. Required: user_id, id.
list_all_outlook_child_folders
List child mail folders under a specified parent folder in Outlook. Returns: id, displayName, parentFolderId, childFolderCount, unreadItemCount, totalItemCount, isHidden, @odata.type, isSupported, includeNestedFolders, sourceFolderIds, filterQuery, sizeInBytes. Required: user_id, mail_folder_id.
create_a_outlook_child_folder
Create a new child mail folder under the specified parent folder in Outlook. Returns the created folder with id, displayName, parentFolderId, childFolderCount, unreadItemCount, totalItemCount, isHidden. Required: user_id, mail_folder_id, displayName.
get_single_outlook_child_folder_by_id
Get a single child mail folder by id in Outlook. Returns: id, displayName, parentFolderId, childFolderCount, unreadItemCount, totalItemCount, isHidden, @odata.type, isSupported, includeNestedFolders, sourceFolderIds, filterQuery, sizeInBytes. Required: user_id, mail_folder_id, id.
delete_a_outlook_child_folder_by_id
Delete a child mail folder by id in Outlook. Returns an empty 204 response on success. Required: user_id, mail_folder_id, id.
update_a_outlook_child_folder_by_id
Update a child mail folder's properties by id in Outlook. Returns the updated folder with id, displayName, parentFolderId, childFolderCount, unreadItemCount, totalItemCount, isHidden. Required: user_id, mail_folder_id, id.
list_all_outlook_folder_messages
List messages in a specific Outlook mail folder for a given user, with attachments expanded inline. Returns: @odata.etag, id, createdDateTime, lastModifiedDateTime, changeKey, categories, receivedDateTime, sentDateTime, hasAttachments, internetMessageId, subject, bodyPreview, importance, parentFolderId, conversationId, isDeliveryReceiptRequested, isReadReceiptRequested, isRead, isDraft, webLink,…
list_all_outlook_users
List users in Microsoft Graph. Returns a paged collection of user objects with id, displayName, mail, userPrincipalName, jobTitle, givenName, surname, and other directory profile fields for each user in the tenant. No required parameters.
get_single_outlook_user_by_id
Get a single Outlook (Microsoft Graph) user by id. Returns the user object including id, displayName, givenName, mail, userPrincipalName, and businessPhones. Required: id.
list_all_outlook_subscriptions
List Microsoft Graph webhook subscriptions. Returns: id, resource, applicationId, changeType, clientState, notificationUrl, lifecycleNotificationUrl, expirationDateTime, creatorId, latestSupportedTlsVersion, encryptionCertificate, encryptionCertificateId, includeResourceData, notificationContentType, notificationQueryOptions, notificationUrlAppId. This method does not support OData query…
get_single_outlook_subscription_by_id
Get a single Microsoft Graph webhook subscription by id. Returns: id, resource, applicationId, changeType, clientState, notificationUrl, lifecycleNotificationUrl, expirationDateTime, creatorId, latestSupportedTlsVersion, encryptionCertificate, encryptionCertificateId, includeResourceData, notificationContentType, notificationUrlAppId. Required: id.
create_a_outlook_subscription
Create a Microsoft Graph subscription to receive change notifications when subscribed resources change. Returns the created subscription including id, resource, changeType, notificationUrl, expirationDateTime, applicationId, creatorId, and latestSupportedTlsVersion. Required: changeType, notificationUrl, resource, expirationDateTime.
update_a_outlook_subscription_by_id
Update a Microsoft Graph subscription's expiration time for renewal and/or notification URL for delivery. Returns the updated subscription object including id, resource, changeType, notificationUrl, expirationDateTime, and creatorId. Required: id.
delete_a_outlook_subscription_by_id
Delete a Microsoft Graph subscription by id. Returns an empty 204 response on success. Required: id.
outlook_subscriptions_reauthorize
Reauthorize a Microsoft Graph subscription by triggering a reauthorization validation request to the notification URL. Returns an empty 204 response on success. Required: subscription_id.
No tools match your search.
How it works
From Outlook Mail account to governed MCP endpoint
Connect
Link a Outlook Mail account through Elaichi's hosted connect flow. Credentials are vaulted, so nobody, including the AI, ever sees them.
Compose
The connection becomes a toolbox instantly. Curate which Outlook Mail tools are exposed, rename them, or freeze arguments.
Authorize
Point Claude, ChatGPT, Cursor, or any MCP client at the one Elaichi endpoint and sign in with OAuth, governed by roles, restrictions, and audit logs.
Put your agents to work in the tools you already use
Start a 14-day Gold trial. Connect a product, curate a toolbox, and paste a governed MCP endpoint into Claude, ChatGPT, or Cursor in minutes.