Control Outlook from the Command Line

Can't access Exchange via Microsoft Graph API? No problem. Control Outlook directly through COM automation on your Windows workstation. Let Claude help manage your email and calendar — no API keys, no OAuth, just your existing Outlook session.

Windows Only No API Keys Local Only AI Skills (Claude & Codex)
outlookctl
$ outlookctl list --count 3
3 messages from Inbox
$ outlookctl calendar list --days 7
5 events upcoming
$ outlookctl draft --to "team@company.com"
Draft saved to Drafts folder

Email & Calendar Automation

Full control over your Outlook inbox and calendar through a clean CLI interface

Email Management

List, search, and read emails. Create drafts with AI assistance. Send with explicit confirmation.

  • list --count 10 --unread-only
  • search --from "boss@company.com"
  • draft --to "team@company.com"
  • attachments save --dest ./files
📅

Calendar Control

View upcoming events, create meetings, and respond to invitations. Shared calendar support included.

  • calendar list --days 14
  • calendar create --subject "Sync"
  • calendar respond --response accept
  • calendar send --confirm-send YES
🤖

Claude Code Integration

Built-in skill for Claude Code. Let AI help triage your inbox, draft responses, and manage your schedule.

Agent Skills support in VS Code is currently in preview and only available in VS Code Insiders. Enable the chat.useAgentSkills setting to use Agent Skills.

  • "Summarize my unread emails"
  • "Draft a reply to the latest email"
  • "What meetings do I have today?"
  • "Schedule a meeting with Alice"
🛠

Developer Friendly

JSON output for easy parsing. Stable message IDs for scripting. Comprehensive error handling.

  • Structured JSON responses
  • Consistent schema (v1.0)
  • Entry/Store ID references
  • Full error codes & remediation

Draft-First Workflow

outlookctl is designed to prevent accidental sends. All emails and meeting invitations go through a draft-review-confirm workflow. Nothing leaves your outbox without explicit approval.

  • 1

    Create Draft

    Compose your message or meeting. Saved to Drafts folder.

  • 2

    Review

    Check recipients, content, and attachments before sending.

  • 3

    Confirm Send

    Explicit --confirm-send YES required. All sends are logged.

bash
# Step 1: Create draft outlookctl draft \ --to "client@company.com" \ --subject "Project Update" \ --body-text "Here's the update..." # Step 2: Review in Outlook or CLI outlookctl get --id <entry_id> --store <store_id> # Step 3: Send with explicit confirmation outlookctl send \ --draft-id <entry_id> \ --draft-store <store_id> \ --confirm-send YES

Up and Running in 60 Seconds

Clone, sync, and start automating your Outlook

1 Clone the repository

bash
git clone https://github.com/gmickel/outlookctl.git cd outlookctl

2 Install dependencies

bash
uv sync

3 Verify your environment

bash
uv run python -m outlookctl.cli doctor

4 Install AI Skill (optional)

bash
# For Claude Code uv run python tools/install_skill.py --personal # For OpenAI Codex uv run python tools/install_skill.py --codex