outlook-scan

outlook-scan is a skill for Claude Code, Codex from crux/outlook-scan. It costs 52 tokens per session (1,508 once invoked), scanned A, original, MIT.

A read-only command-line tool for searching and reading Microsoft 365 work email through Microsoft Graph, including message threads and attachments.

In plain words
What is it for?
Use it to list inbox messages, search mail, read conversations, and list or download attachments when explicitly requested.
Why use it?
It lets an agent inspect the mailbox without storing messages locally or changing the mailbox.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/crux/outlook-scan/skill
Any agent
npx skills add crux/outlook-scan --skill skill
Clone the repo
git clone --depth 1 https://github.com/crux/outlook-scan

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for outlook-scan

README.md
[![agentmods](https://agentmods.dev/badge/skills/crux/outlook-scan/skill.svg)](https://agentmods.dev/skills/crux/outlook-scan/skill)
Your own site
<a href="https://agentmods.dev/skills/crux/outlook-scan/skill"><img src="https://agentmods.dev/badge/skills/crux/outlook-scan/skill.svg" alt="Measured on agentmods" height="20"></a>
Per session 52 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,508 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00052 $0.01508
Opus 5 $0.00026 $0.00754
Sonnet 5 $0.00010 $0.00302
Haiku 4.5 $0.00005 $0.00151

Measured 3d ago against content hash 3867279c8384, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

outlook-scan scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skill/SKILL.md · 133 lines

How it starts

The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.

outlook-scan — on-demand mailbox access via Microsoft Graph

A CLI (outlook-scan, expected on PATH) that queries the mailbox live - read-only unless write mode is enabled (drafts only). Nothing is stored locally unless --save is passed.

Ground rules

  • Stdout first. Print results into the session; use --save DIR only when the user explicitly wants files kept (extraction, archiving, attachments). Confirm or choose an obvious target directory.
  • Message ids start with AAMk, conversation ids with AAQk. Both are long — always quote them in commands. thread accepts either kind.
  • The tool can never send, move, delete, or mark mail. With write mode on it can only create drafts for the user to review (see below).

Commands

outlook-scan list [--folder NAME] [--unread] [--since 24h|7d|2w|YYYY-MM-DD] [--max N]
    # metadata, newest first: "N. [date] ● sender — subject 📎" + id line
    # ● = unread, 📎 = has attachments. Default folder Inbox, max 25.
    # Folders: display names or aliases (inbox, archive/archiv, sent,
    # drafts, trash, junk/spam — English and German aliases built in).

outlook-scan search [--max N] "query"
    # server-side full-text search across ALL folders, relevance-ranked

outlook-scan get [--save DIR [--attachments]] "MESSAGE-ID"
    # full message as markdown (headers, attachment names, plain-text body)
    # --save DIR writes .md file; --attachments additionally downloads files

outlook-scan attachments [--save DIR] "MESSAGE-ID"
    # list attachments (name, size, kind); with --save: download them

outlook-scan thread [--save DIR] "MESSAGE-ID-or-CONVERSATION-ID"
    # entire conversation across all folders, chronological, one document

outlook-scan folders | status | login

All read commands accept --json for structured output.

Read the full file on GitHub · 133 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 133 lines · 52 tokens per session scan A 3867279c8384

Subscribe to this mod's changes

outlook-scan is a skill published in the GitHub repository crux/outlook-scan (0 stars, last pushed 4d ago), licensed MIT. It adds 52 tokens to every session and 1,508 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

novu-inbox-integration

Integrate Novu's in-app notification inbox into web applications. Supports React, Next.js, and vanilla JavaScript. Includes the Inbox component (bell icon + notification feed), composable components (Bell, Notifications, InboxContent, Preferences), headless hooks, branded theming, custom render props, multi-tenancy…

novuhq/novu · 111 tokens

react-email

Use when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.

novuhq/novu · 30 tokens

novu-design-workflow

Design notification workflows the Novu way — choose channels, set severity, decide when a workflow is critical, configure digests, and route based on subscriber state. Applies to BOTH dashboard-authored and code-first (@novu/framework) workflows. Use when planning a new workflow, deciding which channels to include…

novuhq/novu · 114 tokens

address-pr-review

Critically triage pull request review comments against PR requirements and codebase reality, implement only valid fixes, and reply only when declining a suggestion. Use when the user asks to address PR comments, review feedback, CodeRabbit/Bugbot threads, or /address-pr-review.

novuhq/novu · 59 tokens

triage-agent-eval-failures

Triage failing @novu/agent-evals scenarios to decide whether a failure is real or flaky, and whether to fix the playbook/prompt or the test (grader, tape, scenario, or judge). Use when an agent-evals scenario fails, when the user asks why an eval is red, or when deciding whether to fix the test or the prompt.

novuhq/novu · 83 tokens

sanity-changelog

Create and publish Novu changelog entries in Sanity (changelogPost documents), including feature posts, "improvements & fixes" roundups built from Linear releases, and the Changes (changeBlock) component. Use when asked to write a changelog entry, announce a shipped feature on the changelog, roll up improvements/bug…

novuhq/novu · 92 tokens