outlook
Microsoft 365 mail and calendar, from the terminal
Read, search, send and manage mail and calendars without leaving your agent. It also turns a PST archive into searchable markdown with a SHA256 chain of custody over every message, which is the half that came out of a real client handover.
Install outlook
Add the DBHQ marketplace, once
/plugin marketplace add dbhq-uk/marketplaceInstall the skill
/plugin install outlook@dbhq
Both commands work in Claude Code and in Codex. The marketplace is a public repository you can read first: dbhq-uk/marketplace (external site)
What it is good at
Reply-all by default
A reply preserves every original To: and Cc: recipient, so nobody is silently dropped from a thread. Trim to sender-only when you mean to. Losing a recipient by accident is invisible from your side; sending to one person too many is not.
Reading the whole message, never the preview
The skill is instructed to open the full body end to end before summarising or replying, so a deadline, an attachment or a request buried below the fold does not get missed.
Anchoring time against the real clock
It resolves "today", "tomorrow" and "by EOD" against the actual date and tracks BST against UTC, so deadline arithmetic comes out right. Calendar times are wall-clock in a timezone it names rather than assumes.
Turning a box of mail into something searchable
A second skill ships in the same install and works offline on files alone: it converts a PST export or exported live mail into markdown with a SHA256 chain of custody over every message. It needs no credentials and makes no network calls.
Formatting that survives Outlook
Markdown drafts convert to clean HTML with the Microsoft 365 Aptos font stack and inline styles, including per-paragraph margins, so what lands in the recipient's client is what you wrote.
What it does not do
It will not draft and send in one command
Drafting and sending are different verbs, and so are creating an event and inviting anyone to it. The scripts refuse the shortcuts - an event with attendees needs --send-invites - but they cannot stop an agent running send straight after a draft. Installed as a Claude Code plugin, it asks you before any command that sends, and install.sh offers ask rules that prompt in every permission mode, bypass included. OUTLOOK_READ_ONLY=1 refuses every write. Codex loads neither the hook nor the rules, so there the gap is the scripts and the instructions.
It cannot reach another mailbox
It asks for five permissions and no more - Mail.ReadWrite, Mail.Send, Calendars.ReadWrite, User.Read and offline_access - all delegated. Nothing tenant-wide and nothing that reaches a colleague's mail. Whether you can approve them yourself depends on your tenant: many organisations require an admin to.
It reads a PST only through readpst
readpst, from pst-utils, is the one PST reader, and it runs single-threaded because its parallel jobs can drop the last messages of a folder while reporting no error. A folder of .eml files, which is how live mail arrives, needs nothing extra, and the Python side installs on any version from 3.9 up.
It does not run on native Windows
Linux, macOS and WSL. The live half needs the Azure CLI, jq and curl, plus openssl for setup; pandoc is optional and only for markdown-formatted mail.
Read it before you install it
Every line is public and MIT licensed. The README is the long version of this page, including the parts that are still rough.