Outlook and OneDrive Skill
Manage personal Microsoft 365 (Outlook.com/Hotmail/Live) email, calendar, and OneDrive via the m365-cli command-line tool. Requires: Node.js 18+ and `m365-cl...
Description
name: outlook
description: >-
Manage personal Microsoft 365 (Outlook.com/Hotmail/Live) email, calendar, and OneDrive
via the m365-cli command-line tool. Requires: Node.js 18+ and m365-cli installed globally
(npm install -g m365-cli), plus OAuth authentication (m365 login --account-type personal).
Accesses sensitive data: emails, calendar events, OneDrive files, and contacts.
Use when: (1) reading, sending, or searching emails,
(2) managing calendar events (list, create, update, delete), (3) uploading/downloading OneDrive files,
(4) searching users/people, (5) deleting or moving emails, (6) managing mail folders,
(7) any task involving personal Outlook/Hotmail/Live account management
from the terminal. Triggers: "check my email", "send an email", "schedule a meeting",
"list my calendar", "upload to OneDrive", "download from OneDrive", "search mail",
"what's on my calendar", "manage Outlook", "m365", "outlook", "delete email",
"move email", "mail folders", "create folder", "organize email".
Outlook Skill (m365-cli)
Manage a personal Microsoft account (Outlook.com / Hotmail / Live) via the m365 CLI.
Use --json for structured output suitable for AI agent consumption (most commands support it).
Prerequisites
- Node.js 18+
m365-cliinstalled globally:npm install -g m365-cli- Authenticated:
m365 login --account-type personal
If not authenticated, run login first. The CLI uses Device Code Flow — follow the on-screen URL and code.
Key Conventions
- Use
--jsonfor programmatic output (most commands support it;trust/untrustdo not). - Personal accounts support: Mail (including delete, move, and folder management), Calendar, OneDrive, User search. Not SharePoint.
- Calendar datetime format:
YYYY-MM-DDTHH:MM:SS(local) orYYYY-MM-DD(all-day). - IDs: Email/event IDs are long opaque strings. Parse the
idfield from--jsonlist/search output. - Timezone: auto-detected. Override:
export M365_TIMEZONE="Asia/Shanghai".
Quick Workflow Reference
Authentication
m365 login --account-type personal # First-time login
m365 logout # Clear credentials
# List emails (folders: inbox|sent|drafts|deleted|junk)
m365 mail list --top 10 --json
m365 mail list --folder sent --top 5 --json
m365 mail list --focused --json # Show only Focused Inbox emails
# Read / send / search
m365 mail read <id> --force --json
m365 mail send "to@example.com" "Subject" "Body" --json
m365 mail send "to@example.com" "Subject" "Body" --attach file.pdf --cc "cc@ex.com" --json
m365 mail search "keyword" --top 20 --json
# Attachments
m365 mail attachments <message-id> --json
m365 mail download-attachment <message-id> <attachment-id> [local-path] --json
# Delete / move
m365 mail delete <id> --force --json
m365 mail move <id> <destination> --json # destination: inbox|sent|drafts|deleted|junk|archive or folder ID
# Folder management
m365 mail folder list --json
m365 mail folder list --parent inbox --json # List child folders
m365 mail folder create "My Projects" --json
m365 mail folder create "Sub" --parent inbox --json
m365 mail folder delete <folder-id> --force --json
# Trusted senders whitelist
m365 mail trusted --json
m365 mail trust user@example.com
m365 mail trust @example.com # Trust entire domain
m365 mail untrust user@example.com
Calendar
# List / get
m365 cal list --days 7 --json
m365 cal get <event-id> --json
# Create
m365 cal create "Title" --start "2026-03-10T14:00:00" --end "2026-03-10T15:00:00" --json
m365 cal create "Title" -s "2026-03-10T14:00:00" -e "2026-03-10T15:00:00" \
--location "Room A" --body "Notes" --attendees "a@ex.com,b@ex.com" --json
m365 cal create "Holiday" --start "2026-03-20" --end "2026-03-21" --allday --json
# Update / delete
m365 cal update <id> --title "New Title" --location "Room B" --json
m365 cal delete <id> --json
OneDrive
# List / get metadata
m365 od ls --json
m365 od ls Documents --json
m365 od get "Documents/report.pdf" --json
# Download / upload
m365 od download "Documents/report.pdf" ~/Downloads/ --json
m365 od upload ~/Desktop/photo.jpg "Photos/vacation.jpg" --json
# Search / mkdir / delete
m365 od search "budget" --top 20 --json
m365 od mkdir "Projects/New" --json
m365 od rm "old-file.txt" --force --json
For sharing, invitations, and advanced OneDrive options, see references/commands.md.
User Search
m365 user search "John" --top 5 --json # Searches contacts and people
Common Patterns
Read and reply to email
m365 mail list --top 5 --json # 1. Find email
m365 mail read <id> --force --json # 2. Read content
m365 mail send "sender@ex.com" "Re: Sub" "Reply" --json # 3. Reply
Check calendar and schedule
m365 cal list --days 3 --json # 1. Check availability
m365 cal create "Meeting" -s "..." -e "..." --json # 2. Book slot
Download email attachment
m365 mail attachments <msg-id> --json # 1. List attachments
m365 mail download-attachment <msg-id> <att-id> ~/Downloads/ --json # 2. Download
Delete and organize email
m365 mail list --top 10 --json # 1. Find email
m365 mail delete <id> --force --json # 2a. Delete it, OR
m365 mail move <id> archive --json # 2b. Move to archive
Manage mail folders
m365 mail folder list --json # 1. List all folders
m365 mail folder create "Projects" --json # 2. Create custom folder
m365 mail move <id> <folder-id> --json # 3. Move email into it
Trusted Senders (Security)
m365 mail read filters untrusted sender content (shows metadata only). Use --force to bypass.
See references/commands.md for whitelist management commands.
Full Command Reference
See references/commands.md for every command, subcommand, flag, and default value.
Troubleshooting
- "Not authenticated":
m365 login --account-type personal - Token expired: Auto-refreshes. If fails, re-run login.
- SharePoint errors: Personal accounts don't support SharePoint.
- Wrong timezone:
export M365_TIMEZONE="Your/Timezone"
Security & Privacy
This skill accesses personal email, calendar, files, and contacts — all sensitive PII.
- Never read, output, or log
~/.m365-cli/credentials.json— it contains OAuth tokens. - Never include full email bodies or attachment contents in agent output unless the user explicitly requested that specific email.
- Summarize email content instead of echoing it verbatim when presenting results to the user.
- Credential refresh is automatic; never attempt to manually edit or parse the token file.
- When listing emails, prefer showing metadata (subject, sender, date) over full body content.
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!