mail
cmdhub adapter

Microsoft Outlook CLI
for cmdhub.

Outlook mail folders, messages, drafts, and attachments through Microsoft Graph.

lock Auth: OAuth2
Quick Install cmdhub get msoutlook

data_object Agent Contract

Agents should start with auth/status and discovery commands, inspect schemas before composition, and treat commands marked as mutating as state-changing operations.

Output

Use human output for reading, `--json` for one object, and `--jsonl` for pipes.

Auth

Microsoft OAuth. Used for Outlook messages, drafts, attachments, and mail sending.

Refs

Prefer list/search, then short refs or piped JSONL. Use `resolve` to inspect cached refs.

Schemas

Use `msoutlook schema` and `catalog.json` to inspect fields, flags, examples, and side effects.

Auth scopes

offline_accessUser.ReadMail.ReadWriteMail.Send

terminal Command Reference

Generated from source. Global flags apply to all commands.

Global Flags

--json bool Emit JSON machine output
--jsonl bool Emit JSONL records for piping
--output, -o string Compatibility output mode: json|jsonl. Prefer --json or --jsonl
--view string = summary View mode: summary|full
--profile string = default Config/auth profile
--config string Config path override
--quiet, -q bool Suppress non-essential diagnostics
--debug bool Enable debug diagnostics
--limit int = 50 Maximum items to emit
--page-size int = 50 Requested upstream page size
--cursor string Continuation cursor
--no-paginate bool Fetch only one page
--version, -v bool Print version information
msoutlook attachment Work with Outlook message attachments
#cmd-msoutlook-attachment discovery safe
$ msoutlook attachment list m1
$ msoutlook attachment get a1 --output-file ./file.txt
$ msoutlook attachment create d1 --file ./report.txt
msoutlook attachment create Add a file attachment to a draft message
#cmd-msoutlook-attachment-create mutates state
--file string File path to attach
--message string Message or draft ref/ID
$ msoutlook attachment create --help
$ msoutlook attachment create --message d1 --file ./report.txt
$ msoutlook attachment create d1 --file ./report.txt
msoutlook attachment delete Delete an attachment from a draft or message
#cmd-msoutlook-attachment-delete mutates state
--message string Message ref or ID when attachment is not a local ref
--yes bool Confirm attachment deletion
$ msoutlook attachment delete --help
$ msoutlook attachment delete AAMk... --message d1 --yes
$ msoutlook attachment delete a1 --yes
msoutlook attachment download Download an attachment to a file
#cmd-msoutlook-attachment-download discovery safe
--message string Message ref or ID when attachment is not a local ref
--output-file string Write decoded attachment bytes to this path
$ msoutlook attachment download
$ msoutlook attachment download AAMk... --message m1 --output-file ./attachment.bin
$ msoutlook attachment download a1 --output-file ./attachment.bin
msoutlook attachment get Get an attachment
#cmd-msoutlook-attachment-get discovery safe
--emit-content bool Include base64 content in JSON output
--message string Message ref or ID when attachment is not a local ref
--output-file string Write decoded attachment bytes to this path
$ msoutlook attachment get
$ msoutlook attachment get AAMk... --message m1 --json
$ msoutlook attachment get a1
$ msoutlook attachment get a1 --output-file ./attachment.bin
msoutlook attachment list List message attachments
#cmd-msoutlook-attachment-list discovery safe
--message string Message ref or ID
$ msoutlook attachment list
$ msoutlook attachment list --message d1
$ msoutlook attachment list m1
$ msoutlook message get m1 --jsonl | msoutlook attachment list
msoutlook auth Manage Microsoft authentication
#cmd-msoutlook-auth discovery safe
msoutlook auth login Authenticate with Microsoft Outlook
#cmd-msoutlook-auth-login mutates state
$ msoutlook auth login
$ msoutlook auth login --help
$ msoutlook auth status
msoutlook auth logout Remove stored Microsoft credentials
#cmd-msoutlook-auth-logout mutates state
$ msoutlook auth logout
$ msoutlook auth logout --help
$ msoutlook auth status
msoutlook auth refresh Refresh stored token
#cmd-msoutlook-auth-refresh mutates state
$ msoutlook auth refresh
$ msoutlook auth refresh --help
$ msoutlook auth status
msoutlook auth status Show auth status
#cmd-msoutlook-auth-status discovery safe
$ msoutlook auth status
$ msoutlook auth status --help
$ msoutlook auth status --json
$ msoutlook auth status --view full
msoutlook auth whoami Show current Microsoft identity
#cmd-msoutlook-auth-whoami discovery safe
$ msoutlook auth whoami
$ msoutlook auth whoami --help
$ msoutlook auth whoami --view full
msoutlook automatic-reply Manage bounded Outlook automatic replies
#cmd-msoutlook-automatic-reply discovery safe
msoutlook automatic-reply disable Disable automatic replies
#cmd-msoutlook-automatic-reply-disable discovery safe
--yes bool Confirm automatic reply disable
$ msoutlook automatic-reply disable --help
$ msoutlook automatic-reply disable --yes
msoutlook automatic-reply get Get automatic reply settings
#cmd-msoutlook-automatic-reply-get discovery safe
$ msoutlook automatic-reply get
$ msoutlook automatic-reply get --json
$ msoutlook automatic-reply get --view full
msoutlook automatic-reply set Set a bounded automatic reply
#cmd-msoutlook-automatic-reply-set mutates state
--external-audience string External audience: none, contacts, or all
--external-message string External automatic reply message
--from string Automatic reply start time
--internal-message string Internal automatic reply message
--to string Automatic reply end time
--yes bool Confirm automatic reply external effect
$ msoutlook automatic-reply set --from "2026-05-26 09:00" --to "2026-05-27 17:00" --internal-message "I am out today." --external-audience contacts --yes
$ msoutlook automatic-reply set --help
msoutlook capabilities Describe capabilities
#cmd-msoutlook-capabilities discovery safe
$ msoutlook capabilities --help
msoutlook category Manage Outlook master categories
#cmd-msoutlook-category discovery safe
msoutlook category create Create an Outlook category
#cmd-msoutlook-category-create mutates state
--color string Outlook preset color
--name string Category display name
$ msoutlook category create --help
$ msoutlook category create --name "cmdhub eval" --color preset7
msoutlook category delete Delete an Outlook category
#cmd-msoutlook-category-delete mutates state
--yes bool Confirm category deletion
$ msoutlook category delete --help
$ msoutlook category delete cat1 --yes
msoutlook category get Get an Outlook category
#cmd-msoutlook-category-get discovery safe
$ msoutlook category get
$ msoutlook category get cat1 --view full
msoutlook category list List Outlook categories
#cmd-msoutlook-category-list discovery safe
$ msoutlook category list
$ msoutlook category list --jsonl
$ msoutlook category list --limit 20
msoutlook category update Update an Outlook category
#cmd-msoutlook-category-update mutates state
--color string New Outlook preset color
--name string New category display name
$ msoutlook category update --help
$ msoutlook category update cat1 --name "cmdhub eval done" --color preset6
msoutlook config Inspect local configuration
#cmd-msoutlook-config discovery safe
msoutlook config explain Explain resolved configuration
#cmd-msoutlook-config-explain discovery safe
$ msoutlook config explain --help
msoutlook conversation Work with Outlook message conversations
#cmd-msoutlook-conversation discovery safe
$ msoutlook conversation list --folder inbox --limit 10
$ msoutlook conversation search --query "quarterly packet"
$ msoutlook conversation get c1 --view full
msoutlook conversation archive Archive every message in a conversation
#cmd-msoutlook-conversation-archive mutates state
--all bool Apply the action to every message in the conversation
--yes bool Confirm the conversation mutation
$ msoutlook conversation archive --help
$ msoutlook conversation archive c1 --all --yes
msoutlook conversation delete Delete every message in a conversation
#cmd-msoutlook-conversation-delete mutates state
--all bool Apply the action to every message in the conversation
--yes bool Confirm the conversation mutation
$ msoutlook conversation delete --help
$ msoutlook conversation delete c1 --all --yes
msoutlook conversation get Get a conversation
#cmd-msoutlook-conversation-get discovery safe
$ msoutlook conversation get
$ msoutlook conversation get c1 --view full
msoutlook conversation list List conversations
#cmd-msoutlook-conversation-list discovery safe
--folder string Folder ref, ID, or well-known name such as inbox
--query string Search text or Graph-style fielded terms
--unread bool Only show conversations with unread messages
$ msoutlook conversation list
$ msoutlook conversation list --query invoice --folder inbox
msoutlook conversation move Move every message in a conversation
#cmd-msoutlook-conversation-move discovery safe
--all bool Apply the action to every message in the conversation
--folder string Destination folder ref, ID, or well-known name
--yes bool Confirm the conversation mutation
$ msoutlook conversation move --help
$ msoutlook conversation move c1 --all --yes
msoutlook conversation read Mark every message in a conversation read
#cmd-msoutlook-conversation-read mutates state
--all bool Apply the action to every message in the conversation
--yes bool Confirm the conversation mutation
$ msoutlook conversation read --help
$ msoutlook conversation read c1 --all --yes
msoutlook conversation unread Mark every message in a conversation unread
#cmd-msoutlook-conversation-unread mutates state
--all bool Apply the action to every message in the conversation
--yes bool Confirm the conversation mutation
$ msoutlook conversation unread --help
$ msoutlook conversation unread c1 --all --yes
msoutlook doctor Run msoutlook diagnostics
#cmd-msoutlook-doctor discovery safe
$ msoutlook doctor
$ msoutlook doctor --help
$ msoutlook doctor --json
$ msoutlook doctor --view full
msoutlook draft Work with Outlook drafts
#cmd-msoutlook-draft discovery safe
$ msoutlook draft list
$ msoutlook draft get d1 --view full
$ msoutlook draft update d1 --body "Revised body"
msoutlook draft create Create a draft
#cmd-msoutlook-draft-create mutates state
--attach stringSlice = [] File path(s) to attach
--bcc stringSlice = [] Bcc recipient; repeat or comma-separate
--body string Message body
--cc stringSlice = [] Cc recipient; repeat or comma-separate
--importance string Importance: low, normal, or high
--subject string Message subject
--to stringSlice = [] Recipient; repeat or comma-separate
$ msoutlook draft create --help
$ msoutlook draft create --to alice@example.com --subject "Review" --body "Draft body"
$ msoutlook draft create --to alice@example.com --subject "With file" --body "Attached" --attach ./report.txt
msoutlook draft delete Delete a draft
#cmd-msoutlook-draft-delete mutates state
--all bool Confirm batch draft delete
--yes bool Confirm destructive batch draft delete
$ msoutlook draft delete --all --yes d1 d2
$ msoutlook draft delete --help
$ msoutlook draft delete d1
$ msoutlook draft list --jsonl | msoutlook draft delete --all --yes
msoutlook draft get Get a draft
#cmd-msoutlook-draft-get discovery safe
$ msoutlook draft get
$ msoutlook draft get d1
$ msoutlook draft get d1 --view full
$ msoutlook draft get d1 d2
$ msoutlook draft list --limit 2 --jsonl | msoutlook draft get
msoutlook draft list List draft messages
#cmd-msoutlook-draft-list discovery safe
--query string Filter drafts locally
$ msoutlook draft list
$ msoutlook draft list --jsonl | msoutlook draft get
$ msoutlook draft list --query review --limit 10
msoutlook draft send Send a draft
#cmd-msoutlook-draft-send mutates state
$ msoutlook draft list --limit 1 --jsonl | msoutlook draft send
$ msoutlook draft send --help
$ msoutlook draft send d1
msoutlook draft update Update a draft
#cmd-msoutlook-draft-update mutates state
--attach stringSlice = [] File path(s) to add as attachments
--bcc stringSlice = [] Bcc recipient; repeat or comma-separate
--body string New body
--cc stringSlice = [] Cc recipient; repeat or comma-separate
--importance string Importance: low, normal, or high
--subject string New subject
--to stringSlice = [] Recipient; repeat or comma-separate
$ msoutlook draft update --help
$ msoutlook draft update d1 --attach ./report.txt
$ msoutlook draft update d1 --body "Revised body" --importance high
$ msoutlook draft update d1 --subject "Updated subject"
msoutlook folder Work with Outlook mail folders
#cmd-msoutlook-folder discovery safe
$ msoutlook folder list
$ msoutlook folder list --query sent
$ msoutlook folder get f1 --view full
msoutlook folder create Create a mail folder
#cmd-msoutlook-folder-create mutates state
--name string Folder display name
--parent string Parent folder ref, ID, or well-known name
$ msoutlook folder create --help
$ msoutlook folder create --name "cmdhub child" --parent f1
$ msoutlook folder create --name "cmdhub triage"
msoutlook folder delete Delete an ordinary mail folder
#cmd-msoutlook-folder-delete mutates state
--yes bool Confirm folder deletion
$ msoutlook folder delete --help
$ msoutlook folder delete f1 --yes
msoutlook folder get Get a mail folder
#cmd-msoutlook-folder-get discovery safe
$ msoutlook folder get
$ msoutlook folder get f1
$ msoutlook folder get f1 f2
$ msoutlook folder get inbox --view full
$ msoutlook folder list --query sent --limit 2 --jsonl | msoutlook folder get
msoutlook folder list List mail folders
#cmd-msoutlook-folder-list discovery safe
--query string Filter folder names locally
$ msoutlook folder list
$ msoutlook folder list --jsonl | msoutlook message list --limit 10
$ msoutlook folder list --query archive --limit 5
msoutlook folder move Move a mail folder under another folder
#cmd-msoutlook-folder-move discovery safe
--parent string Destination parent folder ref, ID, or well-known name
$ msoutlook folder move --help
$ msoutlook folder move f1 --parent archive
msoutlook folder update Rename a mail folder
#cmd-msoutlook-folder-update mutates state
--name string New folder display name
$ msoutlook folder update --help
$ msoutlook folder update f1 --name "cmdhub triage done"
msoutlook mailbox Inspect the selected Outlook mailbox
#cmd-msoutlook-mailbox discovery safe
msoutlook mailbox get Get selected mailbox metadata
#cmd-msoutlook-mailbox-get discovery safe
$ msoutlook mailbox get
$ msoutlook mailbox get --json
msoutlook mailbox-settings Inspect Outlook mailbox settings
#cmd-msoutlook-mailbox-settings discovery safe
msoutlook mailbox-settings get Get selected mailbox settings
#cmd-msoutlook-mailbox-settings-get discovery safe
$ msoutlook mailbox-settings get
$ msoutlook mailbox-settings get --view full
msoutlook message Work with Outlook messages
#cmd-msoutlook-message discovery safe
$ msoutlook message list --folder inbox --limit 10
$ msoutlook message get m1 --view full
$ msoutlook message reply m1 --draft --body "Received."
msoutlook message archive Move a message to archive
#cmd-msoutlook-message-archive mutates state
--all bool Confirm batch message mutation
$ msoutlook message archive --all m1 m2
$ msoutlook message archive --help
$ msoutlook message archive m1
$ msoutlook message list --folder inbox --jsonl | msoutlook message archive --all
msoutlook message categorize Add a category to a message
#cmd-msoutlook-message-categorize discovery safe
--category string Category ref, name, or ID
$ msoutlook message categorize --help
$ msoutlook message categorize m1 --category cat1
msoutlook message copy Copy a message to another folder
#cmd-msoutlook-message-copy discovery safe
--folder string Destination folder ref, ID, or well-known name
$ msoutlook message copy --help
$ msoutlook message copy m1 --folder f2
msoutlook message create Create or send a message
#cmd-msoutlook-message-create mutates state
--attach stringSlice = [] File path(s) to attach
--bcc stringSlice = [] Bcc recipient; repeat or comma-separate
--body string Message body
--cc stringSlice = [] Cc recipient; repeat or comma-separate
--draft bool Save as draft instead of sending
--importance string Importance: low, normal, or high
--subject string Message subject
--to stringSlice = [] Recipient; repeat or comma-separate
$ msoutlook message create --help
$ msoutlook message create --to alice@example.com --subject "Review" --body "Save first" --draft
$ msoutlook message create --to alice@example.com --subject "Status" --body "Sent now"
$ msoutlook message create --to alice@example.com --subject "With file" --body "Attached" --attach ./report.txt --draft
msoutlook message delete Delete a message
#cmd-msoutlook-message-delete mutates state
--all bool Confirm batch message delete
--yes bool Confirm destructive batch message delete
$ msoutlook message delete --all --yes m1 m2
$ msoutlook message delete --help
$ msoutlook message delete m1
$ msoutlook message list --folder inbox --jsonl | msoutlook message delete --all --yes
msoutlook message forward Forward a message
#cmd-msoutlook-message-forward mutates state
--body string Forward comment
--draft bool Create a forward draft instead of sending
--to stringSlice = [] Forward recipient; repeat or comma-separate
$ msoutlook message forward --help
$ msoutlook message forward m1 --to alice@example.com --body "FYI"
$ msoutlook message forward m1 --to alice@example.com --draft --body "FYI"
msoutlook message get Get a message
#cmd-msoutlook-message-get discovery safe
$ msoutlook message get
$ msoutlook message get m1
$ msoutlook message get m1 --view full
$ msoutlook message get m1 m2
$ msoutlook message list --folder inbox --limit 2 --jsonl | msoutlook message get
msoutlook message list List messages
#cmd-msoutlook-message-list discovery safe
--folder string Folder ref, ID, or well-known name such as inbox
--query string Filter messages locally by subject, sender, recipient, or preview
--unread bool Only show unread messages
$ msoutlook folder list --query sent --limit 1 --jsonl | msoutlook message list --limit 5
$ msoutlook message list
$ msoutlook message list --folder inbox --limit 10
$ msoutlook message list inbox --query invoice --unread
msoutlook message move Move a message to another folder
#cmd-msoutlook-message-move discovery safe
--folder string Destination folder ref, ID, or well-known name
$ msoutlook message move --help
$ msoutlook message move m1 --folder archive
$ msoutlook message move m1 --folder f2
msoutlook message read Mark a message read
#cmd-msoutlook-message-read mutates state
--all bool Confirm batch message mutation
$ msoutlook message list --folder inbox --jsonl | msoutlook message read --all
$ msoutlook message read --all m1 m2
$ msoutlook message read --help
$ msoutlook message read m1
msoutlook message reply Reply to a message
#cmd-msoutlook-message-reply mutates state
--body string Reply body
--draft bool Create a reply draft instead of sending
$ msoutlook message reply --help
$ msoutlook message reply m1 --body "Sent now"
$ msoutlook message reply m1 --draft --body "Received."
msoutlook message reply-all Reply all to a message
#cmd-msoutlook-message-reply-all discovery safe
--body string Reply-all body
--draft bool Create a reply-all draft instead of sending
$ msoutlook message reply-all --help
$ msoutlook message reply-all m1 --body "Sent now"
$ msoutlook message reply-all m1 --draft --body "Thanks all."
msoutlook message restore Restore a deleted message to a folder
#cmd-msoutlook-message-restore discovery safe
--folder string Destination restore folder
$ msoutlook message restore --help
$ msoutlook message restore m1 --folder inbox
msoutlook message send Send a draft or one explicit message
#cmd-msoutlook-message-send mutates state
--attach stringSlice = [] File path(s) to attach
--bcc stringSlice = [] Bcc recipient; repeat or comma-separate
--body string Message body
--cc stringSlice = [] Cc recipient; repeat or comma-separate
--importance string Importance: low, normal, or high
--subject string Message subject
--to stringSlice = [] Recipient; repeat or comma-separate
$ msoutlook message send --help
$ msoutlook message send --to alice@example.com --subject "Status" --body "Sent now"
$ msoutlook message send d1
msoutlook message uncategorize Remove a category from a message
#cmd-msoutlook-message-uncategorize discovery safe
--category string Category ref, name, or ID
$ msoutlook message uncategorize --help
$ msoutlook message uncategorize m1 --category cat1
msoutlook message unread Mark a message unread
#cmd-msoutlook-message-unread mutates state
--all bool Confirm batch message mutation
$ msoutlook message list --folder inbox --jsonl | msoutlook message unread --all
$ msoutlook message unread --all m1 m2
$ msoutlook message unread --help
$ msoutlook message unread m1
msoutlook message update Update a message or draft
#cmd-msoutlook-message-update mutates state
--attach stringSlice = [] File path(s) to add as attachments
--bcc stringSlice = [] Bcc recipient; repeat or comma-separate
--body string New body
--cc stringSlice = [] Cc recipient; repeat or comma-separate
--importance string Importance: low, normal, or high
--subject string New subject
--to stringSlice = [] Recipient; repeat or comma-separate
$ msoutlook message update --help
$ msoutlook message update d1 --attach ./report.txt
$ msoutlook message update d1 --body "Revised body" --importance high
$ msoutlook message update d1 --subject "Updated subject"
msoutlook profile Manage provider profiles
#cmd-msoutlook-profile discovery safe
msoutlook profile create Create an unauthenticated provider profile
#cmd-msoutlook-profile-create mutates state
$ msoutlook profile create --help
msoutlook profile delete Delete a local provider profile
#cmd-msoutlook-profile-delete mutates state
$ msoutlook profile delete --help
msoutlook profile list List provider profiles
#cmd-msoutlook-profile-list discovery safe
$ msoutlook profile list --help
msoutlook profile rename Rename a local provider profile
#cmd-msoutlook-profile-rename discovery safe
$ msoutlook profile rename --help
msoutlook profile use Set the default provider profile
#cmd-msoutlook-profile-use mutates state
$ msoutlook profile use --help
msoutlook resolve Resolve a local msoutlook reference
#cmd-msoutlook-resolve discovery safe
$ msoutlook resolve --help
$ msoutlook resolve d1 --view full
$ msoutlook resolve m1
$ msoutlook resolve u1
msoutlook rule Manage bounded Outlook Inbox rules
#cmd-msoutlook-rule discovery safe
msoutlook rule create Create a bounded Inbox rule
#cmd-msoutlook-rule-create mutates state
--assign-category stringSlice = [] Assign category name; repeat or comma-separate
--body-contains stringSlice = [] Body token condition; repeat or comma-separate
--disabled bool Create the rule disabled
--from stringSlice = [] Sender token or address condition; repeat or comma-separate
--has-attachments bool Match messages with attachments
--importance string Importance condition: low, normal, or high
--mark-read bool Mark matching messages as read
--move-folder string Move matching messages to this folder ref, ID, or well-known name
--name string Rule name
--stop-processing bool Stop processing later Inbox rules
--subject-contains stringSlice = [] Subject token condition; repeat or comma-separate
--yes bool Confirm rule creation
$ msoutlook rule create --help
$ msoutlook rule create --name "cmdhub invoices" --subject-contains invoice --assign-category "Finance" --yes
$ msoutlook rule create --name "cmdhub receipts" --from receipts@example.com --move-folder f1 --yes
msoutlook rule delete Delete an Inbox rule
#cmd-msoutlook-rule-delete mutates state
--yes bool Confirm rule deletion
$ msoutlook rule delete --help
$ msoutlook rule delete r1 --yes
msoutlook rule disable disable an Inbox rule
#cmd-msoutlook-rule-disable discovery safe
--yes bool Confirm rule state change
$ msoutlook rule disable --help
$ msoutlook rule disable r1 --yes
msoutlook rule enable enable an Inbox rule
#cmd-msoutlook-rule-enable discovery safe
--yes bool Confirm rule state change
$ msoutlook rule enable --help
$ msoutlook rule enable r1 --yes
msoutlook rule get Get an Inbox rule
#cmd-msoutlook-rule-get discovery safe
$ msoutlook rule get
$ msoutlook rule get r1 --view full
msoutlook rule list List Inbox rules
#cmd-msoutlook-rule-list discovery safe
$ msoutlook rule list
$ msoutlook rule list --jsonl
$ msoutlook rule list --limit 20
msoutlook rule update Update a bounded Inbox rule
#cmd-msoutlook-rule-update mutates state
--assign-category stringSlice = [] Assign category name; repeat or comma-separate
--body-contains stringSlice = [] Body token condition; repeat or comma-separate
--enabled bool = true Set whether the rule is enabled
--from stringSlice = [] Sender token or address condition; repeat or comma-separate
--has-attachments bool Match messages with attachments
--importance string Importance condition: low, normal, or high
--mark-read bool Mark matching messages as read
--move-folder string Move matching messages to this folder ref, ID, or well-known name
--name string Rule name
--stop-processing bool Stop processing later Inbox rules
--subject-contains stringSlice = [] Subject token condition; repeat or comma-separate
--yes bool Confirm rule update
$ msoutlook rule update --help
$ msoutlook rule update r1 --move-folder f2 --yes
$ msoutlook rule update r1 --name "cmdhub receipts v2" --yes
msoutlook schema Emit msoutlook schema hints
#cmd-msoutlook-schema discovery safe

Show schema hints for Outlook resource payloads emitted or accepted by this CLI.

Use this when you need to understand structured output fields for automation or downstream parsing.

--in bool Show input schema
--input bool Show input schema
--out bool Show output schema
--schema-output bool Show output schema
$ msoutlook schema
$ msoutlook schema --help
$ msoutlook schema draft.update --in --json
$ msoutlook schema message.create --in
$ msoutlook schema message.get --out
msoutlook version Print version information
#cmd-msoutlook-version discovery safe
$ msoutlook version
$ msoutlook version --help
$ msoutlook version --json
$ msoutlook version --view full

play_circle Live Examples

Output captured from a real workspace. Regenerate with scripts/gen-docs.sh --update.

auth

Check Microsoft auth status
$ msoutlook auth status
Not logged in.

Next steps:
- Login: msoutlook auth login
Run diagnostics
$ msoutlook doctor
msoutlook doctor: FAIL
Checks: credential_backend ok, credential_security warn, profiles warn, microsoft_oauth ok, token fail
CHECK                STATUS  DETAIL
credential_backend   OK      using file
credential_security  WARN    credential backend stores local plaintext secrets
profiles             WARN    no provider profiles configured
microsoft_oauth      OK      built-in Microsoft provider client is configured
token                FAIL    no stored Microsoft token

Next steps:
- Status:       msoutlook auth login
- Capabilities: msoutlook capabilities

schemas

Inspect message schema
$ msoutlook schema message.create --in
Schema: msoutlook.message.create.input.v1 (msoutlook message create input)
Required: to, subject
Optional: cc, bcc, body, importance, attach, draft

overview

Show capabilities
$ msoutlook capabilities
msoutlook capabilities
Resources: attachment, auth, automatic-reply, capabilities, category, config, conversation, doctor, draft, folder, mailbox, mailbox-settings, message, profile, resolve, rule, schema, version
Machine output: --json, --jsonl
Required scopes: Mail.ReadWrite, Mail.Send, User.Read, offline_access

Next steps:
- Scopes:   msoutlook capabilities --section scopes
- Schema:   msoutlook schema
- Contract: msoutlook capabilities --json
- Help:     msoutlook --help

alt_route Composition Patterns

Bridge your ecosystem with zero middleware.

msoutlook auth login

# Read Outlook mail
msoutlook folder list
msoutlook message list --folder inbox --limit 10
msoutlook message get m1
msoutlook resolve u1

# Create and send mail
msoutlook message create --to alice@example.com --subject "Status" --body "Sent now"
msoutlook message create --to alice@example.com --subject "Status" --body "Attached" --attach ./status.txt
msoutlook message create --to alice@example.com --subject "Status" --body "Save first" --draft
msoutlook draft update d1 --attach ./status.txt
msoutlook draft send d1
msoutlook attachment list m1
msoutlook attachment get a1 --emit-content --json

# Pipe one listed message into a follow-up command
msoutlook message list --folder inbox --limit 1 --jsonl | msoutlook message get --json