Skip to content

Outlook

Outlook

Outlook is Microsoft’s email and calendaring platform integrating contacts, scheduling, and communication in a unified workspace. With the SquadOS integration, your agents can send emails, create and update calendar events, manage contacts, move messages between folders, and create tasks in Microsoft To Do — all via the Microsoft Graph API.

This tool uses OAuth 2.0 (OAUTH2) to connect. It also supports S2S_OAUTH2 for server-to-server (application) authentication in production contexts with application permissions.

You will need to authorize access to your Microsoft account. The OAuth flow is managed by Composio.

  1. Visit https://composio.dev/auth/outlook for a step-by-step guide on creating and configuring custom OAuth credentials for Microsoft Outlook.
  2. Sign in with your Microsoft account and authorize the requested scopes.
  3. For S2S (application permissions), register an app in the Azure Portal and configure the required API scopes.
  1. Go to Tools in the side menu (/admin/tools).
  2. Open the Available tab and search for Outlook.
  3. Click the card to open the details and hit Connect.
  4. You’re taken to the secure connection page hosted by Composio, where you authorize access to your Microsoft account via OAuth.
  5. Once done, you’re sent back to SquadOS with the account connected and the tool available for your agents. (Connection-flow details in Organization Tools.)

How do I set up custom OAuth credentials for Microsoft (Outlook)?

Section titled “How do I set up custom OAuth credentials for Microsoft (Outlook)?”

For a step-by-step guide on creating and configuring your own Microsoft (Outlook) OAuth credentials with Composio, see How to create OAuth credentials for Microsoft (Outlook).

Why does the Outlook new message trigger only return a message ID?

Section titled “Why does the Outlook new message trigger only return a message ID?”

Outlook’s webhooks send only the message ID on trigger events. To get the full message (subject, body, headers), call the OUTLOOK_GET_MESSAGE tool with that message ID.

Why doesn’t OUTLOOK_SEND_EMAIL return message details?

Section titled “Why doesn’t OUTLOOK_SEND_EMAIL return message details?”

Microsoft Graph’s send endpoint returns an HTTP 202 with no message details. To get the message ID and conversation ID, create a draft first with OUTLOOK_CREATE_DRAFT, then send it with OUTLOOK_SEND_DRAFT.

The @odata.context URL provides metadata about the response (entity set, service version, and schema info) to help clients interpret the payload structure. It’s primarily used for pagination and data parsing — not as a direct URL to the resource itself.

OUTLOOK_SEND_EMAIL

Sends an email with subject, body, recipients, and optional attachments via Microsoft Graph API. Supports comma-separated email addresses in the to field for multiple recipients. Accepts either a single file or a list of files as attachments.

NameTypeRequiredDescription
tostringYesThe primary recipient’s email address(es). You can provide a single email or multiple emails separated by commas.
bodystringYesThe content of the email body as a plain string (plain text or HTML based on is_html).
subjectstringYesThe subject line of the email.
is_htmlbooleanNoSpecifies if the email body is HTML; true for HTML, false for plain text.
to_namestringNoThe display name of the primary recipient.
user_idstringNoThe user’s email address or the alias me to represent the authenticated user.
cc_emailsarrayNoList of email addresses for CC recipients.
bcc_emailsarrayNoList of email addresses for BCC recipients.
attachmentstringNoFile(s) to attach. Accepts a single file or a list of files.
from_addressstringNoOptional From address to set on the message (send as/on behalf). Requires appropriate mailbox permissions.
save_to_sent_itemsbooleanNoIndicates if the email should be saved in ‘Sent Items’.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_CREATE_DRAFT

Creates a new Outlook email draft with subject, body, recipients, and an optional attachment. For creating a draft reply to an existing conversation, use OUTLOOK_CREATE_DRAFT_REPLY instead.

NameTypeRequiredDescription
bodystringYesContent of the email draft; use is_html to specify if HTML or plain text.
subjectstringYesSubject line for the email draft.
is_htmlbooleanNoSpecifies if body is HTML. If false, body is plain text.
to_recipientsarrayNoOptional list of primary ‘To’ recipient email addresses as an array of strings.
cc_recipientsarrayNoOptional list of CC recipient email addresses.
bcc_recipientsarrayNoOptional list of BCC recipient email addresses.
attachmentstringNoOptional file(s) to attach to the draft.
user_idstringNoUser ID (GUID) or user principal name for S2S authentication.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_SEND_DRAFT

Sends an existing draft message. Use after creating a draft when you want to deliver it to recipients immediately.

NameTypeRequiredDescription
message_idstringYesThe unique identifier of the draft message to send.
user_idstringNoThe user’s email address or me to represent the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_REPLY_EMAIL

Sends a reply to an Outlook email message with optional HTML formatting, identified by message_id, allowing optional CC and BCC recipients.

NameTypeRequiredDescription
message_idstringYesThe Microsoft Graph message ID (Base64-encoded string starting with AAMk). Obtain from OUTLOOK_LIST_MESSAGES or OUTLOOK_GET_MESSAGE.
commentstringYesThe body content of the reply email. Can be plain text or HTML based on is_html.
is_htmlbooleanNoWhether the comment body should be rendered as HTML.
user_idstringNoThe user’s email address or me for the authenticated user.
cc_emailsarrayNoList of email addresses for CC recipients.
bcc_emailsarrayNoList of email addresses for BCC recipients.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_FORWARD_MESSAGE

Forwards a message to new recipients.

NameTypeRequiredDescription
message_idstringYesThe unique identifier of the message to forward (Base64-encoded string, e.g., AAMkAGI2TAAA=).
to_recipientsarrayYesList of email addresses to forward the message to.
commentstringNoAn optional comment to include with the forwarded message.
user_idstringNoThe user’s email address or me for the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_LIST_MESSAGES

Retrieves a list of email messages from a specified mail folder, with options for filtering, pagination, and sorting. Supports conversationId filtering to retrieve all messages in a thread.

NameTypeRequiredDescription
folderstringNoID or well-known name of the mail folder (e.g., inbox, sentitems, drafts, deleteditems).
topintegerNoMaximum number of messages to return per request (1–1000). Check @odata.nextLink for pagination.
filterstringNoOData filter expression to filter messages.
selectarrayNoMessage properties to include in the response.
orderbyarrayNoProperties to sort results by.
user_idstringNoTarget user’s email or me for the authenticated user.
is_readbooleanNoFilter by read status: true for read, false for unread.
subjectstringNoFilter by exact match of the subject line.
from_addressstringNoFilter by the sender’s exact email address.
received_date_time_gestringNoFilter messages received on or after this ISO 8601 timestamp.
received_date_time_ltstringNoFilter messages received before this ISO 8601 timestamp.
response_detailstringNoLevel of detail: minimal (default, no body) or full (full payload including HTML).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_GET_MESSAGE

Retrieves a specific email message by its ID from the specified user’s Outlook mailbox.

NameTypeRequiredDescription
message_idstringYesUnique ID of the Outlook email message to retrieve.
selectarrayNoList of message properties to include in the response.
user_idstringNoUser’s email address, UPN, or me for the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_SEARCH_MESSAGES

Search Outlook messages using powerful KQL syntax. Supports sender (from:), recipient (to:, cc:), subject, date filters, attachments, and boolean logic. Only works with Microsoft 365/Enterprise accounts (no @hotmail.com/@outlook.com).

NameTypeRequiredDescription
querystringNoKQL search query string (e.g., from:user@example.com AND received>=2025-10-01, subject:invoice AND hasattachment:yes).
user_idstringNoTarget mailbox: me for the signed-in user, or an email/UPN for a shared/other mailbox.
sizeintegerNoNumber of search results per page (1–25).
from_indexintegerNo0-based starting index for pagination (max 999).
subjectstringNoText to search within the message subject (legacy parameter; prefer using subject:text in query).
fromEmailstringNoFilter by sender email or domain (legacy parameter).
hasAttachmentsbooleanNoFilter messages by attachment presence (legacy parameter).
enable_top_resultsbooleanNoIf true, sorts results by relevance; otherwise, sorts by date descending.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_QUERY_EMAILS

Query Outlook emails within a SINGLE folder using OData filters. Best for structured queries on message metadata within a specific folder. Returns up to 100 messages per request with pagination support.

NameTypeRequiredDescription
folderstringNoSingle mail folder to search within (e.g., inbox, sentitems). For cross-folder search, use OUTLOOK_SEARCH_MESSAGES.
filterstringNoOData $filter query string (e.g., isRead eq false, receivedDateTime ge 2025-01-01T00:00:00Z).
topintegerNoMaximum number of messages to return per request (1–1000). Default: 100.
selectarrayNoList of message properties to include in the response.
orderbystringNoSort order as comma-separated string (e.g., receivedDateTime desc).
user_idstringNoTarget user’s email or me for the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_MOVE_MESSAGE

Move a message to another folder within the user’s mailbox. Creates a new copy in the destination folder and removes the original. The message_id changes after a successful move.

NameTypeRequiredDescription
message_idstringYesUnique ID of the Outlook email message to move.
destination_idstringYesThe destination folder ID, or a well-known folder name (e.g., inbox, deleteditems, drafts).
user_idstringNoUser’s email address, UPN, or me for the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_LIST_MAIL_FOLDERS

Lists the user’s top-level mail folders. Use to discover folder IDs before moving, filtering, or organizing messages.

NameTypeRequiredDescription
user_idstringNoUser’s id, userPrincipalName, or me for the signed-in user.
topintegerNoMaximum number of items to return per page.
include_hidden_foldersbooleanNoInclude hidden mail folders when true.
filterstringNoOData filter expression to filter mail folders.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_DOWNLOAD_OUTLOOK_ATTACHMENT

Downloads a specific file attachment from an email message. The returned data.file.s3url is temporary — download the file immediately after calling this tool.

NameTypeRequiredDescription
message_idstringYesThe unique identifier of the email message containing the attachment.
attachment_idstringYesThe Microsoft Graph API attachment identifier (Base64-encoded opaque string from OUTLOOK_LIST_OUTLOOK_ATTACHMENTS).
file_namestringYesThe desired filename for the downloaded attachment.
user_idstringNoThe user’s UPN or me for the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_GET_MAILBOX_SETTINGS

Retrieves mailbox settings such as automatic replies, time zone, and working hours for the signed-in or specified user.

NameTypeRequiredDescription
user_idstringNoThe user’s unique identifier or principal name. Use me for the signed-in user.
selectarrayNoOData $select query to specify mailbox settings properties. Valid properties: archiveFolder, automaticRepliesSetting, dateFormat, language, timeFormat, timeZone, userPurpose, workingHours.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_CALENDAR_CREATE_EVENT

Creates a new Outlook calendar event, ensuring start_datetime is chronologically before end_datetime.

NameTypeRequiredDescription
subjectstringYesThe subject of the calendar event.
start_datetimestringYesThe start date and time of the event in ISO 8601 format.
end_datetimestringYesThe end date and time of the event in ISO 8601 format.
time_zonestringYesThe time zone for the start and end times (e.g., Pacific Standard Time or America/Los_Angeles).
bodystringNoThe body of the event in plain text or HTML format.
is_htmlbooleanNoSpecifies whether the body content is HTML.
locationstringNoThe physical location of the event.
attendees_infoarrayNoA list of attendees. Accepts email strings or objects with email, name, and type fields.
calendar_idstringNoThe ID of a specific calendar. If omitted, the event is created on the user’s default calendar.
is_online_meetingbooleanNoSet to true to indicate an online meeting (generates a Teams link if online_meeting_provider is set).
online_meeting_providerstringNoThe online meeting provider. Currently only teamsForBusiness is supported.
user_idstringNoThe user identifier for the calendar owner. Use me or a Microsoft 365 UPN.
importancestringNoThe importance of the event: low, normal, or high.
show_asstringNoThe status to show on the calendar: free, tentative, busy, oof, workingElsewhere.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_LIST_EVENTS

Retrieves events from a user’s Outlook calendar via Microsoft Graph API. Supports primary, secondary, and shared calendars, pagination, filtering, property selection, sorting, and timezone specification.

NameTypeRequiredDescription
user_idstringNoEmail address of the target user or me for the authenticated user.
calendar_idstringNoOptional ID of a specific calendar. If not provided, uses the default calendar.
filterstringNoOData query string to filter calendar events. Use start/dateTime and end/dateTime for date filtering.
topintegerNoMaximum number of events to retrieve per page.
selectarrayNoList of specific event property names to return.
orderbyarrayNoList of properties to sort results by.
timezonestringNoPreferred timezone for event start/end times (IANA or Windows format).
expand_recurring_eventsbooleanNoWhen true, expands recurring events to show actual occurrences within the filtered date range.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_UPDATE_CALENDAR_EVENT

Updates specified fields of an existing Outlook calendar event. Fetches the existing event, merges only the provided fields, and PATCHes the merged updates. Unspecified fields remain unchanged.

NameTypeRequiredDescription
event_idstringYesThe unique identifier of the calendar event to be updated.
subjectstringNoNew subject for the event.
start_datetimestringNoNew start date and time for the event.
end_datetimestringNoNew end date and time for the event.
time_zonestringNoTime zone for start_datetime and/or end_datetime.
locationstringNoEvent location.
attendeesarrayNoAttendee list. If provided, replaces the existing attendees.
bodyobjectNoEvent body with content type (Text or HTML) and the content.
show_asstringNoAvailability status: free, tentative, busy, oof.
user_idstringNoThe user identifier. Use me for the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_ACCEPT_EVENT

Accepts or tentatively accepts a calendar meeting invite on behalf of a user. The organizer will receive a notification unless send_response is set to false.

NameTypeRequiredDescription
event_idstringYesThe unique identifier of the calendar event to respond to.
response_typestringNoType of response: accept to accept, tentative to tentatively accept.
send_responsebooleanNoWhether to send the response to the organizer.
commentstringNoOptional text message to include with the response.
user_idstringNoThe user ID or userPrincipalName of the calendar owner.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_DECLINE_EVENT

Declines an invitation to a calendar event. The API returns 202 Accepted with no content on success.

NameTypeRequiredDescription
event_idstringYesThe unique identifier of the calendar event to decline.
commentstringNoOptional text message to include in the response to the organizer.
sendResponsebooleanNoIf true, a decline response is sent to the organizer. Default: true.
user_idstringNoThe user’s primary SMTP address, UPN, or me for the signed-in user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_LIST_CALENDARS

Lists calendars in the signed-in user’s mailbox.

NameTypeRequiredDescription
user_idstringNoUser ID or userPrincipalName. Use me for the signed-in user.
topintegerNoMaximum number of calendars to return.
filterstringNoOData filter expression.
selectarrayNoProperties to include in the response.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_FIND_MEETING_TIMES

Suggests meeting times based on organizer and attendee availability, time constraints, and duration requirements.

NameTypeRequiredDescription
attendeesarrayNoList of attendees or resources for the meeting.
meetingDurationstringNoMeeting length in ISO 8601 duration format (e.g., PT1H for 1 hour, PT30M for 30 minutes). Default: 30 minutes.
timeConstraintobjectNoTime restrictions for the meeting.
maxCandidatesintegerNoMaximum number of meeting time suggestions to return.
isOrganizerOptionalbooleanNoIf true, organizer doesn’t need to attend.
user_idstringNoUser ID or User Principal Name. Use me for the authenticated user.
prefer_timezonestringNoPreferred timezone for the response.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_GET_SCHEDULE

Retrieves free/busy schedule information for specified email addresses within a defined time window. Read-only; does not reserve time or prevent conflicts.

NameTypeRequiredDescription
schedulesarrayYesA list of SMTP email addresses (max 20) whose schedules are to be retrieved.
startTimeobjectYesThe start date, time, and time zone. Object must include dateTime (ISO 8601) and timeZone.
endTimeobjectYesThe end date, time, and time zone. The period can be up to 62 days.
availabilityViewIntervalstringNoDuration of each time slot in minutes (min: 5, max: 1440). Default: 30.
userIdstringNoThe user ID or principal name. Required for S2S authentication.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_CREATE_CONTACT

Creates a new contact in a Microsoft Outlook user’s contacts folder.

NameTypeRequiredDescription
givenNamestringNoThe contact’s given (first) name.
surnamestringNoThe contact’s surname (last name).
displayNamestringNoThe contact’s display name, typically their full name.
emailAddressesarrayNoA list of email addresses. Each item must be an object with an address field and optionally a name field.
mobilePhonestringNoThe contact’s mobile phone number.
businessPhonesarrayNoA list of business phone numbers.
jobTitlestringNoThe contact’s job title.
companyNamestringNoThe name of the company the contact is associated with.
notesstringNoPersonal notes about the contact.
userIdstringNoIdentifier for the user. Use me for the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_CREATE_TASK

Creates a new task in Microsoft To Do within a specified task list.

NameTypeRequiredDescription
titlestringYesThe title of the task.
todo_task_list_idstringYesThe unique identifier of the task list where the task will be created. Use OUTLOOK_LIST_TO_DO_LISTS to retrieve available list IDs.
importancestringNoThe importance level: low, normal, or high. Defaults to normal.
dueDateTimeobjectNoDate/time with timezone information for the task due date.
reminderDateTimeobjectNoDate/time with timezone information for the task reminder.
bodyobjectNoTask body content with content type.
categoriesarrayNoA list of category labels to organize the task.
user_idstringNoUser ID or userPrincipalName. Use me for the signed-in user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_LIST_TO_DO_LISTS

Lists Microsoft To Do task lists for the signed-in user. Use to discover available task lists before listing or creating tasks.

NameTypeRequiredDescription
user_idstringNoUser ID or userPrincipalName. Use me for the signed-in user.
topintegerNoMaximum number of task lists to return.
filterstringNoOData filter expression to filter task lists.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_GET_PROFILE

Retrieves the Microsoft Outlook profile for a specified user.

NameTypeRequiredDescription
user_idstringNoThe user’s unique identifier or principal name. Use me to get the profile of the authenticated user.
include_proxy_addressesbooleanNoWhether to include proxy addresses in the response.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_DELETE_MESSAGE

Permanently deletes an Outlook email message by its message_id. Use when removing unwanted messages, cleaning up drafts, or performing mailbox maintenance.

NameTypeRequiredDescription
message_idstringYesUnique identifier of the message to delete.
user_idstringNoThe UPN or ID of the user; use me for the signed-in user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

OUTLOOK_UPDATE_EMAIL

Updates specified properties of an existing email message.

NameTypeRequiredDescription
message_idstringYesThe unique identifier of the email message to be updated.
subjectstringNoNew subject line. If omitted, the existing subject remains unchanged.
is_readbooleanNoMark message as read (true) or unread (false).
bodyobjectNoNew body content. Must include contentType (Text or HTML) and content.
importancestringNoNew importance level (low, normal, high).
categoriesarrayNoCategories associated with the message.
to_recipientsarrayNoList of TO recipients; replaces all existing TOs.
cc_recipientsarrayNoList of CC recipients; replaces all existing CCs.
user_idstringNoThe UPN of the user or me for the authenticated user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.