outlook_mail
GitHub管理Outlook邮件的读写、搜索、发送、回复和删除操作,处理认证连接及JSON输出解析。
Trigger Scenarios
Install
npx skills add win4r/MuseAI-Skills --skill outlook_mail -g -y
SKILL.md
Frontmatter
{
"icon": "outlook_mail",
"name": "outlook_mail",
"metadata": {
"includeInPrompt": false
},
"description": "Read, search, send, reply to, and delete messages in the user's Outlook Mail."
}
Outlook Mail
Purpose
Manage Outlook Mail messages with the outlook-mail companion CLI.
Tooling
Use exec to run:
outlook-mail <subcommand> [options]
Core subcommands:
disconnectlist [--page-size 10] [--unread] [--page-token 20] [--folder sentitems]get "<MESSAGE_ID>"search "<query>" [--folder sentitems] [--page-size 10]send --to alice@example.com [--to bob@example.com] [--cc charlie@example.com] --subject "Hello" --body "Hi ..." [--attachment /path/to/file.pdf]reply "<MESSAGE_ID>" --body "Thanks for the update!" [--reply-all]delete "<MESSAGE_ID>"(moves the message to Deleted Items; recoverable, not a permanent delete)mark-read "<MESSAGE_ID>"mark-unread "<MESSAGE_ID>"
Use --page-size for result count. --top, --limit, and --max-results
are compatibility aliases only; do not use them in new commands. Use
get "<MESSAGE_ID>" for a single message; read, get --id, and
search --query are compatibility forms only.
JSON output contract:
disconnect: parseok,action,status, anddisconnect_urllist/search: parseok,count,next_page_token(when present, pass back as--page-token),total_messages,retrieved_at, andmessages[]withid,subject,from,to,date,message_received_at,preview,is_read, andhas_attachmentsget: parseok,retrieved_at, andmessagewithid,subject,from,to,cc,date,message_received_at,body,body_type,is_read, andhas_attachmentssend: parseokandactionreply: parseok,action, andmessage_iddelete: parseok,action(trashed), andmessage_id; the moved message gets a new id, somessage_idis not the id you passed in — use the returned one for any follow-up commandmark-read/mark-unread: parseok,action, andmessage_id
Auth
Use outlook-mail --status for connector state and link management. The binary handles its callback target internally.
- If the user wants to connect or reconnect, replace
<connect_url>with the returned URL and share exactly this Markdown link:[Connect Outlook Mail](<connect_url>); do not paste the raw URL separately. - If the user wants to disconnect, run
outlook-mail disconnect. Whendisconnect_urlis present, replace<disconnect_url>with the returned URL and share exactly this Markdown link:[Disconnect Outlook Mail](<disconnect_url>); do not paste the raw URL separately. Otherwise say it is already disconnected. - Keep status and linking inside
outlook-mail --status; do not use a shared connector helper CLI. - Never print tokens, cookies, or connector secrets.
Operating Rules
- Use
searchfor targeted lookup,listfor browsing, andgetonly when you need the full body of a specific message. - Message IDs are opaque Graph values. Reuse the exact
idreturned bylistorsearch. - Before
send, confirm recipients, subject, and body in the current thread. - Before
reply, confirm the reply body and whether the user wants--reply-all. Use--reply-allonly when the user explicitly wants everyone included. delete,mark-read, andmark-unreadmay proceed from a clear user request without an additional confirmation.deletemoves the message to the Deleted Items folder, where the user can still recover it; tell the user that, and do not describe it as permanent or unrecoverable.- For mailbox-summary requests, exclude likely spam, phishing, or irrelevant bulk promotions by default unless the user explicitly asks for junk or spam, and briefly note that filtering if you used it.
- If the CLI reports an auth failure or disconnected state, stop and route the user through the
--statusconnect flow before retrying. - Never surface raw Graph identifiers (message ids, conversation ids) or other internal response fields (change keys,
@odatafields, page/skip tokens, raw JSON) in text shown to the user — including in summaries, lists, or per-item annotations. Reuse the ids only internally to chain follow-up commands (rule 2). The sole exceptions are when the user explicitly asks for a raw id or you must show one to troubleshoot a failure. - The compatibility
datefield is Outlook's message-received time. Prefermessage_received_at.user_localwhen presenting it. It is not the time of an event described inside the email; never infer a delivery, payment, trip, meeting, or other event time from it.
Version History
- 38bbb45 Current 2026-10-18 15:48


