{
  "schema_version": "cmdhub.website.command_catalog.v1",
  "tool": "msoutlook",
  "title": "Microsoft Outlook CLI",
  "description": "Outlook mail folders, messages, drafts, and attachments through Microsoft Graph.",
  "auth_mode": "OAuth2",
  "auth_scopes": {
    "label": "Microsoft OAuth",
    "scopes": [
      "offline_access",
      "User.Read",
      "Mail.ReadWrite",
      "Mail.Send"
    ],
    "note": "Used for Outlook messages, drafts, attachments, and mail sending."
  },
  "markdown_url": "/cli/msoutlook/index.md",
  "commands": [
    {
      "id": "cmd-msoutlook-attachment",
      "path": "msoutlook attachment",
      "name": "attachment",
      "short": "Work with Outlook message attachments",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook attachment list m1\n  msoutlook attachment get a1 --output-file ./file.txt\n  msoutlook attachment create d1 --file ./report.txt",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-attachment-create",
      "path": "msoutlook attachment create",
      "name": "create",
      "short": "Add a file attachment to a draft message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook attachment create --help\nmsoutlook attachment create --message d1 --file ./report.txt\nmsoutlook attachment create d1 --file ./report.txt",
      "flags": [
        {
          "name": "file",
          "type": "string",
          "usage": "File path to attach"
        },
        {
          "name": "message",
          "type": "string",
          "usage": "Message or draft ref/ID"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-attachment-delete",
      "path": "msoutlook attachment delete",
      "name": "delete",
      "short": "Delete an attachment from a draft or message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook attachment delete --help\nmsoutlook attachment delete AAMk... --message d1 --yes\nmsoutlook attachment delete a1 --yes",
      "flags": [
        {
          "name": "message",
          "type": "string",
          "usage": "Message ref or ID when attachment is not a local ref"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm attachment deletion"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-attachment-download",
      "path": "msoutlook attachment download",
      "name": "download",
      "short": "Download an attachment to a file",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook attachment download\nmsoutlook attachment download AAMk... --message m1 --output-file ./attachment.bin\nmsoutlook attachment download a1 --output-file ./attachment.bin",
      "flags": [
        {
          "name": "message",
          "type": "string",
          "usage": "Message ref or ID when attachment is not a local ref"
        },
        {
          "name": "output-file",
          "type": "string",
          "usage": "Write decoded attachment bytes to this path"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-attachment-get",
      "path": "msoutlook attachment get",
      "name": "get",
      "short": "Get an attachment",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook attachment get\nmsoutlook attachment get AAMk... --message m1 --json\nmsoutlook attachment get a1\nmsoutlook attachment get a1 --output-file ./attachment.bin",
      "flags": [
        {
          "name": "emit-content",
          "type": "bool",
          "usage": "Include base64 content in JSON output"
        },
        {
          "name": "message",
          "type": "string",
          "usage": "Message ref or ID when attachment is not a local ref"
        },
        {
          "name": "output-file",
          "type": "string",
          "usage": "Write decoded attachment bytes to this path"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-attachment-list",
      "path": "msoutlook attachment list",
      "name": "list",
      "short": "List message attachments",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook attachment list\nmsoutlook attachment list --message d1\nmsoutlook attachment list m1\nmsoutlook message get m1 --jsonl | msoutlook attachment list",
      "flags": [
        {
          "name": "message",
          "type": "string",
          "usage": "Message ref or ID"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-auth",
      "path": "msoutlook auth",
      "name": "auth",
      "short": "Manage Microsoft authentication",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-auth-login",
      "path": "msoutlook auth login",
      "name": "login",
      "short": "Authenticate with Microsoft Outlook",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook auth login\nmsoutlook auth login --help\nmsoutlook auth status",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-auth-logout",
      "path": "msoutlook auth logout",
      "name": "logout",
      "short": "Remove stored Microsoft credentials",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook auth logout\nmsoutlook auth logout --help\nmsoutlook auth status",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-auth-refresh",
      "path": "msoutlook auth refresh",
      "name": "refresh",
      "short": "Refresh stored token",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook auth refresh\nmsoutlook auth refresh --help\nmsoutlook auth status",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-auth-status",
      "path": "msoutlook auth status",
      "name": "status",
      "short": "Show auth status",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook auth status\nmsoutlook auth status --help\nmsoutlook auth status --json\nmsoutlook auth status --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-auth-whoami",
      "path": "msoutlook auth whoami",
      "name": "whoami",
      "short": "Show current Microsoft identity",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook auth whoami\nmsoutlook auth whoami --help\nmsoutlook auth whoami --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-automatic-reply",
      "path": "msoutlook automatic-reply",
      "name": "automatic-reply",
      "short": "Manage bounded Outlook automatic replies",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-automatic-reply-disable",
      "path": "msoutlook automatic-reply disable",
      "name": "disable",
      "short": "Disable automatic replies",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook automatic-reply disable --help\nmsoutlook automatic-reply disable --yes",
      "flags": [
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm automatic reply disable"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-automatic-reply-get",
      "path": "msoutlook automatic-reply get",
      "name": "get",
      "short": "Get automatic reply settings",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook automatic-reply get\nmsoutlook automatic-reply get --json\nmsoutlook automatic-reply get --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-automatic-reply-set",
      "path": "msoutlook automatic-reply set",
      "name": "set",
      "short": "Set a bounded automatic reply",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "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\nmsoutlook automatic-reply set --help",
      "flags": [
        {
          "name": "external-audience",
          "type": "string",
          "usage": "External audience: none, contacts, or all"
        },
        {
          "name": "external-message",
          "type": "string",
          "usage": "External automatic reply message"
        },
        {
          "name": "from",
          "type": "string",
          "usage": "Automatic reply start time"
        },
        {
          "name": "internal-message",
          "type": "string",
          "usage": "Internal automatic reply message"
        },
        {
          "name": "to",
          "type": "string",
          "usage": "Automatic reply end time"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm automatic reply external effect"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-capabilities",
      "path": "msoutlook capabilities",
      "name": "capabilities",
      "short": "Describe capabilities",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook capabilities --help",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-category",
      "path": "msoutlook category",
      "name": "category",
      "short": "Manage Outlook master categories",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-category-create",
      "path": "msoutlook category create",
      "name": "create",
      "short": "Create an Outlook category",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook category create --help\nmsoutlook category create --name \"cmdhub eval\" --color preset7",
      "flags": [
        {
          "name": "color",
          "type": "string",
          "usage": "Outlook preset color"
        },
        {
          "name": "name",
          "type": "string",
          "usage": "Category display name"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-category-delete",
      "path": "msoutlook category delete",
      "name": "delete",
      "short": "Delete an Outlook category",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook category delete --help\nmsoutlook category delete cat1 --yes",
      "flags": [
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm category deletion"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-category-get",
      "path": "msoutlook category get",
      "name": "get",
      "short": "Get an Outlook category",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook category get\nmsoutlook category get cat1 --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-category-list",
      "path": "msoutlook category list",
      "name": "list",
      "short": "List Outlook categories",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook category list\nmsoutlook category list --jsonl\nmsoutlook category list --limit 20",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-category-update",
      "path": "msoutlook category update",
      "name": "update",
      "short": "Update an Outlook category",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook category update --help\nmsoutlook category update cat1 --name \"cmdhub eval done\" --color preset6",
      "flags": [
        {
          "name": "color",
          "type": "string",
          "usage": "New Outlook preset color"
        },
        {
          "name": "name",
          "type": "string",
          "usage": "New category display name"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-config",
      "path": "msoutlook config",
      "name": "config",
      "short": "Inspect local configuration",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-config-explain",
      "path": "msoutlook config explain",
      "name": "explain",
      "short": "Explain resolved configuration",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook config explain --help",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-conversation",
      "path": "msoutlook conversation",
      "name": "conversation",
      "short": "Work with Outlook message conversations",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook conversation list --folder inbox --limit 10\n  msoutlook conversation search --query \"quarterly packet\"\n  msoutlook conversation get c1 --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-conversation-archive",
      "path": "msoutlook conversation archive",
      "name": "archive",
      "short": "Archive every message in a conversation",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook conversation archive --help\nmsoutlook conversation archive c1 --all --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Apply the action to every message in the conversation"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm the conversation mutation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-conversation-delete",
      "path": "msoutlook conversation delete",
      "name": "delete",
      "short": "Delete every message in a conversation",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook conversation delete --help\nmsoutlook conversation delete c1 --all --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Apply the action to every message in the conversation"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm the conversation mutation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-conversation-get",
      "path": "msoutlook conversation get",
      "name": "get",
      "short": "Get a conversation",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook conversation get\nmsoutlook conversation get c1 --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-conversation-list",
      "path": "msoutlook conversation list",
      "name": "list",
      "short": "List conversations",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook conversation list\nmsoutlook conversation list --query invoice --folder inbox",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Folder ref, ID, or well-known name such as inbox"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Search text or Graph-style fielded terms"
        },
        {
          "name": "unread",
          "type": "bool",
          "usage": "Only show conversations with unread messages"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-conversation-move",
      "path": "msoutlook conversation move",
      "name": "move",
      "short": "Move every message in a conversation",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook conversation move --help\nmsoutlook conversation move c1 --all --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Apply the action to every message in the conversation"
        },
        {
          "name": "folder",
          "type": "string",
          "usage": "Destination folder ref, ID, or well-known name"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm the conversation mutation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-conversation-read",
      "path": "msoutlook conversation read",
      "name": "read",
      "short": "Mark every message in a conversation read",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook conversation read --help\nmsoutlook conversation read c1 --all --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Apply the action to every message in the conversation"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm the conversation mutation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-conversation-search",
      "path": "msoutlook conversation search",
      "name": "search",
      "short": "Search conversations",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook conversation search\nmsoutlook conversation search --query invoice --folder inbox",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Folder ref, ID, or well-known name such as inbox"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Search text or Graph-style fielded terms"
        },
        {
          "name": "unread",
          "type": "bool",
          "usage": "Only show conversations with unread messages"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-conversation-unread",
      "path": "msoutlook conversation unread",
      "name": "unread",
      "short": "Mark every message in a conversation unread",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook conversation unread --help\nmsoutlook conversation unread c1 --all --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Apply the action to every message in the conversation"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm the conversation mutation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-doctor",
      "path": "msoutlook doctor",
      "name": "doctor",
      "short": "Run msoutlook diagnostics",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook doctor\nmsoutlook doctor --help\nmsoutlook doctor --json\nmsoutlook doctor --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-draft",
      "path": "msoutlook draft",
      "name": "draft",
      "short": "Work with Outlook drafts",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook draft list\n  msoutlook draft get d1 --view full\n  msoutlook draft update d1 --body \"Revised body\"",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-draft-create",
      "path": "msoutlook draft create",
      "name": "create",
      "short": "Create a draft",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook draft create --help\nmsoutlook draft create --to alice@example.com --subject \"Review\" --body \"Draft body\"\nmsoutlook draft create --to alice@example.com --subject \"With file\" --body \"Attached\" --attach ./report.txt",
      "flags": [
        {
          "name": "attach",
          "type": "stringSlice",
          "default": "[]",
          "usage": "File path(s) to attach"
        },
        {
          "name": "bcc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Bcc recipient; repeat or comma-separate"
        },
        {
          "name": "body",
          "type": "string",
          "usage": "Message body"
        },
        {
          "name": "cc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Cc recipient; repeat or comma-separate"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance: low, normal, or high"
        },
        {
          "name": "subject",
          "type": "string",
          "usage": "Message subject"
        },
        {
          "name": "to",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Recipient; repeat or comma-separate"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-draft-delete",
      "path": "msoutlook draft delete",
      "name": "delete",
      "short": "Delete a draft",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook draft delete --all --yes d1 d2\nmsoutlook draft delete --help\nmsoutlook draft delete d1\nmsoutlook draft list --jsonl | msoutlook draft delete --all --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch draft delete"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive batch draft delete"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-draft-get",
      "path": "msoutlook draft get",
      "name": "get",
      "short": "Get a draft",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook draft get\nmsoutlook draft get d1\nmsoutlook draft get d1 --view full\nmsoutlook draft get d1 d2\nmsoutlook draft list --limit 2 --jsonl | msoutlook draft get",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-draft-list",
      "path": "msoutlook draft list",
      "name": "list",
      "short": "List draft messages",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook draft list\nmsoutlook draft list --jsonl | msoutlook draft get\nmsoutlook draft list --query review --limit 10",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Filter drafts locally"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-draft-send",
      "path": "msoutlook draft send",
      "name": "send",
      "short": "Send a draft",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook draft list --limit 1 --jsonl | msoutlook draft send\nmsoutlook draft send --help\nmsoutlook draft send d1",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-draft-update",
      "path": "msoutlook draft update",
      "name": "update",
      "short": "Update a draft",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook draft update --help\nmsoutlook draft update d1 --attach ./report.txt\nmsoutlook draft update d1 --body \"Revised body\" --importance high\nmsoutlook draft update d1 --subject \"Updated subject\"",
      "flags": [
        {
          "name": "attach",
          "type": "stringSlice",
          "default": "[]",
          "usage": "File path(s) to add as attachments"
        },
        {
          "name": "bcc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Bcc recipient; repeat or comma-separate"
        },
        {
          "name": "body",
          "type": "string",
          "usage": "New body"
        },
        {
          "name": "cc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Cc recipient; repeat or comma-separate"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance: low, normal, or high"
        },
        {
          "name": "subject",
          "type": "string",
          "usage": "New subject"
        },
        {
          "name": "to",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Recipient; repeat or comma-separate"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-folder",
      "path": "msoutlook folder",
      "name": "folder",
      "short": "Work with Outlook mail folders",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook folder list\n  msoutlook folder list --query sent\n  msoutlook folder get f1 --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-folder-create",
      "path": "msoutlook folder create",
      "name": "create",
      "short": "Create a mail folder",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook folder create --help\nmsoutlook folder create --name \"cmdhub child\" --parent f1\nmsoutlook folder create --name \"cmdhub triage\"",
      "flags": [
        {
          "name": "name",
          "type": "string",
          "usage": "Folder display name"
        },
        {
          "name": "parent",
          "type": "string",
          "usage": "Parent folder ref, ID, or well-known name"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-folder-delete",
      "path": "msoutlook folder delete",
      "name": "delete",
      "short": "Delete an ordinary mail folder",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook folder delete --help\nmsoutlook folder delete f1 --yes",
      "flags": [
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm folder deletion"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-folder-get",
      "path": "msoutlook folder get",
      "name": "get",
      "short": "Get a mail folder",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook folder get\nmsoutlook folder get f1\nmsoutlook folder get f1 f2\nmsoutlook folder get inbox --view full\nmsoutlook folder list --query sent --limit 2 --jsonl | msoutlook folder get",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-folder-list",
      "path": "msoutlook folder list",
      "name": "list",
      "short": "List mail folders",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook folder list\nmsoutlook folder list --jsonl | msoutlook message list --limit 10\nmsoutlook folder list --query archive --limit 5",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Filter folder names locally"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-folder-move",
      "path": "msoutlook folder move",
      "name": "move",
      "short": "Move a mail folder under another folder",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook folder move --help\nmsoutlook folder move f1 --parent archive",
      "flags": [
        {
          "name": "parent",
          "type": "string",
          "usage": "Destination parent folder ref, ID, or well-known name"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-folder-update",
      "path": "msoutlook folder update",
      "name": "update",
      "short": "Rename a mail folder",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook folder update --help\nmsoutlook folder update f1 --name \"cmdhub triage done\"",
      "flags": [
        {
          "name": "name",
          "type": "string",
          "usage": "New folder display name"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-mailbox",
      "path": "msoutlook mailbox",
      "name": "mailbox",
      "short": "Inspect the selected Outlook mailbox",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-mailbox-get",
      "path": "msoutlook mailbox get",
      "name": "get",
      "short": "Get selected mailbox metadata",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook mailbox get\nmsoutlook mailbox get --json",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-mailbox-settings",
      "path": "msoutlook mailbox-settings",
      "name": "mailbox-settings",
      "short": "Inspect Outlook mailbox settings",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-mailbox-settings-get",
      "path": "msoutlook mailbox-settings get",
      "name": "get",
      "short": "Get selected mailbox settings",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook mailbox-settings get\nmsoutlook mailbox-settings get --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-message",
      "path": "msoutlook message",
      "name": "message",
      "short": "Work with Outlook messages",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message list --folder inbox --limit 10\n  msoutlook message get m1 --view full\n  msoutlook message reply m1 --draft --body \"Received.\"",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-message-archive",
      "path": "msoutlook message archive",
      "name": "archive",
      "short": "Move a message to archive",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message archive --all m1 m2\nmsoutlook message archive --help\nmsoutlook message archive m1\nmsoutlook message list --folder inbox --jsonl | msoutlook message archive --all",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch message mutation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-categorize",
      "path": "msoutlook message categorize",
      "name": "categorize",
      "short": "Add a category to a message",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message categorize --help\nmsoutlook message categorize m1 --category cat1",
      "flags": [
        {
          "name": "category",
          "type": "string",
          "usage": "Category ref, name, or ID"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-copy",
      "path": "msoutlook message copy",
      "name": "copy",
      "short": "Copy a message to another folder",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message copy --help\nmsoutlook message copy m1 --folder f2",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Destination folder ref, ID, or well-known name"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-create",
      "path": "msoutlook message create",
      "name": "create",
      "short": "Create or send a message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message create --help\nmsoutlook message create --to alice@example.com --subject \"Review\" --body \"Save first\" --draft\nmsoutlook message create --to alice@example.com --subject \"Status\" --body \"Sent now\"\nmsoutlook message create --to alice@example.com --subject \"With file\" --body \"Attached\" --attach ./report.txt --draft",
      "flags": [
        {
          "name": "attach",
          "type": "stringSlice",
          "default": "[]",
          "usage": "File path(s) to attach"
        },
        {
          "name": "bcc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Bcc recipient; repeat or comma-separate"
        },
        {
          "name": "body",
          "type": "string",
          "usage": "Message body"
        },
        {
          "name": "cc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Cc recipient; repeat or comma-separate"
        },
        {
          "name": "draft",
          "type": "bool",
          "usage": "Save as draft instead of sending"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance: low, normal, or high"
        },
        {
          "name": "subject",
          "type": "string",
          "usage": "Message subject"
        },
        {
          "name": "to",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Recipient; repeat or comma-separate"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-delete",
      "path": "msoutlook message delete",
      "name": "delete",
      "short": "Delete a message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message delete --all --yes m1 m2\nmsoutlook message delete --help\nmsoutlook message delete m1\nmsoutlook message list --folder inbox --jsonl | msoutlook message delete --all --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch message delete"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive batch message delete"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-forward",
      "path": "msoutlook message forward",
      "name": "forward",
      "short": "Forward a message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message forward --help\nmsoutlook message forward m1 --to alice@example.com --body \"FYI\"\nmsoutlook message forward m1 --to alice@example.com --draft --body \"FYI\"",
      "flags": [
        {
          "name": "body",
          "type": "string",
          "usage": "Forward comment"
        },
        {
          "name": "draft",
          "type": "bool",
          "usage": "Create a forward draft instead of sending"
        },
        {
          "name": "to",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Forward recipient; repeat or comma-separate"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-get",
      "path": "msoutlook message get",
      "name": "get",
      "short": "Get a message",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook message get\nmsoutlook message get m1\nmsoutlook message get m1 --view full\nmsoutlook message get m1 m2\nmsoutlook message list --folder inbox --limit 2 --jsonl | msoutlook message get",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-message-list",
      "path": "msoutlook message list",
      "name": "list",
      "short": "List messages",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook folder list --query sent --limit 1 --jsonl | msoutlook message list --limit 5\nmsoutlook message list\nmsoutlook message list --folder inbox --limit 10\nmsoutlook message list inbox --query invoice --unread",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Folder ref, ID, or well-known name such as inbox"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Filter messages locally by subject, sender, recipient, or preview"
        },
        {
          "name": "unread",
          "type": "bool",
          "usage": "Only show unread messages"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-move",
      "path": "msoutlook message move",
      "name": "move",
      "short": "Move a message to another folder",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message move --help\nmsoutlook message move m1 --folder archive\nmsoutlook message move m1 --folder f2",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Destination folder ref, ID, or well-known name"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-read",
      "path": "msoutlook message read",
      "name": "read",
      "short": "Mark a message read",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message list --folder inbox --jsonl | msoutlook message read --all\nmsoutlook message read --all m1 m2\nmsoutlook message read --help\nmsoutlook message read m1",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch message mutation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-reply",
      "path": "msoutlook message reply",
      "name": "reply",
      "short": "Reply to a message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message reply --help\nmsoutlook message reply m1 --body \"Sent now\"\nmsoutlook message reply m1 --draft --body \"Received.\"",
      "flags": [
        {
          "name": "body",
          "type": "string",
          "usage": "Reply body"
        },
        {
          "name": "draft",
          "type": "bool",
          "usage": "Create a reply draft instead of sending"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-reply-all",
      "path": "msoutlook message reply-all",
      "name": "reply-all",
      "short": "Reply all to a message",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message reply-all --help\nmsoutlook message reply-all m1 --body \"Sent now\"\nmsoutlook message reply-all m1 --draft --body \"Thanks all.\"",
      "flags": [
        {
          "name": "body",
          "type": "string",
          "usage": "Reply-all body"
        },
        {
          "name": "draft",
          "type": "bool",
          "usage": "Create a reply-all draft instead of sending"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-restore",
      "path": "msoutlook message restore",
      "name": "restore",
      "short": "Restore a deleted message to a folder",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message restore --help\nmsoutlook message restore m1 --folder inbox",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Destination restore folder"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-search",
      "path": "msoutlook message search",
      "name": "search",
      "short": "Search messages",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook message search\nmsoutlook message search --query 'from:alex subject:packet' --unread --limit 10\nmsoutlook message search --query invoice --folder inbox",
      "flags": [
        {
          "name": "folder",
          "type": "string",
          "usage": "Folder ref, ID, or well-known name such as inbox"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Search text or Graph-style fielded terms"
        },
        {
          "name": "unread",
          "type": "bool",
          "usage": "Only show unread messages"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-send",
      "path": "msoutlook message send",
      "name": "send",
      "short": "Send a draft or one explicit message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message send --help\nmsoutlook message send --to alice@example.com --subject \"Status\" --body \"Sent now\"\nmsoutlook message send d1",
      "flags": [
        {
          "name": "attach",
          "type": "stringSlice",
          "default": "[]",
          "usage": "File path(s) to attach"
        },
        {
          "name": "bcc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Bcc recipient; repeat or comma-separate"
        },
        {
          "name": "body",
          "type": "string",
          "usage": "Message body"
        },
        {
          "name": "cc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Cc recipient; repeat or comma-separate"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance: low, normal, or high"
        },
        {
          "name": "subject",
          "type": "string",
          "usage": "Message subject"
        },
        {
          "name": "to",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Recipient; repeat or comma-separate"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-uncategorize",
      "path": "msoutlook message uncategorize",
      "name": "uncategorize",
      "short": "Remove a category from a message",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message uncategorize --help\nmsoutlook message uncategorize m1 --category cat1",
      "flags": [
        {
          "name": "category",
          "type": "string",
          "usage": "Category ref, name, or ID"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-unread",
      "path": "msoutlook message unread",
      "name": "unread",
      "short": "Mark a message unread",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message list --folder inbox --jsonl | msoutlook message unread --all\nmsoutlook message unread --all m1 m2\nmsoutlook message unread --help\nmsoutlook message unread m1",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch message mutation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-message-update",
      "path": "msoutlook message update",
      "name": "update",
      "short": "Update a message or draft",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook message update --help\nmsoutlook message update d1 --attach ./report.txt\nmsoutlook message update d1 --body \"Revised body\" --importance high\nmsoutlook message update d1 --subject \"Updated subject\"",
      "flags": [
        {
          "name": "attach",
          "type": "stringSlice",
          "default": "[]",
          "usage": "File path(s) to add as attachments"
        },
        {
          "name": "bcc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Bcc recipient; repeat or comma-separate"
        },
        {
          "name": "body",
          "type": "string",
          "usage": "New body"
        },
        {
          "name": "cc",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Cc recipient; repeat or comma-separate"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance: low, normal, or high"
        },
        {
          "name": "subject",
          "type": "string",
          "usage": "New subject"
        },
        {
          "name": "to",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Recipient; repeat or comma-separate"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-profile",
      "path": "msoutlook profile",
      "name": "profile",
      "short": "Manage provider profiles",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-profile-create",
      "path": "msoutlook profile create",
      "name": "create",
      "short": "Create an unauthenticated provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook profile create --help",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-profile-delete",
      "path": "msoutlook profile delete",
      "name": "delete",
      "short": "Delete a local provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook profile delete --help",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-profile-list",
      "path": "msoutlook profile list",
      "name": "list",
      "short": "List provider profiles",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook profile list --help",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-profile-rename",
      "path": "msoutlook profile rename",
      "name": "rename",
      "short": "Rename a local provider profile",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook profile rename --help",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-profile-use",
      "path": "msoutlook profile use",
      "name": "use",
      "short": "Set the default provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook profile use --help",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-resolve",
      "path": "msoutlook resolve",
      "name": "resolve",
      "short": "Resolve a local msoutlook reference",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook resolve --help\nmsoutlook resolve d1 --view full\nmsoutlook resolve m1\nmsoutlook resolve u1",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-rule",
      "path": "msoutlook rule",
      "name": "rule",
      "short": "Manage bounded Outlook Inbox rules",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-rule-create",
      "path": "msoutlook rule create",
      "name": "create",
      "short": "Create a bounded Inbox rule",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook rule create --help\nmsoutlook rule create --name \"cmdhub invoices\" --subject-contains invoice --assign-category \"Finance\" --yes\nmsoutlook rule create --name \"cmdhub receipts\" --from receipts@example.com --move-folder f1 --yes",
      "flags": [
        {
          "name": "assign-category",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Assign category name; repeat or comma-separate"
        },
        {
          "name": "body-contains",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Body token condition; repeat or comma-separate"
        },
        {
          "name": "disabled",
          "type": "bool",
          "usage": "Create the rule disabled"
        },
        {
          "name": "from",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Sender token or address condition; repeat or comma-separate"
        },
        {
          "name": "has-attachments",
          "type": "bool",
          "usage": "Match messages with attachments"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance condition: low, normal, or high"
        },
        {
          "name": "mark-read",
          "type": "bool",
          "usage": "Mark matching messages as read"
        },
        {
          "name": "move-folder",
          "type": "string",
          "usage": "Move matching messages to this folder ref, ID, or well-known name"
        },
        {
          "name": "name",
          "type": "string",
          "usage": "Rule name"
        },
        {
          "name": "stop-processing",
          "type": "bool",
          "usage": "Stop processing later Inbox rules"
        },
        {
          "name": "subject-contains",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Subject token condition; repeat or comma-separate"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm rule creation"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-rule-delete",
      "path": "msoutlook rule delete",
      "name": "delete",
      "short": "Delete an Inbox rule",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook rule delete --help\nmsoutlook rule delete r1 --yes",
      "flags": [
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm rule deletion"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-rule-disable",
      "path": "msoutlook rule disable",
      "name": "disable",
      "short": "disable an Inbox rule",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook rule disable --help\nmsoutlook rule disable r1 --yes",
      "flags": [
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm rule state change"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-rule-enable",
      "path": "msoutlook rule enable",
      "name": "enable",
      "short": "enable an Inbox rule",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook rule enable --help\nmsoutlook rule enable r1 --yes",
      "flags": [
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm rule state change"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-rule-get",
      "path": "msoutlook rule get",
      "name": "get",
      "short": "Get an Inbox rule",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook rule get\nmsoutlook rule get r1 --view full",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-rule-list",
      "path": "msoutlook rule list",
      "name": "list",
      "short": "List Inbox rules",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook rule list\nmsoutlook rule list --jsonl\nmsoutlook rule list --limit 20",
      "flags": []
    },
    {
      "id": "cmd-msoutlook-rule-update",
      "path": "msoutlook rule update",
      "name": "update",
      "short": "Update a bounded Inbox rule",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "msoutlook rule update --help\nmsoutlook rule update r1 --move-folder f2 --yes\nmsoutlook rule update r1 --name \"cmdhub receipts v2\" --yes",
      "flags": [
        {
          "name": "assign-category",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Assign category name; repeat or comma-separate"
        },
        {
          "name": "body-contains",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Body token condition; repeat or comma-separate"
        },
        {
          "name": "enabled",
          "type": "bool",
          "default": "true",
          "usage": "Set whether the rule is enabled"
        },
        {
          "name": "from",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Sender token or address condition; repeat or comma-separate"
        },
        {
          "name": "has-attachments",
          "type": "bool",
          "usage": "Match messages with attachments"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance condition: low, normal, or high"
        },
        {
          "name": "mark-read",
          "type": "bool",
          "usage": "Mark matching messages as read"
        },
        {
          "name": "move-folder",
          "type": "string",
          "usage": "Move matching messages to this folder ref, ID, or well-known name"
        },
        {
          "name": "name",
          "type": "string",
          "usage": "Rule name"
        },
        {
          "name": "stop-processing",
          "type": "bool",
          "usage": "Stop processing later Inbox rules"
        },
        {
          "name": "subject-contains",
          "type": "stringSlice",
          "default": "[]",
          "usage": "Subject token condition; repeat or comma-separate"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm rule update"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-schema",
      "path": "msoutlook schema",
      "name": "schema",
      "short": "Emit msoutlook schema hints",
      "long": "Show schema hints for Outlook resource payloads emitted or accepted by this CLI.\n\nUse this when you need to understand structured output fields for automation or downstream parsing.",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook schema\nmsoutlook schema --help\nmsoutlook schema draft.update --in --json\nmsoutlook schema message.create --in\nmsoutlook schema message.get --out",
      "flags": [
        {
          "name": "in",
          "type": "bool",
          "usage": "Show input schema"
        },
        {
          "name": "input",
          "type": "bool",
          "usage": "Show input schema"
        },
        {
          "name": "out",
          "type": "bool",
          "usage": "Show output schema"
        },
        {
          "name": "schema-output",
          "type": "bool",
          "usage": "Show output schema"
        }
      ]
    },
    {
      "id": "cmd-msoutlook-version",
      "path": "msoutlook version",
      "name": "version",
      "short": "Print version information",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "msoutlook version\nmsoutlook version --help\nmsoutlook version --json\nmsoutlook version --view full",
      "flags": []
    }
  ]
}
