ms365-connect

ms365-connect is a skill for Claude Code, Codex from sonichi/sutando. It costs 72 tokens per session (1,407 once invoked), scanned A, original, MIT.

A connector to Microsoft 365 services through Microsoft Graph, Microsoft's interface for accessing services such as OneDrive, Outlook, Calendar, and Teams.

In plain words
What is it for?
Listing or downloading OneDrive files, reading or sending Outlook email, listing upcoming calendar events, and posting messages to Teams channels.
Why use it?
It lets workflows access common Microsoft 365 data and actions without handling the Graph requests directly each time.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

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/sonichi/sutando/ms365-connect
Any agent
npx skills add sonichi/sutando --skill ms365-connect
Clone the repo
git clone --depth 1 https://github.com/sonichi/sutando

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 ms365-connect

README.md
[![agentmods](https://agentmods.dev/badge/skills/sonichi/sutando/ms365-connect.svg)](https://agentmods.dev/skills/sonichi/sutando/ms365-connect)
Your own site
<a href="https://agentmods.dev/skills/sonichi/sutando/ms365-connect"><img src="https://agentmods.dev/badge/skills/sonichi/sutando/ms365-connect.svg" alt="Measured on agentmods" height="20"></a>
Per session 72 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,407 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.1 $0.00072 $0.01407
Opus 5 $0.00036 $0.00704
Sonnet 5 $0.00014 $0.00281
Haiku 4.5 $0.00007 $0.00141

Measured 7d ago against content hash 0ac8a527908f, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

ms365-connect 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 7d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (scripts/ms365.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

skills/ms365-connect/SKILL.md · 131 lines

How it starts

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

ms365-connect

Microsoft 365 connectivity for Sutando, built on the Apache-2.0 python-o365 library (O365 on PyPI), which is a thin wrapper over Microsoft Graph.

What it does

All operations go through Microsoft Graph via python-o365:

  • OneDrive — list a folder's contents (onedrive-list) and download a file to a local path (onedrive-get).
  • Outlook mail — list recent inbox messages (outlook-list) and send an email (outlook-send).
  • Calendar — list upcoming events over a window of days (calendar-list).
  • Teams — post a message to a channel in a team (teams-post).

Authentication is a one-time delegated OAuth2 consent flow (auth); the refresh token is cached on disk so subsequent commands run non-interactively.

Usage

Run the CLI with python3 scripts/ms365.py <subcommand>:

# One-time: run the OAuth consent flow and cache the token
python3 scripts/ms365.py auth

# OneDrive
python3 scripts/ms365.py onedrive-list                 # list root
python3 scripts/ms365.py onedrive-list "/Projects/Q3"  # list a folder by path
python3 scripts/ms365.py onedrive-get "/Reports/x.pdf" ./x.pdf

# Outlook mail
python3 scripts/ms365.py outlook-list --n 10
python3 scripts/ms365.py outlook-send --to [email protected] --subject "Hi" --body "Hello"

# Calendar
python3 scripts/ms365.py calendar-list --days 7

# Teams
python3 scripts/ms365.py teams-post --team "Engineering" --channel "General" \
  --message "Deploy is green"

Every subcommand except auth requires that auth has already been run and a cached token exists.

Configuration

Secrets are read from the environment (populate them from the Sutando vault; never hardcode):

Variable Purpose
MS365_CLIENT_ID Azure AD application (client) ID
MS365_CLIENT_SECRET Azure AD client secret value
MS365_TENANT_ID Directory (tenant) ID, or common / organizations
MS365_AUTH_FLOW credentials (default; confidential client, id+secret) or public (native client, id only — required when the app's redirect is registered under "Mobile and desktop applications"; symptom of the mismatch: AADSTS700025 on token exchange). In public flow MS365_CLIENT_SECRET is not required.

Read the full file on GitHub · 131 lines

Files

What ships with it

3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

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. 7d ago First seen · 131 lines · 72 tokens per session scan A 0ac8a527908f

Subscribe to this mod's changes

ms365-connect is a skill published in the GitHub repository sonichi/sutando (392 stars, last pushed today), licensed MIT. It adds 72 tokens to every session and 1,407 once invoked, about $0.0004 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-30.