{
  "schema_version": "cmdhub.website.command_catalog.v1",
  "tool": "mstodo",
  "title": "Microsoft To Do CLI",
  "description": "Task lists, tasks, due dates, and completion through Microsoft To Do.",
  "auth_mode": "OAuth2",
  "auth_scopes": {
    "label": "Microsoft OAuth",
    "scopes": [
      "offline_access",
      "User.Read",
      "Tasks.ReadWrite"
    ],
    "note": "Used for Microsoft To Do lists and tasks."
  },
  "markdown_url": "/cli/mstodo/index.md",
  "commands": [
    {
      "id": "cmd-mstodo-auth",
      "path": "mstodo auth",
      "name": "auth",
      "short": "Manage Microsoft authentication",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-mstodo-auth-login",
      "path": "mstodo auth login",
      "name": "login",
      "short": "Authenticate with Microsoft To Do",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo auth login\nmstodo auth login --help\nmstodo auth status\nmstodo auth whoami",
      "flags": []
    },
    {
      "id": "cmd-mstodo-auth-logout",
      "path": "mstodo auth logout",
      "name": "logout",
      "short": "Remove stored credentials",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo auth logout\nmstodo auth logout --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-auth-refresh",
      "path": "mstodo auth refresh",
      "name": "refresh",
      "short": "Refresh stored token",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo auth refresh\nmstodo auth refresh --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-auth-status",
      "path": "mstodo auth status",
      "name": "status",
      "short": "Show auth status",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo auth status\nmstodo auth status --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-auth-whoami",
      "path": "mstodo auth whoami",
      "name": "whoami",
      "short": "Show current Microsoft identity",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo auth whoami\nmstodo auth whoami --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-capabilities",
      "path": "mstodo capabilities",
      "name": "capabilities",
      "short": "Describe capabilities",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo capabilities --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-config",
      "path": "mstodo config",
      "name": "config",
      "short": "Inspect local configuration",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-mstodo-config-explain",
      "path": "mstodo config explain",
      "name": "explain",
      "short": "Explain resolved configuration",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo config explain --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-doctor",
      "path": "mstodo doctor",
      "name": "doctor",
      "short": "Run mstodo diagnostics",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo doctor --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-list",
      "path": "mstodo list",
      "name": "list",
      "short": "Work with Microsoft To Do task lists",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo list list\n  mstodo list search --query operations\n  mstodo list get l1 --limit 0",
      "flags": []
    },
    {
      "id": "cmd-mstodo-list-create",
      "path": "mstodo list create",
      "name": "create",
      "short": "Create a task list",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo list create --help\nmstodo list create --name \"Operations\"",
      "flags": [
        {
          "name": "name",
          "type": "string",
          "usage": "List name"
        }
      ]
    },
    {
      "id": "cmd-mstodo-list-delete",
      "path": "mstodo list delete",
      "name": "delete",
      "short": "Delete a task list",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "mstodo list delete l1 --dry-run\nmstodo list delete l1 --yes",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview task list deletion without deleting"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm task list deletion"
        }
      ]
    },
    {
      "id": "cmd-mstodo-list-get",
      "path": "mstodo list get",
      "name": "get",
      "short": "Get a task list",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo list get\nmstodo list get l1\nmstodo list get l1 --limit 0\nmstodo list get l1 --query packet\nmstodo list search --query operations --jsonl | mstodo list get",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Filter tasks in this list by title/body"
        }
      ]
    },
    {
      "id": "cmd-mstodo-list-list",
      "path": "mstodo list list",
      "name": "list",
      "short": "List task lists",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo list list\nmstodo list list --limit 0",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Filter list names locally"
        }
      ]
    },
    {
      "id": "cmd-mstodo-list-search",
      "path": "mstodo list search",
      "name": "search",
      "short": "Search task lists",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo list search\nmstodo list search --query operations\nmstodo list search operations",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Filter list names locally"
        }
      ]
    },
    {
      "id": "cmd-mstodo-list-update",
      "path": "mstodo list update",
      "name": "update",
      "short": "Update a task list",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo list update --help\nmstodo list update l1 --name \"Operations\"",
      "flags": [
        {
          "name": "name",
          "type": "string",
          "usage": "New list name"
        }
      ]
    },
    {
      "id": "cmd-mstodo-login",
      "path": "mstodo login",
      "name": "login",
      "short": "Authenticate with Microsoft To Do",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo auth status\nmstodo auth whoami\nmstodo login",
      "flags": []
    },
    {
      "id": "cmd-mstodo-logout",
      "path": "mstodo logout",
      "name": "logout",
      "short": "Remove stored credentials",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo logout",
      "flags": []
    },
    {
      "id": "cmd-mstodo-profile",
      "path": "mstodo profile",
      "name": "profile",
      "short": "Manage provider profiles",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "",
      "flags": []
    },
    {
      "id": "cmd-mstodo-profile-create",
      "path": "mstodo profile create",
      "name": "create",
      "short": "Create an unauthenticated provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo profile create --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-profile-delete",
      "path": "mstodo profile delete",
      "name": "delete",
      "short": "Delete a local provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo profile delete --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-profile-list",
      "path": "mstodo profile list",
      "name": "list",
      "short": "List provider profiles",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo profile list --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-profile-rename",
      "path": "mstodo profile rename",
      "name": "rename",
      "short": "Rename a local provider profile",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo profile rename --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-profile-use",
      "path": "mstodo profile use",
      "name": "use",
      "short": "Set the default provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo profile use --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-resolve",
      "path": "mstodo resolve",
      "name": "resolve",
      "short": "Resolve a local mstodo reference",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo resolve --help",
      "flags": []
    },
    {
      "id": "cmd-mstodo-schema",
      "path": "mstodo schema",
      "name": "schema",
      "short": "Emit mstodo schema hints",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo schema --help",
      "flags": [
        {
          "name": "in",
          "type": "bool",
          "usage": "Show input schema"
        },
        {
          "name": "out",
          "type": "bool",
          "usage": "Show output schema"
        }
      ]
    },
    {
      "id": "cmd-mstodo-task",
      "path": "mstodo task",
      "name": "task",
      "short": "Work with Microsoft To Do tasks",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo task list --list l1\n  mstodo task search --list l1 --query packet\n  mstodo task create --list l1 --title \"Send packet\"\n  mstodo task get t1\n  mstodo task complete t1",
      "flags": []
    },
    {
      "id": "cmd-mstodo-task-comment",
      "path": "mstodo task comment",
      "name": "comment",
      "short": "Append text to a task body",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo task comment --help\nmstodo task comment t1 --body \"Comment marker for audit trail\"",
      "flags": [
        {
          "name": "body",
          "type": "string",
          "usage": "Text to append"
        },
        {
          "name": "list",
          "type": "string",
          "usage": "Task list ref or ID when task is not a local ref"
        },
        {
          "name": "task",
          "type": "string",
          "usage": "Task ref or ID"
        }
      ]
    },
    {
      "id": "cmd-mstodo-task-complete",
      "path": "mstodo task complete",
      "name": "complete",
      "short": "Mark a task complete",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo task complete --help\nmstodo task complete t1",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch task completion"
        },
        {
          "name": "list",
          "type": "string",
          "usage": "Task list ref or ID when task is not a local ref"
        },
        {
          "name": "task",
          "type": "string",
          "usage": "Task ref or ID"
        }
      ]
    },
    {
      "id": "cmd-mstodo-task-create",
      "path": "mstodo task create",
      "name": "create",
      "short": "Create a task",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo task create --help\nmstodo task create --list l1 --title \"Send packet\"\nmstodo task create --list l1 --title \"Send packet\" --due 2026-05-01 --importance high",
      "flags": [
        {
          "name": "body",
          "type": "string",
          "usage": "Task body"
        },
        {
          "name": "due",
          "type": "string",
          "usage": "Due date/time, e.g. YYYY-MM-DD or RFC3339; date-only values are stored at 00:00 UTC"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance: low, normal, or high"
        },
        {
          "name": "list",
          "type": "string",
          "usage": "Task list ref or ID"
        },
        {
          "name": "title",
          "type": "string",
          "usage": "Task title"
        }
      ]
    },
    {
      "id": "cmd-mstodo-task-delete",
      "path": "mstodo task delete",
      "name": "delete",
      "short": "Delete a task",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "mstodo task delete t1 --dry-run\nmstodo task delete t1 --yes",
      "flags": [
        {
          "name": "all",
          "type": "bool",
          "usage": "Confirm batch task deletion"
        },
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview task deletion without deleting"
        },
        {
          "name": "list",
          "type": "string",
          "usage": "Task list ref or ID when task is not a local ref"
        },
        {
          "name": "task",
          "type": "string",
          "usage": "Task ref or ID"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive task deletion"
        }
      ]
    },
    {
      "id": "cmd-mstodo-task-get",
      "path": "mstodo task get",
      "name": "get",
      "short": "Get a task",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo list get l1 --limit 1 --jsonl | mstodo task get --json\nmstodo task get\nmstodo task get t1",
      "flags": [
        {
          "name": "list",
          "type": "string",
          "usage": "Task list ref or ID when task is not a local ref"
        },
        {
          "name": "task",
          "type": "string",
          "usage": "Task ref or ID"
        }
      ]
    },
    {
      "id": "cmd-mstodo-task-list",
      "path": "mstodo task list",
      "name": "list",
      "short": "List tasks in a task list",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo list search --query operations --jsonl | mstodo task list --query packet\nmstodo task list --list l1",
      "flags": [
        {
          "name": "list",
          "type": "string",
          "usage": "Task list ref or ID"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Filter tasks by title/body"
        },
        {
          "name": "status",
          "type": "string",
          "usage": "Filter by status: open, completed, notStarted, inProgress, waitingOnOthers, or deferred"
        }
      ]
    },
    {
      "id": "cmd-mstodo-task-search",
      "path": "mstodo task search",
      "name": "search",
      "short": "Search tasks in a task list",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo list search --query operations --jsonl | mstodo task search --query packet\nmstodo task search --list l1 --query packet",
      "flags": [
        {
          "name": "list",
          "type": "string",
          "usage": "Task list ref or ID"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Filter tasks by title/body"
        },
        {
          "name": "status",
          "type": "string",
          "usage": "Filter by status: open, completed, notStarted, inProgress, waitingOnOthers, or deferred"
        }
      ]
    },
    {
      "id": "cmd-mstodo-task-update",
      "path": "mstodo task update",
      "name": "update",
      "short": "Update a task",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mstodo task update --help\nmstodo task update t1 --importance high --due 2026-05-01\nmstodo task update t1 --title \"Send updated packet\"",
      "flags": [
        {
          "name": "body",
          "type": "string",
          "usage": "New task body"
        },
        {
          "name": "due",
          "type": "string",
          "usage": "New due date/time; empty clears the due date"
        },
        {
          "name": "importance",
          "type": "string",
          "usage": "Importance: low, normal, or high"
        },
        {
          "name": "list",
          "type": "string",
          "usage": "Task list ref or ID when task is not a local ref"
        },
        {
          "name": "status",
          "type": "string",
          "usage": "Graph task status, e.g. notStarted or completed"
        },
        {
          "name": "task",
          "type": "string",
          "usage": "Task ref or ID"
        },
        {
          "name": "title",
          "type": "string",
          "usage": "New task title"
        }
      ]
    },
    {
      "id": "cmd-mstodo-version",
      "path": "mstodo version",
      "name": "version",
      "short": "Print version information",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "mstodo version --help",
      "flags": []
    }
  ]
}
