outlook
Skill38 starsChanged 5 months agoMITView on GitHub
Use Microsoft Outlook end-to-end — read, search, triage, and send mail; manage calendar events and meeting invites; work with contacts, tasks, color categories, and mail rules; check Out-of-Office. Trigger this skill whenever the user asks to do anything with their inbox, email, calendar, meetings, contacts, or to-do list AND tools whose names start with `outlook_` are available (e.g. `outlook_list_mails`, `outlook_send_mail`, `outlook_create_event`). Trigger even when the user doesn't say "Outlook" — phrases like "check my inbox", "what's on my calendar this week", "draft a reply to that email about Y", "schedule a meeting with Sarah Friday at 3", "remind me to follow up next Monday", "move that thread to a folder", "find Bob's phone number", or "is my OOO still on?" all qualify. The skill teaches the right way to chain these tools: how to refer to folders, how item handles work, how to format dates, how to recur an event, and which calls have side effects you must confirm first.
8 other projects use a version of this.
Adopted by
Most recently taken up by
- foxl-ai/skillstheir own version, first seen Oct 15, 2026
- sigcli/sigclitheir own version, first seen Oct 8, 2026
- ai-ecoverse/skillstheir own version, first seen Oct 2, 2026
- dbhq-uk/outlook-graph-skilltheir own version, first seen Sep 25, 2026
- dbhq-uk/outlook-skilltheir own version, first seen Sep 25, 2026
- vellum-ai/vellum-assistanttheir own version, first seen Jul 8, 2026
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- vellum-ai/vellum-assistant★ 1.5ksame name
- sigcli/sigcli★ 293same name
- refly-ai/refly-skills★ 204same name
- dbhq-uk/outlook-graph-skill★ 2same name
- dbhq-uk/outlook-skill★ 2same name
- ai-ecoverse/skills★ 1same name
- foxl-ai/skills★ 0same name
- hsigstad/research-kit★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 2 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 25
All tools are prefixed outlook_.
- Very specific: line 51
When unsure of the exact path, call outlook_list_folders first and use the path string it returns verbatim.
- Very specific: line 55
Every mail, event, contact, and task has a stable entry_id string.
- Very specific: line 57
If the user refers to an item by description ("the email from Bob about Q3"), first find it (e.g.
- Very specific: line 63
All date/time parameters are ISO-8601 strings: 2026-04-25T14:30:00.
- Very specific: line 111
Read references/gotchas.md for the complete list.
- Distinctive: line 117
First call after a cold start can take several seconds: Don't retry as if it had failed.
- Very specific: line 119
Only classic Outlook is supported: If the user is on the new Outlook (olk.exe), the tools won't see it.
- Distinctive: line 128
Read the relevant reference file when you're about to do something for the first time in a session.
“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Outlook
You have tools whose names begin with outlook_ that operate on the user's actual Microsoft Outlook account. They read and write live data — sent mail goes out, deleted items move to Deleted Items, accepted invites notify organizers. Treat write operations the way you would treat any user-visible action: confirm intent first.
When to use this skill
Activate whenever the user wants to do something with their Outlook data. The user does not need to say "Outlook." Triggers include:
- Mail: "any new emails from X?", "draft a reply to that thread about Y", "forward Bob's note to the team", "clean out my inbox", "save the attachment from Sarah's email"
- Calendar / meetings: "what do I have Friday?", "schedule 30 min with Alice next Tuesday", "make that meeting recurring weekly", "decline the 4pm", "what time is the all-hands?"
- Contacts: "what's Carlos's email?", "phone number for the legal team contact"
- Tasks: "remind me to send the report Monday", "mark the budget task done"
- Categories / rules / OOO: "tag that email as Important", "is my OOO still on?", "turn off the rule that auto-files Jira mail"
If outlook_* tools are not available in the session, the underlying integration isn't installed yet. Don't guess or improvise — instead, read references/setup.md and walk the user through installing it (Windows + classic Outlook + a one-line install + restart their MCP client). After install they restart the client and the tools appear.
Tool catalog
All tools are prefixed outlook_. Memorize the categories; consult references/tools.md for exact parameters and return shapes the first time you reach for one.
| Category | Tools |
list_mails, search_mails, get_mail, send_mail, reply_mail, forward_mail, move_mail, delete_mail, mark_mail, save_attachments | |
| Folders | list_folders, create_folder |
| Calendar | list_events, get_event, create_event, update_event, delete_event, respond_event |
| Contacts | list_contacts, search_contacts (incl. org directory), get_contact, resolve_name |
| Tasks | list_tasks, create_task, complete_task |
| Categories | list_categories, set_category |
| Rules | list_rules, toggle_rule |
| Out-of-Office | get_out_of_office (read-only) |
| Account | whoami |
Conventions you must internalize
These rules are the same across every tool. Internalize them and you'll rarely need to peek at references/tools.md.
Folder references
Any parameter named folder, target_folder, parent, or root accepts:
- A well-known name (case-insensitive):
inbox,sent,drafts,deleted(aliastrash),outbox,junk(aliasspam),calendar,contacts,tasks,notes. - A slash path under the default mailbox:
Inbox/Projects/Acme. - A store-qualified path when the user has more than one mailbox or PST:
Mailbox - you@example.com/Inbox/Projects/Acme.
When unsure of the exact path, call outlook_list_folders first and use the path string it returns verbatim.
Item identity: EntryID
Every mail, event, contact, and task has a stable entry_id string. List/search tools return it on every item; pass that exact string back to detail/edit/delete/reply/move tools. Never invent an entry_id. Never paste a subject line into an entry_id field.
If the user refers to an item by description ("the email from Bob about Q3"), first find it (e.g. search_mails), then act on the returned entry_id.
entry_ids become invalid if the item is deleted; moving an item between stores produces a new ID. If you get an "Item not found" error, re-list to refresh.
Dates and times
All date/time parameters are ISO-8601 strings: 2026-04-25T14:30:00. Without a timezone suffix the value is interpreted as the user's local time, which is what the user expects.
Resolve relative phrasing ("Friday at 3", "next Monday morning", "tomorrow") yourself before calling — the tools don't parse natural language. Use today's date from the conversation context as the anchor.
response_format
Most read tools accept response_format='markdown' (default; pretty for the user) or response_format='json' (structured for you to parse). Pick json when you need to extract a field (almost always an entry_id) to chain into another call. Pick markdown when the result is the final answer to the user.
Recurrence (calendar)
outlook_create_event accepts an optional recurrence object:
{
"type": "weekly", // "daily" | "weekly" | "monthly" | "yearly"
"interval": 1, // every N units; default 1
"occurrences": 10, // OR
"end_date": "2026-12-31" // ISO date — provide one or the other; omit both for indefinite
}update_event does not change recurrence. If the user wants to alter a recurring series' cadence, the simplest path is delete + recreate.
Filesystem paths
attachments= (on send_mail/reply_mail/forward_mail) and output_dir= (on save_attachments) require absolute paths under the user's profile directory (C:\Users\<them>\...). This sandbox is enforced; you can't bypass it from a tool call. If the user really needs a path elsewhere (a network share, D:, etc.), they have to set OUTLOOK_MCP_ALLOW_ANY_PATH=1 in their environment — tell them, don't try to work around it.
Read tools are free; write tools have side effects
Read freely:
list_mails, search_mails, get_mail, list_folders, list_events, get_event, list_contacts, search_contacts, get_contact, resolve_name, list_tasks, list_categories, list_rules, get_out_of_office, whoami.
Confirm before calling (these change shared state or send messages):
send_mail, reply_mail, forward_mail, delete_mail, move_mail, mark_mail, save_attachments, create_event (especially with attendees — that sends a meeting invite immediately), update_event, delete_event, respond_event (with send_response=true), create_folder, create_task, complete_task, set_category, toggle_rule.
Two staging tricks worth knowing:
outlook_send_mail(..., save_only=true)saves to Drafts without sending — perfect for "draft a reply for me to look at" requests.outlook_respond_event(..., send_response=false)records your local accept/decline without emailing the organizer.
Default workflow
- Identify the item. For mail, prefer
search_mailsoverlist_mailswhen the user describes content (subject keyword, sender name). For calendar,list_eventswith a date range. Captureentry_ids as you go (response_format='json'makes this clean). - Read the full record before editing or replying.
get_mail/get_eventreturn the full body — list/search results only include a 200-char preview, which is not enough to write a grounded reply. - Confirm destructive or outbound actions unless explicitly authorized. State the verb, recipients, and key fields. For replies, show the user the body you're about to send, or save it as a draft and tell them where to find it.
- Act, then report briefly. "Sent — replied-all to 'Re: Q3 budget' with the revised numbers." Don't echo raw JSON unless asked.
Critical gotchas
Read references/gotchas.md for the complete list. The non-negotiables:
- Exchange sender addresses look like
EX:/O=...distinguished names, not SMTP. When filtering withfrom_addressinlist_mails, pass a name substring (e.g."sarah") rather than an exact address. - Mail rule toggling is live.
toggle_ruleflips a real rule the instant it's called. Alwayslist_rulesfirst, confirm the exact rule name with the user, then toggle. - OOO is read-only here.
get_out_of_officereports state; there is no tool to enable/disable. If the user wants to set OOO, tell them to use Outlook → File → Automatic Replies. - Programmatic Access prompts on corporate machines can silently block
send_mail/reply_mail/forward_mail/delete_mail. If the user reports "you said you sent it but I don't see it", point them to Outlook → File → Options → Trust Center → Programmatic Access. - First call after a cold start can take several seconds. Don't retry as if it had failed.
- A meeting that has attendees is sent the moment
create_eventsucceeds — there's no "save as draft" for invites. Confirm attendee list and times before calling. - Only classic Outlook is supported. If the user is on the new Outlook (
olk.exe), the tools won't see it. Tell them to switch back to classic Outlook.
Reference files (load on demand)
references/tools.md— everyoutlook_*tool: parameters, defaults, return shape, and notes on which fields feed into which subsequent tools.references/recipes.md— worked examples for triage, drafting replies, weekly digests, scheduling meetings, recurring events, attachment workflows, multi-mailbox setups.references/gotchas.md— every quirk and failure mode worth knowing, with the user-visible symptom and the corrective action.references/setup.md— load this only when theoutlook_*tools aren't yet available. It walks the user through the one-time install of the underlying integration (Windows + classic Outlook prerequisites, install command, registering with the user's MCP client, and a troubleshooting tree).
Read the relevant reference file when you're about to do something for the first time in a session. The information is dense — fetching it once and keeping it in working memory is cheaper than calling tools blindly and recovering from errors.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

