# Outlook — how to use (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

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_outlook?ms=1781542260000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `outlook_add_mail_attachment`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/outlook`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/outlook/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/outlook/add/mail/attachment` — 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.
  - body: { item?: object, name: string, user_id?: string, isInline?: boolean, contentId?: string, message_id: string, odata_type: string, contentType?: string, contentBytes: string, contentLocation?: string }
- `POST https://api.mcp.ai/api/outlook/create/calendar` — Tool to create a new calendar in the signed-in user's mailbox. use when organizing events into a separate calendar.
  - body: { name: string, color?: string, user_id?: string, hexColor?: string }
- `POST https://api.mcp.ai/api/outlook/create/contact/folder` — Tool to create a new contact folder in the user's mailbox. use when needing to organize contacts into custom folders.
  - body: { user_id?: string, displayName: string, parentFolderId?: string }
- `POST https://api.mcp.ai/api/outlook/create/email/rule` — Create email rule filter with conditions and actions
  - body: { actions: object, sequence?: integer, isEnabled?: boolean, conditions: object, displayName: string }
- `POST https://api.mcp.ai/api/outlook/create/mail/folder` — Tool to create a new mail folder. use when you need to organize email into a new folder.
  - body: { user_id?: string, isHidden?: boolean, displayName: string }
- `POST https://api.mcp.ai/api/outlook/create/master/category` — Tool to create a new category in the user's master category list. use after selecting a unique display name.
  - body: { color?: string, displayName: string }
- `POST https://api.mcp.ai/api/outlook/delete/mail/folder` — Delete a mail folder from the user's mailbox. use when you need to remove an existing mail folder.
  - body: { user_id?: string, folder_id: string }
- `POST https://api.mcp.ai/api/outlook/download/outlook/attachment` — 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.
  - body: { user_id?: string, file_name: string, message_id: string, attachment_id: string }
- `POST https://api.mcp.ai/api/outlook/get/mail/delta` — Tool to retrieve incremental changes (delta) of messages in a mailbox. use when syncing mailbox updates since last checkpoint.
  - body: { 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 }
- `POST https://api.mcp.ai/api/outlook/get/mail/tips` — Tool to retrieve mail tips such as automatic replies and mailbox full status. use when you need to check recipient status before sending mail.
  - body: { user_id?: string, EmailAddresses: string[], MailTipsOptions: string[] }
- `POST https://api.mcp.ai/api/outlook/get/mailbox/settings` — 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.
  - body: { expand?: string[], select?: string[], user_id?: string }
- `POST https://api.mcp.ai/api/outlook/get/master/categories` — Tool to retrieve the user's master category list. use when you need to get all categories defined for the user.
  - body: { top?: integer, skip?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string }
- `POST https://api.mcp.ai/api/outlook/get/supported/languages` — Tool to retrieve supported languages in the user's mailbox. use when you need to display or select from available mailbox languages.
  - body: { user_id?: string }
- `POST https://api.mcp.ai/api/outlook/get/supported/time/zones` — 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.
  - body: { timeZoneStandard?: string }
- `POST https://api.mcp.ai/api/outlook/list/calendars` — Tool to list calendars in the signed-in user's mailbox. use when you need to retrieve calendars with optional odata queries.
  - body: { top?: integer, skip?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string }
- `POST https://api.mcp.ai/api/outlook/list/event/attachments` — Tool to list attachments for a specific outlook calendar event. use when you have an event id and need to view its attachments.
  - body: { top?: integer, skip?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string, event_id: string }
- `POST https://api.mcp.ai/api/outlook/list/outlook/attachments` — Lists metadata (like name, size, and type, but not `contentbytes`) for all attachments of a specified outlook email message.
  - body: { user_id?: string, message_id: string }
- `POST https://api.mcp.ai/api/outlook/list/reminders` — Tool to retrieve reminders for events occurring within a specified time range. use when you need to see upcoming reminders between two datetimes.
  - body: { userId?: string, endDateTime: string, startDateTime: string }
- `POST https://api.mcp.ai/api/outlook/outlook/add/event/attachment` — Adds an attachment to a specific outlook calendar event. use when you need to attach a file or nested item to an existing event.
  - body: { item?: object, name: string, user_id?: string, event_id: string, odata_type: string, contentBytes?: string }
- `POST https://api.mcp.ai/api/outlook/outlook/calendar/create/event` — Creates a new outlook calendar event, ensuring `start datetime` is chronologically before `end datetime`.
  - body: { 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 }
- `POST https://api.mcp.ai/api/outlook/outlook/create/contact` — Creates a new contact in a microsoft outlook user's contacts folder.
  - body: { 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 }
- `POST https://api.mcp.ai/api/outlook/outlook/create/draft` — 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
  - body: { body: string, is_html?: boolean, subject: string, attachment?: object, cc_recipients?: string[], to_recipients: string[], bcc_recipients?: string[], conversation_id?: string }
- `POST https://api.mcp.ai/api/outlook/outlook/create/draft/reply` — 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.
  - body: { comment?: string, user_id?: string, cc_emails?: string[], bcc_emails?: string[], message_id: string }
- `POST https://api.mcp.ai/api/outlook/outlook/delete/contact` — 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`.
  - body: { user_id?: string, contact_id: string }
- `POST https://api.mcp.ai/api/outlook/outlook/delete/event` — 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.
  - body: { user_id?: string, event_id: string, send_notifications?: boolean }
- `POST https://api.mcp.ai/api/outlook/outlook/get/contact` — Retrieves a specific outlook contact by its `contact id` from the contacts of a specified `user id` (defaults to 'me' for the authenticated user).
  - body: { user_id?: string, contact_id: string }
- `POST https://api.mcp.ai/api/outlook/outlook/get/contact/folders` — 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.
  - body: { top?: integer, skip?: integer, expand?: string[], filter?: string, select?: string[], orderby?: string[], user_id?: string }
- `POST https://api.mcp.ai/api/outlook/outlook/get/event` — Retrieves the full details of a specific calendar event by its id from a user's outlook calendar, provided the event exists.
  - body: { user_id?: string, event_id: string }
- `POST https://api.mcp.ai/api/outlook/outlook/get/message` — 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
  - body: { select?: string, user_id?: string, message_id: string }
- `POST https://api.mcp.ai/api/outlook/outlook/get/profile` — Retrieves the microsoft outlook profile for a specified user.
  - body: { user_id?: string }
- `POST https://api.mcp.ai/api/outlook/outlook/get/schedule` — Retrieves free/busy schedule information for specified email addresses within a defined time window.
  - body: { EndTime: object, Schedules: string[], StartTime: object, availabilityViewInterval?: string }
- `POST https://api.mcp.ai/api/outlook/outlook/list/contacts` — Retrieves a user's microsoft outlook contacts, from the default or a specified contact folder.
  - body: { top?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string, contact_folder_id?: string }
- `POST https://api.mcp.ai/api/outlook/outlook/list/events` — Retrieves events from a user's outlook calendar via microsoft graph api, supporting pagination, filtering, property selection, sorting, and timezone specification.
  - body: { top?: integer, skip?: integer, filter?: string, select?: string[], orderby?: string[], user_id?: string, timezone?: string, expand_recurring_events?: boolean }
- `POST https://api.mcp.ai/api/outlook/outlook/list/mail/folders` — 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.
  - body: { user_id?: string, include_hidden_folders?: boolean }
- `POST https://api.mcp.ai/api/outlook/outlook/list/messages` — 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
  - body: { 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 }
- `POST https://api.mcp.ai/api/outlook/outlook/move/message` — 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.
  - body: { user_id?: string, message_id: string, destination_id: string }
- `POST https://api.mcp.ai/api/outlook/outlook/reply/email` — Sends a plain text reply to an outlook email message, identified by `message id`, allowing optional cc and bcc recipients.
  - body: { comment: string, user_id?: string, cc_emails?: string[], bcc_emails?: string[], message_id: string }
- `POST https://api.mcp.ai/api/outlook/outlook/search/messages` — Searches messages in a microsoft 365 or enterprise outlook account mailbox, supporting filters for sender, subject, attachments, pagination, and sorting by relevance or date.
  - body: { size?: integer, query: string, subject?: string, fromEmail?: string, from_index?: integer, hasAttachments?: boolean, enable_top_results?: boolean }
- `POST https://api.mcp.ai/api/outlook/outlook/send/email` — 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.
  - body: { 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 }
- `POST https://api.mcp.ai/api/outlook/outlook/update/calendar/event` — Updates specified fields of an existing outlook calendar event.
  - body: { 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 }
- `POST https://api.mcp.ai/api/outlook/outlook/update/contact` — Updates an existing outlook contact, identified by `contact id` for the specified `user id`, requiring at least one other field to be modified.
  - body: { 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 }
- `POST https://api.mcp.ai/api/outlook/outlook/update/email` — Updates specified properties of an existing email message; `message id` must identify a valid message within the specified `user id`'s mailbox.
  - body: { body?: object, subject?: string, user_id?: string, importance?: string, message_id: string, cc_recipients?: object[], to_recipients?: object[], bcc_recipients?: object[] }
- `POST https://api.mcp.ai/api/outlook/update/mailbox/settings` — 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
  - body: { language?: object, timeZone?: string, workingHours?: object, automaticRepliesSetting?: object }

## More
- Page: https://mcp.ai/outlook
- Agent spec (llms.txt): https://mcp.ai/outlook/llms.txt
- Postman collection: https://mcp.ai/outlook/postman.json
