add_email_attachments
ChatGPTAttach file references to an existing Outlook draft or message. Use this for draft-first workflows after draft_email, create_reply_draft, or create_forward_draft when attachments need to be added before the user reviews or sends the draft. Pass file handles, not base64 content.
create_category
ChatGPTCreate an Outlook mailbox category for later use on messages.
create_forward_draft
ChatGPTCreate a draft forward for an existing Outlook email. Use this when the user wants to review or edit the forward before it is sent. Recipients are optional so the agent can create a draft even when the final audience is not settled yet.
create_mail_folder
ChatGPTCreate an Outlook mail folder, optionally nested under an existing parent folder.
create_reply_draft
ChatGPTCreate a draft reply to an existing Outlook email. Use this when the user wants a draft-first workflow instead of sending the reply immediately. If reply_all=true, Outlook includes the thread's wider recipient set in the draft.
draft_email
ChatGPTCreate an Outlook draft email and return the draft message. Use this when the user wants a saved draft for review or later sending. Draft bodies are plain text only. Optional attachment files must be file references, not base64 strings.
fetch_attachment
ChatGPTFetch one Outlook email attachment and return its metadata plus raw bytes.
fetch_message
ChatGPTFetch a single Outlook email by its ID. Use this when full message details are explicitly required. Do not call this immediately after list/search if subject/sender/time/preview/body snippets already satisfy the user request.
fetch_messages_batch
ChatGPTRetrieve multiple Outlook emails in a single request. Use this only when complete body details are explicitly required by the user. For recent/unread list tasks, prefer list_messages/search_messages in one call. If full details are needed for multiple messages, prefer this action over repeated fetch_message calls to reduce API request count.
fetch_shared_message
ChatGPTFetch a single email from a delegated or shared Outlook mailbox. Use this only for a message ID that came from a shared/delegated mail action and when the exact mailbox owner email/UPN is known. For the signed-in user's own mailbox, use fetch_message instead.
find_mail_folder
ChatGPTFind Outlook mail folders by name or path. Use this before move_email when the user says a folder name like Finance or Projects/Finance and you need the exact folder ID. Results are ranked with exact path matches first, then exact display-name matches, then broader path/name substring matches. If multiple strong candidates remain, present them instead of guessing.
forward_email
ChatGPTForward an existing Outlook email to new recipients. Use this when the user wants to send an already-received message onward. This sends immediately; it does not create a draft. Provide at least one recipient in to.
get_profile
ChatGPTReturn basic profile information for the Outlook account.
get_recent_emails
ChatGPTReturn the top_k most recently received Outlook emails. This is a convenience wrapper around list_messages for simple "latest email" requests. Use list_messages directly when you need pagination, folder targeting, filters, or a custom sort order.
get_unsubscribe_info
ChatGPTInspect unsubscribe-related headers for an Outlook email. Use this for newsletter triage before attempting to unsubscribe. The response parses List-Unsubscribe and List-Unsubscribe-Post when present.
list_attachments
ChatGPTList attachment metadata for a specific Outlook email.
list_categories
ChatGPTList Outlook mailbox categories available for tagging messages.
list_mail_folders
ChatGPTList Outlook mail folders in a flat, path-oriented form. Use this before move_email when the user names a folder but you do not already know its exact folder ID. The response includes folder paths like Projects/Finance so the model can choose the correct destination folder instead of guessing. This action recursively traverses child folders and returns a flat list ordered by discovery.
list_messages
ChatGPTRetrieve Outlook emails from a specified folder. This is the preferred endpoint for "recent/unread/list" tasks. The response already includes high-value fields (subject/sender/time/read status/link and message preview/body), so avoid follow-up fetch calls unless the user explicitly asks for full-body extraction. Model usage guidance: - Prefer this action for mailbox navigation intents like "recent", "latest", and "unread". - If sorting by recency is required, pass order_by="receivedDateTime desc". - This action returns pagination metadata: has_more and next_from_index. If has_more=true, call again with skip=next_from_index and the same filter/sort arguments. - Use fetch actions only when you truly need full-body details that are not already available in list/search results.
list_shared_mail_folders
ChatGPTList folders in a delegated or shared Outlook mailbox. Use this before list_shared_messages or move_shared_email when the user names a folder in another mailbox but you do not know the exact folder ID. The mailbox owner must be provided as an exact email/UPN.
list_shared_messages
ChatGPTList messages from a delegated or shared Outlook mailbox. Use this only when the user explicitly wants mail from another mailbox and has provided the exact mailbox email/UPN. For the signed-in user's own mailbox, use list_messages instead. This action does not discover or guess mailbox identities.
mark_email_read_state
ChatGPTMark an Outlook email as read or unread and return the updated message. Use this for inbox-triage workflows such as "mark this unread so I can revisit it later" or "mark this as read now".
mark_shared_email_read_state
ChatGPTMark an email in a delegated/shared mailbox as read or unread. Use this only for another mailbox when the user has provided the exact mailbox owner email/UPN. For the signed-in user's own mailbox, use mark_email_read_state instead.
move_email
ChatGPTMove an Outlook email into another mail folder and return the moved message. Use this for triage flows such as moving a message to archive or back to inbox. Provide exactly one destination: either a concrete folder ID or a supported well-known folder name.
move_shared_email
ChatGPTMove an email in a delegated/shared Outlook mailbox. Use this for another mailbox only when the exact mailbox owner email/UPN is known. Provide exactly one destination: a concrete folder ID from list_shared_mail_folders or a supported well-known folder name.
oai_user_fetch
ChatGPTUses mfetch to perform document fetch for link following and citations.
oai_user_search
ChatGPTUses synced RAG index to perform semantic search against query. The index is refreshed until (now - 2h).
reply_to_email
ChatGPTReply to an existing Outlook email. Use this when the user wants to answer an existing thread. This sends immediately. For a draft-first workflow, create a new draft instead of using this action.
schedule_email
ChatGPTQueue a new Outlook email for future delivery.
search_messages
ChatGPTSearch Outlook emails and return matching messages. query supports connector-level filter tokens, which include received (time, YYYY-MM-DD, > or <), from (email address), to (email address), subject (string), hasattachment (boolean), read (boolean no|yes), and size (tiny|small|medium|large|verylarge|enormous). Free-text search behavior ultimately uses Microsoft Graph search: https://learn.microsoft.com/en-us/graph/search-query-parameter Place free-text terms first in the query string. For example: query="quarterly review received>2025-01-01 received<2025-01-31 from:alice@example.com read:false" For inbox-style requests (e.g. recent/unread summaries), this action usually returns enough data in one call. Only call fetch endpoints when the user explicitly requests full email body content. Model usage guidance: - For "recent inbox" style requests, use query="". - For filter-only requests (e.g. unread/date/from/hasattachment), prefer concise filter tokens such as read:false, received>=YYYY-MM-DD, received<=YYYY-MM-DD, from:alice@example.com, hasattachment:true. These can often be answered via a single efficient list call. - Keep size small. Prefer 20 to 50 for summaries and never request more than 500 results in one call. - If the user asks for keyword search (free text), include lexical terms in query and this action will route through Graph search. - This action returns has_more and next_from_index to support stable pagination without guessing. - To paginate, call this action again with the same query and from_index=next_from_index when has_more=true (for example: page1 from_index=0,size=20, page2 from_index=20,size=20).
send_email
ChatGPTSend a new Outlook email immediately. Use this when the user has finalized the message and wants it sent now. For draft-first workflows, use draft_email instead. Email bodies are plain text only. Optional attachment files must be file references, not base64 strings.
send_email_on_behalf
ChatGPTSend a new Outlook email from a delegated/shared mailbox. Use this only when the user explicitly asks to send from or on behalf of another mailbox and provides that mailbox's exact email/UPN. For the signed-in user's own mailbox, use send_email instead. Optional attachment files must be file references, not base64 strings.
set_message_categories
ChatGPTReplace the categories on an Outlook email and return the updated message.
unsubscribe_via_mailto
ChatGPTSend a mailto-based unsubscribe request when a message exposes one. This action only supports mailto: targets from List-Unsubscribe. It intentionally does not perform HTTPS one-click unsubscribe requests.