# Outlook — MCP server on mcp.ai > Outlook is Microsoft's email and calendaring platform integrating contacts and scheduling, enabling users to manage communications and events in a unified workspace By: mcp.ai · official Page: https://mcp.ai/outlook ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_outlook?ms=1781542440000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/outlook/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/outlook/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/outlook/skill.md Postman collection (v2.1): https://mcp.ai/outlook/postman.json ## Tools - outlook_add_mail_attachment(item?: object, name: string, user_id?: string, isInline?: boolean, contentId?: string, message_id: string, odata_type: string, contentType?: string, contentBytes: string, contentLocation?: string) — Tool to add an attachment to an email message. use when you have a message id and need to attach a small (<3 mb) file or reference. - outlook_create_calendar(name: string, color?: string, user_id?: string, hexColor?: string) — Tool to create a new calendar in the signed-in user's mailbox. use when organizing events into a separate calendar. - outlook_create_contact_folder(user_id?: string, displayName: string, parentFolderId?: string) — Tool to create a new contact folder in the user's mailbox. use when needing to organize contacts into custom folders. - outlook_create_email_rule(actions: object, sequence?: integer, isEnabled?: boolean, conditions: object, displayName: string) — Create email rule filter with conditions and actions - outlook_create_mail_folder(user_id?: string, isHidden?: boolean, displayName: string) — Tool to create a new mail folder. use when you need to organize email into a new folder. - outlook_create_master_category(color?: string, displayName: string) — Tool to create a new category in the user's master category list. use after selecting a unique display name. - outlook_delete_mail_folder(user_id?: string, folder_id: string) — Delete a mail folder from the user's mailbox. use when you need to remove an existing mail folder. - outlook_download_outlook_attachment(user_id?: string, file_name: string, message_id: string, attachment_id: string) — Downloads a specific file attachment from an email message in a microsoft outlook mailbox; the attachment must contain 'contentbytes' (binary data) and not be a link or embedded item. - outlook_get_mail_delta(top?: integer, skip?: integer, count?: boolean, expand?: string[], filter?: string, search?: string, select?: string[], orderby?: string[], user_id?: string, folder_id?: string, skip_token?: string, delta_token?: string) — Tool to retrieve incremental changes (delta) of messages in a mailbox. use when syncing mailbox updates since last checkpoint. - outlook_get_mail_tips(user_id?: string, EmailAddresses: string[], MailTipsOptions: string[]) — Tool to retrieve mail tips such as automatic replies and mailbox full status. use when you need to check recipient status before sending mail. - outlook_get_mailbox_settings(expand?: string[], select?: string[], user_id?: string) — Tool to retrieve mailbox settings. use when you need to view settings such as automatic replies, time zone, and working hours for the signed-in or specified user. - outlook_get_master_categories(top?: integer, skip?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string) — Tool to retrieve the user's master category list. use when you need to get all categories defined for the user. - outlook_get_supported_languages(user_id?: string) — Tool to retrieve supported languages in the user's mailbox. use when you need to display or select from available mailbox languages. - outlook_get_supported_time_zones(timeZoneStandard?: string) — Tool to retrieve supported time zones in the user's mailbox. use when you need a list of time zones to display or choose from for event scheduling. - outlook_list_calendars(top?: integer, skip?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string) — Tool to list calendars in the signed-in user's mailbox. use when you need to retrieve calendars with optional odata queries. - outlook_list_event_attachments(top?: integer, skip?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string, event_id: string) — Tool to list attachments for a specific outlook calendar event. use when you have an event id and need to view its attachments. - outlook_list_outlook_attachments(user_id?: string, message_id: string) — Lists metadata (like name, size, and type, but not `contentbytes`) for all attachments of a specified outlook email message. - outlook_list_reminders(userId?: string, endDateTime: string, startDateTime: string) — Tool to retrieve reminders for events occurring within a specified time range. use when you need to see upcoming reminders between two datetimes. - outlook_outlook_add_event_attachment(item?: object, name: string, user_id?: string, event_id: string, odata_type: string, contentBytes?: string) — Adds an attachment to a specific outlook calendar event. use when you need to attach a file or nested item to an existing event. - outlook_outlook_calendar_create_event(body: string, is_html?: boolean, show_as?: string, subject: string, user_id?: string, location?: string, time_zone: string, categories?: string[], end_datetime: string, attendees_info?: object[], start_datetime: string, is_online_meeting?: boolean, online_meeting_provider?: string) — Creates a new outlook calendar event, ensuring `start datetime` is chronologically before `end datetime`. - outlook_outlook_create_contact(notes?: string, surname?: string, user_id?: string, birthday?: string, jobTitle?: string, givenName?: string, homePhone?: string, categories?: string[], department?: string, companyName?: string, displayName?: string, mobilePhone?: string, businessPhones?: string[], emailAddresses?: object[], officeLocation?: string) — Creates a new contact in a microsoft outlook user's contacts folder. - outlook_outlook_create_draft(body: string, is_html?: boolean, subject: string, attachment?: object, cc_recipients?: string[], to_recipients: string[], bcc_recipients?: string[], conversation_id?: string) — Creates an outlook email draft with subject, body, recipients, and an optional attachment. supports creating drafts as part of existing conversation threads by specifying a conversationid; attachments - outlook_outlook_create_draft_reply(comment?: string, user_id?: string, cc_emails?: string[], bcc_emails?: string[], message_id: string) — Creates a draft reply in the specified user's outlook mailbox to an existing message (identified by a valid `message id`), optionally including a `comment` and cc/bcc recipients. - outlook_outlook_delete_contact(user_id?: string, contact_id: string) — Permanently deletes an existing contact, using its `contact id` (obtainable via 'list user contacts' or 'get contact'), from the outlook contacts of the user specified by `user id`. - outlook_outlook_delete_event(user_id?: string, event_id: string, send_notifications?: boolean) — Deletes an existing calendar event, identified by its unique `event id`, from a specified user's microsoft outlook calendar, with an option to send cancellation notifications to attendees. - outlook_outlook_get_contact(user_id?: string, contact_id: string) — Retrieves a specific outlook contact by its `contact id` from the contacts of a specified `user id` (defaults to 'me' for the authenticated user). - outlook_outlook_get_contact_folders(top?: integer, skip?: integer, expand?: string[], filter?: string, select?: string[], orderby?: string[], user_id?: string) — Tool to retrieve a list of contact folders in the signed-in user's mailbox. use after authentication when you need to browse or select among contact folders. - outlook_outlook_get_event(user_id?: string, event_id: string) — Retrieves the full details of a specific calendar event by its id from a user's outlook calendar, provided the event exists. - outlook_outlook_get_message(select?: string, user_id?: string, message_id: string) — Retrieves a specific email message by its id from the specified user's outlook mailbox. use the 'select' parameter to include specific fields like 'internetmessageheaders' for filtering automated emai - outlook_outlook_get_profile(user_id?: string) — Retrieves the microsoft outlook profile for a specified user. - outlook_outlook_get_schedule(EndTime: object, Schedules: string[], StartTime: object, availabilityViewInterval?: string) — Retrieves free/busy schedule information for specified email addresses within a defined time window. - outlook_outlook_list_contacts(top?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string, contact_folder_id?: string) — Retrieves a user's microsoft outlook contacts, from the default or a specified contact folder. - outlook_outlook_list_events(top?: integer, skip?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string, timezone?: string, expand_recurring_events?: boolean) — Retrieves events from a user's outlook calendar via microsoft graph api, supporting pagination, filtering, property selection, sorting, and timezone specification. - outlook_outlook_list_mail_folders(user_id?: string, include_hidden_folders?: boolean) — Tool to list a user's top-level mail folders. use when you need folders like inbox, drafts, sent items; set include hidden folders=true to include hidden folders. - outlook_outlook_list_messages(top?: integer, skip?: integer, folder?: string, select?: string[], is_read?: boolean, orderby?: string[], subject?: string, user_id?: string, categories?: string[], importance?: string, from_address?: string, conversationId?: string, has_attachments?: boolean, subject_contains?: string, subject_endswith?: string, sent_date_time_gt?: string, sent_date_time_lt?: string, subject_startswith?: string, received_date_time_ge?: string, received_date_time_gt?: string, received_date_time_le?: string, received_date_time_lt?: string) — Retrieves a list of email messages from a specified mail folder in an outlook mailbox, with options for filtering (including by conversationid to get all messages in a thread), pagination, and sorting - outlook_outlook_move_message(user_id?: string, message_id: string, destination_id: string) — Move a message to another folder within the specified user's mailbox. this creates a new copy of the message in the destination folder and removes the original message. - outlook_outlook_reply_email(comment: string, user_id?: string, cc_emails?: string[], bcc_emails?: string[], message_id: string) — Sends a plain text reply to an outlook email message, identified by `message id`, allowing optional cc and bcc recipients. - outlook_outlook_search_messages(size?: integer, query: string, subject?: string, fromEmail?: string, from_index?: integer, hasAttachments?: boolean, enable_top_results?: boolean) — Searches messages in a microsoft 365 or enterprise outlook account mailbox, supporting filters for sender, subject, attachments, pagination, and sorting by relevance or date. - outlook_outlook_send_email(body: string, is_html?: boolean, subject: string, to_name?: string, user_id?: string, to_email: string, cc_emails?: string[], attachment?: object, bcc_emails?: string[], save_to_sent_items?: boolean) — Sends an email with subject, body, recipients, and an optional attachment via microsoft graph api; attachments require a non-empty file with valid name and mimetype. - outlook_outlook_update_calendar_event(body?: object, show_as?: string, subject?: string, user_id?: string, event_id: string, location?: object, attendees?: object[], time_zone?: string, categories?: string[], end_datetime?: string, start_datetime?: string) — Updates specified fields of an existing outlook calendar event. - outlook_outlook_update_contact(notes?: string, surname?: string, user_id?: string, birthday?: string, jobTitle?: string, givenName?: string, categories?: string[], contact_id: string, department?: string, homePhones?: string[], companyName?: string, displayName?: string, mobilePhone?: string, businessPhones?: string[], emailAddresses?: object[], officeLocation?: string) — Updates an existing outlook contact, identified by `contact id` for the specified `user id`, requiring at least one other field to be modified. - outlook_outlook_update_email(body?: object, subject?: string, user_id?: string, importance?: string, message_id: string, cc_recipients?: object[], to_recipients?: object[], bcc_recipients?: object[]) — Updates specified properties of an existing email message; `message id` must identify a valid message within the specified `user id`'s mailbox. - outlook_update_mailbox_settings(language?: object, timeZone?: string, workingHours?: object, automaticRepliesSetting?: object) — Tool to update mailbox settings for the signed-in user. use when you need to configure automatic replies, default time zone, language, or working hours. example: schedule automatic replies for vacatio ## Links Docs: https://mcp.ai/docs/mcps/outlook Website: https://mcp.ai/mcps/outlook