Claude
Skills
Sign in
Back

pp-outlook-email

Included with Lifetime
$97 forever

Drive your personal Microsoft 365 inbox from agents — read, send, sync, and run offline triage analytics that... Trigger phrases: `what's in my inbox`, `find emails from X`, `send an outlook email`, `follow up on email I sent`, `stale unread in outlook`, `who's emailing me most`, `use outlook-email`, `run outlook-email`.

Productivity

What this skill does

<!-- GENERATED FILE — DO NOT EDIT.
     This file is a verbatim mirror of library/productivity/outlook-email/SKILL.md,
     regenerated post-merge by tools/generate-skills/. Hand-edits here are
     silently overwritten on the next regen. Edit the library/ source instead.
     See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->

# Outlook Email — Printing Press CLI

## Prerequisites: Install the CLI

This skill drives the `outlook-email-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:

1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
   ```bash
   npx -y @mvanhorn/printing-press-library install outlook-email --cli-only
   ```
2. Verify: `outlook-email-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.

If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.3 or newer):

```bash
go install github.com/mvanhorn/printing-press-library/library/productivity/outlook-email/cmd/outlook-email-pp-cli@latest
```

If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.

## When to Use This CLI

Reach for this CLI when an agent needs to triage a personal Microsoft 365 inbox at scale, surface follow-ups, or compose mail without a Copilot license. It is the right choice over generic HTTP because the offline store unlocks cross-folder/cross-time queries (followup, senders, waiting, digest) that require persisted state.

## Unique Capabilities

These capabilities aren't available in any other tool for this API.

### Local state that compounds
- **`followup`** — List emails you sent more than N days ago that the recipient never replied to — close the loops you forgot about.

  _Sales, PM, and recruiting workflows live and die on follow-up timing. Reach for this when an agent needs to surface stalled threads._

  ```bash
  outlook-email-pp-cli followup --days 7 --agent
  ```
- **`senders`** — Group your inbox by sender over a window: count, unread, last-received, dominant folder — see who's drowning your inbox.

  _Use as the input to bulk-archive or to drive inbox-rule decisions. Agents pruning a flooded inbox start here._

  ```bash
  outlook-email-pp-cli senders --window 30d --min 5 --agent --select sender,count,unread,last_received
  ```
- **`since`** — Show what landed since a timestamp, grouped by focused/other, sender, and folder. Perfect for 'what did I miss while I was heads-down'.

  _The first command an agent should run when joining a session to catch up. Cheap, structured, agent-shaped._

  ```bash
  outlook-email-pp-cli since 2h --agent
  ```
- **`flagged`** — List flagged messages with open due dates, days-overdue, age. The inbox-zero work list Outlook never aggregates.

  _An agent's todo list. Pair with reply/forward to actually close the items._

  ```bash
  outlook-email-pp-cli flagged --overdue --agent
  ```
- **`stale-unread`** — Unread messages older than N days, grouped by folder. Surfaces the unread debt hiding in subfolders.

  _Different from `senders` (volume) — answers 'where is unread piling up' so an agent can route folders to bulk-mark-read._

  ```bash
  outlook-email-pp-cli stale-unread --days 14 --agent
  ```
- **`waiting`** — Conversations where the last message is not from you and is unread or unanswered for N days. The 'someone's waiting on you' work list.

  _Symmetric to followup. Pair both at start-of-day to see your half and their half of every open thread._

  ```bash
  outlook-email-pp-cli waiting --days 3 --agent
  ```
- **`conversations`** — Conversations ranked by message count, participants, and unread tail. Find the threads burning your attention budget.

  _Helps an agent decide which thread to summarize or mute next._

  ```bash
  outlook-email-pp-cli conversations --top 20 --window 30d --agent
  ```
- **`quiet`** — Senders you used to hear from but who've gone silent for N days. Useful for relationship lapse detection.

  _Sales/PM use case: surface customers or vendors who used to engage and don't anymore._

  ```bash
  outlook-email-pp-cli quiet --baseline 90d --silent 30d --agent
  ```
- **`digest`** — One-shot daily summary: received/sent/unread/flagged counts, top senders, top conversations, focused/other ratio.

  _Run this from a cron or skill loop to produce a Slack-shaped daily summary without making 10+ Graph calls._

  ```bash
  outlook-email-pp-cli digest --date 2026-05-12 --agent
  ```
- **`attachments-stale`** — Attachments older than N days and over a size threshold, sortable by size. The mailbox-quota rescue plan.

  _When the mailbox is near quota, agents need the largest oldest attachments first; this command is that list._

  ```bash
  outlook-email-pp-cli attachments-stale --days 90 --min-mb 1 --agent --select sender,received_at,size_mb,name
  ```
- **`dedup`** — Find probable duplicate threads or messages by conversation_id, internet_message_id, or normalized (subject, from, to).

  _Surfaces newsletter duplicates and cross-folder copies before bulk-archive runs._

  ```bash
  outlook-email-pp-cli dedup --by subject-sender --agent
  ```

### Agent-native plumbing
- **`bulk-archive`** — Read a sender list or query, print a move plan, optionally execute it. Safe by default, no surprises.

  _Pair with `senders` or `quiet` for end-to-end inbox triage; agents can audit the plan before opting in to --execute._

  ```bash
  outlook-email-pp-cli bulk-archive --from-senders senders.txt --to-folder Archive --execute
  ```

## Command Reference

**attachments** — Attachments on a specific message

- `outlook-email-pp-cli attachments get` — Get a single attachment (metadata + base64 contentBytes for fileAttachment)
- `outlook-email-pp-cli attachments list` — List attachments on a message (metadata only by default)

**categories** — Master list of color categories applied across mail and calendar

- `outlook-email-pp-cli categories create` — Create a new color category
- `outlook-email-pp-cli categories delete` — Delete a color category
- `outlook-email-pp-cli categories get` — Get a category by id
- `outlook-email-pp-cli categories list` — List the master color categories

**folders** — Mail folders and their hierarchy

- `outlook-email-pp-cli folders children` — List child folders under a parent folder
- `outlook-email-pp-cli folders create` — Create a top-level mail folder
- `outlook-email-pp-cli folders create-child` — Create a child folder under a parent
- `outlook-email-pp-cli folders delete` — Delete a mail folder (moves contents to Deleted Items)
- `outlook-email-pp-cli folders delta` — Delta-sync of the mail folder hierarchy
- `outlook-email-pp-cli folders get` — Get a mail folder by id or well-known name
- `outlook-email-pp-cli folders list` — List top-level mail folders
- `outlook-email-pp-cli folders messages` — List messages in a specific folder
- `outlook-email-pp-cli folders update` — Rename a mail folder

**inference** — Focused/Other inbox classification overrides

- `outlook-email-pp-cli inference create-override` — Pin a sender to Focused or Other
- `outlook-email-pp-cli inference delete-override` — Remove a sender pin
- `outlook-email-pp-cli inference list-overrides` — List sender pins to Focused or Other

**mailbox-settings** — Mailbox-level settings: timezone, language, signature, automatic replies

- `outlook-email-pp-cli mailbox-settings get` — Get all mailbox settings
- `outlook-email-pp-cli mailbox-settings update` — Update mailbox settings (automatic replies, timezone, working hours, language)

**messages** — Outlook mail messages on your default mailbox

- `outlook-email-pp-cli messages copy` — Copy a

Related in Productivity