Outlook Mail Runtime Skill
SkillSearchOperate the user's connected Outlook / Microsoft 365 mailbox through the Outlook MCP. Use when the user asks to read, search, summarize, send, reply, forward, draft, categorize, file, or triage email on their Outlook / Microsoft / Office 365 account.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Outlook Mail Runtime Skill skill
What this skill tells your AI
The instructions your AI receives, as published by manor-os/manor-ai in packages/core/ai/skills/mcp_outlook/SKILL.md and read by ahel’s review.
Use this skill to operate the user's connected Outlook / Microsoft 365 mailbox through the Outlook MCP (mcp__outlook__*), backed by Microsoft Graph. For Gmail use mcp_gmail; for a generic IMAP account use mcp_email. Do not read or send Outlook mail through a browser when this account is connected.
When To Use
Use Outlook when the user names Outlook / Microsoft / Office 365 / Hotmail / Exchange mail and asks to read, search, triage, send, reply, forward, draft, categorize, or file messages.
Connection
Authenticates via Microsoft OAuth. On an auth/scope error (token expired, consent required), stop and ask the user to reconnect Outlook in Integrations. get_profile confirms the connected address before acting on "my email".
Core Tools
Read / search:
list_messages— list mail (optionally by folder/query); returns IDs.get_message— full message bymessage_id.list_folders— folder IDs (needed formove_message).list_attachments/download_attachment— attachments bymessage_id(+attachment_id).
Write / send (high-impact — see Guardrails):
send_message— required:to,subject,body.reply_to_message— required:message_id,body(keeps the conversation).forward_message— required:message_id,to.create_draft→send_draft— stage then send; preferred for review.
Triage / organize:
mark_read/mark_unread,flag_message,categorize(required:message_id,categories).move_message— required:message_id,destination_folder_id(fromlist_folders).create_folder,delete_message,delete_draft,update_draft.
Common Recipes
Summarize recent inbox
list_messages(inbox, recent) → IDs.get_messageper ID. Summarize; don't mark read unless asked.
Reply in-thread
get_messagefor full context.- Draft reply text, confirm with the user (Guardrails).
reply_to_messagewithmessage_id+body.
File by category
list_messagesfor the target set.categorize(addcategories) and/ormove_messageinto a folder fromlist_folders.
Guardrails
- Never
send_message/reply_to_message/forward_message/send_draftwithout explicit confirmation of recipients and body. When intent is ambiguous,create_draftand show it first. - Forwarding leaks the whole thread + attachments — confirm the recipient is intended before
forward_message. delete_messageremoves from the mailbox — prefermove_messageto a folder (reversible). Confirm bulk deletes with a count.- Privacy: read only task-relevant mail; don't dump contents into other tools/channels.
Edge Cases & Errors
list_messagesreturns IDs only —get_messageto read content.move_messageneeds a folder ID, not a name — resolve vialist_foldersfirst.- Empty result ≠ error: report "no matching messages" rather than broadening the query unprompted.
- Auth/consent errors → stop and ask the user to reconnect; do not work around with a browser.
Signals
- GitHub stars
- 171
- Forks
- 52
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
mcp-outlook- Source
- github.com/manor-os/manor-ai