Clippy - Microsoft 365 CLI
Microsoft 365 / Outlook CLI for calendar and email. Use when managing Outlook calendar (view, create, update, delete events, find meeting times, respond to invitations), sending/reading emails, or sea
Microsoft 365 / Outlook CLI for calendar and email. Use when managing Outlook calendar (view, create, update, delete events, find meeting times, respond to invitations), sending/reading emails, or sea
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Source: https://github.com/foeken/clippy
Works through the M365 web UI via browser automation (Playwright), not the Graph API. No Azure AD app registration required - just login with your browser.
git clone https://github.com/foeken/clippy.git cd clippy && bun install bun run src/cli.ts --help
Or link globally:
bun link
# Interactive login (opens browser, establishes session) clippy login --interactiveCheck auth status
clippy whoami
Keep a browser session alive to prevent token expiry:
# Start keepalive (keeps browser open, refreshes every 10min) clippy keepalive --interval 10
For persistent operation, set up as a launchd service (macOS) or systemd (Linux).
Health monitoring: Keepalive writes to
~/.config/clippy/keepalive-health.txt on each successful refresh. Check if this file is stale (>15min) to detect failures.
# Today's events clippy calendarSpecific day
clippy calendar --day tomorrow clippy calendar --day monday clippy calendar --day 2024-02-15
Week view
clippy calendar --week
With details (description, attendees)
clippy calendar --details
clippy create-event "Title" 09:00 10:00Full options
clippy create-event "Meeting" 14:00 15:00
--day tomorrow
--description "Meeting notes"
--attendees "alice@company.com,bob@company.com"
--teams
--find-roomRecurring
clippy create-event "Standup" 09:00 09:15 --repeat daily clippy create-event "Sync" 14:00 15:00 --repeat weekly --days mon,wed,fri
clippy update-event 1 --title "New Title" clippy update-event 1 --start 10:00 --end 11:00 clippy delete-event 1 clippy delete-event 1 --message "Need to reschedule"
clippy respond # List pending clippy respond accept --id <eventId> clippy respond decline --id <eventId> --message "Conflict" clippy respond tentative --id <eventId>
clippy findtime clippy findtime --attendees "alice@company.com,bob@company.com" clippy findtime --duration 60 --days 5
# Inbox clippy mail clippy mail --unread clippy mail -n 20 clippy mail --search "invoice"Other folders
clippy mail sent clippy mail drafts clippy mail archive
Read email
clippy mail -r <number>
Download attachments
clippy mail -d <number> -o ~/Downloads
clippy send \ --to "recipient@example.com" \ --subject "Subject" \ --body "Message body"With CC, attachments, markdown
clippy send
--to "alice@example.com"
--cc "manager@example.com"
--subject "Report"
--body "See attached"
--markdown
--attach "report.pdf"
clippy mail --reply <number> --message "Thanks!" clippy mail --reply-all <number> --message "Got it" clippy mail --forward <number> --to-addr "colleague@example.com"
clippy mail --mark-read <number> clippy mail --flag <number> clippy mail --move <number> --to archive
clippy find "john" # People clippy find "conference" --rooms # Rooms
clippy calendar --json clippy mail --json
Profile directory can be overridden:
export CLIPPY_PROFILE_DIR=~/.config/clippy/my-profile
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.