list-checks
cmdhub adapter

Microsoft To Do CLI
for cmdhub.

Task lists, tasks, due dates, and completion through Microsoft To Do.

lock Auth: OAuth2
Quick Install cmdhub get mstodo

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 Microsoft To Do lists and tasks.

Refs

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

Schemas

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

Auth scopes

offline_accessUser.ReadTasks.ReadWrite

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
mstodo auth Manage Microsoft authentication
#cmd-mstodo-auth discovery safe
mstodo auth login Authenticate with Microsoft To Do
#cmd-mstodo-auth-login mutates state
$ mstodo auth login
$ mstodo auth login --help
$ mstodo auth status
$ mstodo auth whoami
mstodo auth logout Remove stored credentials
#cmd-mstodo-auth-logout mutates state
$ mstodo auth logout
$ mstodo auth logout --help
mstodo auth refresh Refresh stored token
#cmd-mstodo-auth-refresh mutates state
$ mstodo auth refresh
$ mstodo auth refresh --help
mstodo auth status Show auth status
#cmd-mstodo-auth-status discovery safe
$ mstodo auth status
$ mstodo auth status --help
mstodo auth whoami Show current Microsoft identity
#cmd-mstodo-auth-whoami discovery safe
$ mstodo auth whoami
$ mstodo auth whoami --help
mstodo capabilities Describe capabilities
#cmd-mstodo-capabilities discovery safe
$ mstodo capabilities --help
mstodo config Inspect local configuration
#cmd-mstodo-config discovery safe
mstodo config explain Explain resolved configuration
#cmd-mstodo-config-explain discovery safe
$ mstodo config explain --help
mstodo doctor Run mstodo diagnostics
#cmd-mstodo-doctor discovery safe
$ mstodo doctor --help
mstodo list Work with Microsoft To Do task lists
#cmd-mstodo-list discovery safe
$ mstodo list list
$ mstodo list search --query operations
$ mstodo list get l1 --limit 0
mstodo list create Create a task list
#cmd-mstodo-list-create mutates state
--name string List name
$ mstodo list create --help
$ mstodo list create --name "Operations"
mstodo list delete Delete a task list
#cmd-mstodo-list-delete mutates state dry-run
--dry-run bool Preview task list deletion without deleting
--yes bool Confirm task list deletion
$ mstodo list delete l1 --dry-run
$ mstodo list delete l1 --yes
mstodo list get Get a task list
#cmd-mstodo-list-get discovery safe
--query string Filter tasks in this list by title/body
$ mstodo list get
$ mstodo list get l1
$ mstodo list get l1 --limit 0
$ mstodo list get l1 --query packet
$ mstodo list search --query operations --jsonl | mstodo list get
mstodo list list List task lists
#cmd-mstodo-list-list discovery safe
--query string Filter list names locally
$ mstodo list list
$ mstodo list list --limit 0
mstodo list update Update a task list
#cmd-mstodo-list-update mutates state
--name string New list name
$ mstodo list update --help
$ mstodo list update l1 --name "Operations"
mstodo login Authenticate with Microsoft To Do
#cmd-mstodo-login mutates state
$ mstodo auth status
$ mstodo auth whoami
$ mstodo login
mstodo logout Remove stored credentials
#cmd-mstodo-logout mutates state
$ mstodo logout
mstodo profile Manage provider profiles
#cmd-mstodo-profile discovery safe
mstodo profile create Create an unauthenticated provider profile
#cmd-mstodo-profile-create mutates state
$ mstodo profile create --help
mstodo profile delete Delete a local provider profile
#cmd-mstodo-profile-delete mutates state
$ mstodo profile delete --help
mstodo profile list List provider profiles
#cmd-mstodo-profile-list discovery safe
$ mstodo profile list --help
mstodo profile rename Rename a local provider profile
#cmd-mstodo-profile-rename discovery safe
$ mstodo profile rename --help
mstodo profile use Set the default provider profile
#cmd-mstodo-profile-use mutates state
$ mstodo profile use --help
mstodo resolve Resolve a local mstodo reference
#cmd-mstodo-resolve discovery safe
$ mstodo resolve --help
mstodo schema Emit mstodo schema hints
#cmd-mstodo-schema discovery safe
--in bool Show input schema
--out bool Show output schema
$ mstodo schema --help
mstodo task Work with Microsoft To Do tasks
#cmd-mstodo-task discovery safe
$ mstodo task list --list l1
$ mstodo task search --list l1 --query packet
$ mstodo task create --list l1 --title "Send packet"
$ mstodo task get t1
$ mstodo task complete t1
mstodo task comment Append text to a task body
#cmd-mstodo-task-comment mutates state
--body string Text to append
--list string Task list ref or ID when task is not a local ref
--task string Task ref or ID
$ mstodo task comment --help
$ mstodo task comment t1 --body "Comment marker for audit trail"
mstodo task complete Mark a task complete
#cmd-mstodo-task-complete mutates state
--all bool Confirm batch task completion
--list string Task list ref or ID when task is not a local ref
--task string Task ref or ID
$ mstodo task complete --help
$ mstodo task complete t1
mstodo task create Create a task
#cmd-mstodo-task-create mutates state
--body string Task body
--due string Due date/time, e.g. YYYY-MM-DD or RFC3339; date-only values are stored at 00:00 UTC
--importance string Importance: low, normal, or high
--list string Task list ref or ID
--title string Task title
$ mstodo task create --help
$ mstodo task create --list l1 --title "Send packet"
$ mstodo task create --list l1 --title "Send packet" --due 2026-05-01 --importance high
mstodo task delete Delete a task
#cmd-mstodo-task-delete mutates state dry-run
--all bool Confirm batch task deletion
--dry-run bool Preview task deletion without deleting
--list string Task list ref or ID when task is not a local ref
--task string Task ref or ID
--yes bool Confirm destructive task deletion
$ mstodo task delete t1 --dry-run
$ mstodo task delete t1 --yes
mstodo task get Get a task
#cmd-mstodo-task-get discovery safe
--list string Task list ref or ID when task is not a local ref
--task string Task ref or ID
$ mstodo list get l1 --limit 1 --jsonl | mstodo task get --json
$ mstodo task get
$ mstodo task get t1
mstodo task list List tasks in a task list
#cmd-mstodo-task-list discovery safe
--list string Task list ref or ID
--query string Filter tasks by title/body
--status string Filter by status: open, completed, notStarted, inProgress, waitingOnOthers, or deferred
$ mstodo list search --query operations --jsonl | mstodo task list --query packet
$ mstodo task list --list l1
mstodo task update Update a task
#cmd-mstodo-task-update mutates state
--body string New task body
--due string New due date/time; empty clears the due date
--importance string Importance: low, normal, or high
--list string Task list ref or ID when task is not a local ref
--status string Graph task status, e.g. notStarted or completed
--task string Task ref or ID
--title string New task title
$ mstodo task update --help
$ mstodo task update t1 --importance high --due 2026-05-01
$ mstodo task update t1 --title "Send updated packet"
mstodo version Print version information
#cmd-mstodo-version discovery safe
$ mstodo version --help

play_circle Live Examples

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

auth

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

Next steps:
- Login: mstodo auth login
Run diagnostics
$ mstodo doctor
mstodo 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:       prefer an OS keychain backend outside isolated test accounts
- Capabilities: mstodo capabilities

schemas

Inspect task schema
$ mstodo schema task.create --in
Schema: mstodo.task.create.input.v1 (mstodo task create input)
Required: list, title
Optional: body, due, importance

overview

Show capabilities
$ mstodo capabilities
mstodo capabilities
Resources: auth, capabilities, config, doctor, list, profile, resolve, schema, task, version
Machine output: --json, --jsonl
Required scopes: Tasks.ReadWrite, User.Read, offline_access

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

alt_route Composition Patterns

Bridge your ecosystem with zero middleware.

mstodo auth login

# Create and complete a Microsoft To Do task
mstodo list search --query "Operations"
mstodo list get l1
mstodo task create --title "Send weekly packet" --list l1 --due 2026-05-01
mstodo task complete t1

# Pipe a listed task into a follow-up command
mstodo list get l1 --limit 1 --jsonl | mstodo task get --json

# Fetch every task in a long list
mstodo list get l1 --limit 0 --json