Microsoft To Do CLI
for cmdhub.
Task lists, tasks, due dates, and completion through Microsoft To Do.
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 normal reads, `--json` for scripting or complete structured fields, and `--jsonl` for upstream pipe inputs.
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.ReadopenidprofileTasks.ReadWriteterminal 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 informationmstodo attachment
Work with task attachmentsWork with file attachments attached to an exact Microsoft To Do task.
Canonical actions: list, get, add, delete. Hidden attachment create resolves to canonical attachment add. Selectors: pass –task for every attachment command; add –list only when the task selector is not a local ref with saved list context. Output modes: human by default; use –json for exact metadata or –jsonl for list streams. Attachment bytes are written with –output-file, not –output. Delete safety: attachment delete requires –dry-run to preview or –yes to execute.
Examples: mstodo attachment list –task t1 mstodo attachment add –task t1 –file ./note.txt mstodo attachment get a1 –task t1 –output-file note.txt
mstodo attachment add
Add a small file attachmentAgent guidance:
- Purpose: Add a small file attachment. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema attachment.add –input –json; mstodo schema attachment.add –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--file
string
File path--name
string
Display namemstodo attachment delete
Delete a attachment itemAgent guidance:
- Purpose: Delete a attachment item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema attachment.delete –input –json; mstodo schema attachment.delete –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Safety: destructive commands require –dry-run previews or explicit –yes confirmation; cleanup also requires –all –yes.
--dry-run
bool
Preview deletion without deleting--yes, -y
bool
Confirm deletionmstodo attachment get
Get a attachment itemAgent guidance:
- Purpose: Get a attachment item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema attachment.get –input –json; mstodo schema attachment.get –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--output-file
string
Write attachment bytes to this file when content is availablemstodo attachment list
List attachment itemsAgent guidance:
- Purpose: List attachment items. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema attachment.list –input –json; mstodo schema attachment.list –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo auth
Manage Microsoft authenticationManage Microsoft To Do OAuth credentials for the selected cmdhub profile.
mstodo uses Microsoft device-code OAuth. Login shows the verification URL https://microsoft.com/devicelogin and a one-time code, then stores the Microsoft Graph refresh/access token in the shared cmdhub credential backend for the selected profile. It never asks for a normal Microsoft account password, client secret, cookie, or pasted token.
Use –profile for one command or mstodo profile use to change the default profile. Required delegated scopes are offline_access, User.Read, openid, profile, and Tasks.ReadWrite.
Recovery commands: mstodo auth status mstodo auth login mstodo auth whoami mstodo doctor
mstodo auth login
Authenticate with Microsoft To DoStart Microsoft device-code OAuth for Microsoft To Do.
The command displays https://microsoft.com/devicelogin with a one-time code, waits for Microsoft authorization, and stores the resulting refresh/access token in the shared cmdhub credential backend for the selected profile. It never asks for a normal Microsoft account password, client secret, cookie, or pasted token, and it never prints tokens.
Use –profile to authenticate that profile for this command; otherwise mstodo uses the current default profile. Required delegated scopes are offline_access, User.Read, openid, profile, and Tasks.ReadWrite.
Recovery commands: mstodo auth status mstodo auth login mstodo auth whoami mstodo doctor
Agent guidance:
- Purpose: Authenticate with Microsoft To Do. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema auth.login –input –json; mstodo schema auth.login –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Auth recovery: run mstodo auth status, then mstodo auth login when credentials are missing, expired, or underscoped.
mstodo auth logout
Remove stored credentialsRemove the selected profile’s stored Microsoft OAuth refresh/access token from the shared cmdhub credential backend.
Agent guidance:
- Purpose: Remove stored credentials. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema auth.logout –input –json; mstodo schema auth.logout –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Auth recovery: run mstodo auth status, then mstodo auth login when credentials are missing, expired, or underscoped.
mstodo auth refresh
Refresh stored tokenRefresh the selected profile’s stored Microsoft OAuth access token from the shared cmdhub credential backend. If refresh fails or required scopes are missing, rerun mstodo auth login.
Agent guidance:
- Purpose: Refresh stored token. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema auth.refresh –input –json; mstodo schema auth.refresh –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Auth recovery: run mstodo auth status, then mstodo auth login when credentials are missing, expired, or underscoped.
mstodo auth status
Show auth statusReport Microsoft To Do auth readiness for the selected profile.
Status checks whether shared cmdhub credential storage has a Microsoft OAuth token, whether refresh succeeds, whether the required delegated scopes are present, and whether Microsoft Graph To Do is reachable for the selected profile.
Use this before resource commands or after auth failures. If credentials are missing, expired, or underscoped, rerun mstodo auth login for the same –profile and then mstodo doctor.
Agent guidance:
- Purpose: Show auth status. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema auth.status –input –json; mstodo schema auth.status –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Auth recovery: run mstodo auth status, then mstodo auth login when credentials are missing, expired, or underscoped.
mstodo auth whoami
Show current Microsoft identityShow the Microsoft identity bound to the selected mstodo profile.
The command verifies the stored Microsoft OAuth token against Microsoft Graph and reports the account details available for the selected profile. Use mstodo auth status for credential storage, scope, token-refresh, and provider-readiness details.
Recovery commands: mstodo auth status mstodo auth login mstodo doctor
Agent guidance:
- Purpose: Show current Microsoft identity. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema auth.whoami –input –json; mstodo schema auth.whoami –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Auth recovery: run mstodo auth status, then mstodo auth login when credentials are missing, expired, or underscoped.
mstodo capabilities
Describe capabilitiesAgent guidance:
- Purpose: Describe capabilities. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema capabilities.describe –input –json; mstodo schema capabilities.describe –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--section
string
Show one capability section: scopes, schemas, or commandsmstodo checklist
Work with task checklist itemsWork with checklist items on an exact Microsoft To Do task.
Canonical actions: list, get, create, update, check, uncheck, delete. Selectors: pass –task for every checklist command; add –list only when the task selector is not a local ref with saved list context. Output modes: human by default; use –json for exact IDs or –jsonl for list streams. Delete safety: checklist delete requires –dry-run to preview or –yes to execute.
Examples: mstodo checklist list –task t1 mstodo checklist update c1 –task t1 –checked true mstodo checklist delete c1 –task t1 –dry-run
mstodo checklist check
Check a checklist itemAgent guidance:
- Purpose: Check a checklist item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema checklist.check –input –json; mstodo schema checklist.check –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo checklist create
Create a checklist itemAgent guidance:
- Purpose: Create a checklist item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema checklist.create –input –json; mstodo schema checklist.create –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--title
string
Checklist item titlemstodo checklist delete
Delete a checklist itemAgent guidance:
- Purpose: Delete a checklist item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema checklist.delete –input –json; mstodo schema checklist.delete –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Safety: destructive commands require –dry-run previews or explicit –yes confirmation; cleanup also requires –all –yes.
--dry-run
bool
Preview deletion without deleting--yes, -y
bool
Confirm deletionmstodo checklist get
Get a checklist itemAgent guidance:
- Purpose: Get a checklist item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema checklist.get –input –json; mstodo schema checklist.get –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo checklist list
List checklist itemsAgent guidance:
- Purpose: List checklist items. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema checklist.list –input –json; mstodo schema checklist.list –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo checklist uncheck
Uncheck a checklist itemAgent guidance:
- Purpose: Uncheck a checklist item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema checklist.uncheck –input –json; mstodo schema checklist.uncheck –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo checklist update
Update a checklist itemAgent guidance:
- Purpose: Update a checklist item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema checklist.update –input –json; mstodo schema checklist.update –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--checked
string
Set checked state (true or false)--title
string
New checklist titlemstodo config
Inspect local configurationmstodo config explain
Explain resolved configurationAgent guidance:
- Purpose: Explain resolved configuration. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema config.explain –input –json; mstodo schema config.explain –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo doctor
Run mstodo diagnosticsAgent guidance:
- Purpose: Run mstodo diagnostics. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema doctor.run –input –json; mstodo schema doctor.run –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Auth recovery: run mstodo auth status, then mstodo auth login when credentials are missing, expired, or underscoped.
mstodo link
Work with task linked resourcesWork with linked resources attached to an exact Microsoft To Do task.
Canonical actions: list, get, create, update, delete. Selectors: pass –task for every link command; add –list only when the task selector is not a local ref with saved list context. Output modes: human by default with URL aliases; use –json for exact IDs and full URLs or –jsonl for list streams. Delete safety: link delete requires –dry-run to preview or –yes to execute.
Examples: mstodo link list –task t1 mstodo link create –task t1 –application “cmdhub” –name “Ticket 882” –url https://example.test/tickets/882 mstodo link delete r1 –task t1 –dry-run
mstodo link create
Create a linked resourceAgent guidance:
- Purpose: Create a linked resource. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema link.create –input –json; mstodo schema link.create –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--application
string
Source application name--external-id
string
External source ID--name
string
Display name--url
string
Source URLmstodo link delete
Delete a link itemAgent guidance:
- Purpose: Delete a link item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema link.delete –input –json; mstodo schema link.delete –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Safety: destructive commands require –dry-run previews or explicit –yes confirmation; cleanup also requires –all –yes.
--dry-run
bool
Preview deletion without deleting--yes, -y
bool
Confirm deletionmstodo link get
Get a link itemAgent guidance:
- Purpose: Get a link item. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema link.get –input –json; mstodo schema link.get –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo link list
List link itemsAgent guidance:
- Purpose: List link items. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema link.list –input –json; mstodo schema link.list –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo link update
Update a linked resourceAgent guidance:
- Purpose: Update a linked resource. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema link.update –input –json; mstodo schema link.update –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--application
string
Source application name--external-id
string
External source ID--name
string
Display name--url
string
Source URLmstodo list
Work with Microsoft To Do task listsmstodo list create
Create a task listAgent guidance:
- Purpose: Create a task list. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema list.create –input –json; mstodo schema list.create –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--name
string
List namemstodo list delete
Delete a task listAgent guidance:
- Purpose: Delete a task list. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema list.delete –input –json; mstodo schema list.delete –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Safety: destructive commands require –dry-run previews or explicit –yes confirmation; cleanup also requires –all –yes.
--dry-run
bool
Preview task list deletion without deleting--yes, -y
bool
Confirm task list deletionmstodo list get
Get a task listAgent guidance:
- Purpose: Get a task list. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema list.get –input –json; mstodo schema list.get –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--query
string
Filter tasks in this list by title/body--task-limit
int = 3
Maximum task preview items; 0 fetches until provider exhaustion--tasks
bool
Include a bounded task preview in summary outputmstodo list list
List task listsAgent guidance:
- Purpose: List task lists. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema list.list –input –json; mstodo schema list.list –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--query
string
Filter list names locally--shared
string
Filter by shared state: true or false--well-known
string
Filter by built-in list: defaultList, flaggedEmails, or nonemstodo list search
Search task listsAgent guidance:
- Purpose: Search task lists. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema list.search –input –json; mstodo schema list.search –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--query
string
Filter list names locally--shared
string
Filter by shared state: true or false--well-known
string
Filter by built-in list: defaultList, flaggedEmails, or nonemstodo list update
Update a task listAgent guidance:
- Purpose: Update a task list. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema list.update –input –json; mstodo schema list.update –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--name
string
New list namemstodo mcp
Run the MCP serverRun a stdio Model Context Protocol server for this adapter.
The server exposes read-only resource commands by default. Mutating commands are listed only when explicitly allowed with –allow and remain gated by the command contract safety class.
Agent guidance:
- Purpose: Run the MCP server. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema mcp.get –input –json; mstodo schema mcp.get –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--allow
stringArray = []
Allow mutating command keys such as gmail.message.archive or gmail.message.label.*--allow-dangerous
bool
Allow --allow wildcards to include destructive or sends_external commands--concurrency
int
Maximum concurrent MCP subprocesses--max-output
int64 = 0
Maximum stdout/stderr bytes captured per MCP command--print-config
bool
Print MCP tool configuration and exit--timeout
duration = 0s
Per-command MCP subprocess timeout, for example 45s or 2mmstodo profile
Manage provider profilesmstodo profile create
Create an unauthenticated provider profileAgent guidance:
- Purpose: Create an unauthenticated provider profile. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema profile.create –input –json; mstodo schema profile.create –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo profile delete
Delete a local provider profileAgent guidance:
- Purpose: Delete a local provider profile. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema profile.delete –input –json; mstodo schema profile.delete –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Safety: destructive commands require –dry-run previews or explicit –yes confirmation; cleanup also requires –all –yes.
mstodo profile list
List provider profilesAgent guidance:
- Purpose: List provider profiles. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema profile.list –input –json; mstodo schema profile.list –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo profile rename
Rename a local provider profileAgent guidance:
- Purpose: Rename a local provider profile. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema profile.rename –input –json; mstodo schema profile.rename –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo profile use
Set the default provider profileAgent guidance:
- Purpose: Set the default provider profile. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema profile.use –input –json; mstodo schema profile.use –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo resolve
Resolve a local mstodo referenceAgent guidance:
- Purpose: Resolve a local mstodo reference. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema resolve.get –input –json; mstodo schema resolve.get –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
mstodo schema
Emit mstodo schema hintsAgent guidance:
- Purpose: Emit mstodo schema hints. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema schema.describe –input –json; mstodo schema schema.describe –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--in
bool
Show input schema--input
bool
Show input schema--out
bool
Show output schemamstodo sync
Work with To Do sync cursorsWork with Microsoft To Do delta sync cursors for an exact task list.
Canonical actions: delta. Selectors: pass –list ; pass –delta-cursor to resume a previous delta. Output modes: human by default with cursor aliases; use –json for exact nextLink/deltaLink values or –jsonl for task streams.
Examples: mstodo sync delta –list l1 mstodo sync delta –list l1 –delta-cursor dcur1 mstodo sync delta –list l1 –page-size 25 –json
mstodo sync delta
Fetch task delta changes for a listAgent guidance:
- Purpose: Fetch task delta changes for a list. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema sync.delta –input –json; mstodo schema sync.delta –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--delta-cursor
string
Delta cursor alias or Graph delta link--list
string
Task list ref or IDmstodo task
Work with Microsoft To Do tasksmstodo task cleanup
Preview or delete bounded task cleanup matchesAgent guidance:
- Purpose: Preview or delete bounded task cleanup matches. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.cleanup –input –json; mstodo schema task.cleanup –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Safety: destructive commands require –dry-run previews or explicit –yes confirmation; cleanup also requires –all –yes.
--all
bool
Confirm all cleanup matches--dry-run
bool
Preview cleanup without deleting--list
string
Optional list ref or ID--older-than
string
Only match tasks last modified before this duration, e.g. 24h--query
string
Required cleanup text filter unless another narrowing filter is supplied--status
string
Filter by status--yes, -y
bool
Confirm destructive cleanupmstodo task complete
Mark a task completeAgent guidance:
- Purpose: Mark a task complete. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.complete –input –json; mstodo schema task.complete –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--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 IDmstodo task create
Create a taskAgent guidance:
- Purpose: Create a task. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.create –input –json; mstodo schema task.create –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--body
string
Task body--body-file
string
Read task body from a text file--category
stringArray = []
Category name; may be repeated--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--recurrence
string
Graph recurrence pattern type such as daily, weekly, absoluteMonthly, or absoluteYearly--reminder
string
Reminder date/time--start
string
Start date/time--title
string
Task titlemstodo task delete
Delete a taskAgent guidance:
- Purpose: Delete a task. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.delete –input –json; mstodo schema task.delete –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
- Safety: destructive commands require –dry-run previews or explicit –yes confirmation; cleanup also requires –all –yes.
--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, -y
bool
Confirm destructive task deletionmstodo task get
Get a taskAgent guidance:
- Purpose: Get a task. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.get –input –json; mstodo schema task.get –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--list
string
Task list ref or ID when task is not a local ref--task
string
Task ref or IDmstodo task list
List tasks in a task listAgent guidance:
- Purpose: List tasks in a task list. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.list –input –json; mstodo schema task.list –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--category
string
Filter by category--due
string
Filter by due state: today, tomorrow, overdue, none, before:YYYY-MM-DD, or after:YYYY-MM-DD--importance
string
Filter by importance: low, normal, or high--include-completed
bool
Include completed tasks when no explicit completed status is requested--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 deferredmstodo task move
Move a task to another listAgent guidance:
- Purpose: Move a task to another list. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.move –input –json; mstodo schema task.move –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--from-list
string
Original task list ref or ID when task is not a local ref--task
string
Task ref or ID--to-list
string
Destination task list ref or IDmstodo task reopen
Reopen a completed taskAgent guidance:
- Purpose: Reopen a completed task. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.reopen –input –json; mstodo schema task.reopen –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--list
string
Task list ref or ID when task is not a local ref--task
string
Task ref or IDmstodo task search
Search tasks in a task listAgent guidance:
- Purpose: Search tasks in a task list. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.search –input –json; mstodo schema task.search –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--category
string
Filter by category--due
string
Filter by due state: today, tomorrow, overdue, none, before:YYYY-MM-DD, or after:YYYY-MM-DD--importance
string
Filter by importance: low, normal, or high--include-completed
bool
Include completed tasks when no explicit completed status is requested--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 deferredmstodo task update
Update a taskAgent guidance:
- Purpose: Update a task. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema task.update –input –json; mstodo schema task.update –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
--body
string
New task body--body-file
string
Read new task body from a text file--category
stringArray = []
Category name; may be repeated--clear-categories
bool
Clear all categories--clear-due
bool
Clear due date--clear-recurrence
bool
Clear recurrence--clear-reminder
bool
Clear reminder--clear-start
bool
Clear start date--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--recurrence
string
Graph recurrence pattern type--reminder
string
New reminder date/time--start
string
New start date/time--status
string
Graph task status, e.g. notStarted or completed--task
string
Task ref or ID--title
string
New task titlemstodo version
Print version informationAgent guidance:
- Purpose: Print version information. Hidden aliases recover common guesses but help stays canonical.
- Output modes: human by default; add –json for one exact object or –jsonl for item/meta streams where supported.
- Local refs: use displayed refs such as l1, t1, c1, r1, a1, u1, or cursor aliases instead of Microsoft Graph IDs and long URLs.
- Schemas: mstodo schema version.get –input –json; mstodo schema version.get –out –json.
- Recovery: if a ref is stale, rerun the matching list/search command and use the new displayed ref.
play_circle Live Examples
Output captured from a real workspace. Regenerate with
scripts/gen-docs.sh --update.
auth
Not logged in. Next steps: - Login: mstodo auth login
{
"account": {
"account_type": "unknown",
"display_name": "",
"email": "",
"id": "",
"tenant_id": "",
"user_principal_name": ""
},
"auth_mode": "oauth",
"authenticated": false,
"credential_backend": "{backend}",
"credential_secure": {secure},
"credential_store_provider": "microsoft",
"credential_store_tool": "mstodo",
"credential_type": "oauth_device_code",
"credentials_stored": false,
"missing_scopes": [
"Tasks.ReadWrite",
"User.Read",
"offline_access",
"openid",
"profile"
],
"next_steps": [
{
"label": "Next",
"command": "mstodo auth login"
}
],
"oauth": {
"client_id_source": "env",
"device_code_supported": true,
"refresh_token_present": false
},
"profile": "default",
"provider": "microsoft",
"provider_ready": false,
"refresh_attempted": true,
"required_scopes": [
"Tasks.ReadWrite",
"User.Read",
"offline_access",
"openid",
"profile"
],
"scopes_granted": [],
"scopes_required": [
"Tasks.ReadWrite",
"User.Read",
"offline_access",
"openid",
"profile"
],
"suggested_next_step": "mstodo auth login",
"token_valid": false,
"tool": "mstodo"
}Not logged in. Next steps: - Login: mstodo auth login
mstodo doctor: FAIL Checks: credential_backend ok, credential_security warn, profiles warn, microsoft_oauth ok, token fail, todo_access 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 Microsoft OAuth device-code public client is configured token FAIL no stored Microsoft OAuth device-code token todo_access FAIL Microsoft To Do access check skipped because auth is not ready Next steps: - Status: run mstodo auth login - Capabilities: mstodo capabilities
schemas
{
"schema_id": "mstodo.task.create.input.v1",
"version": "v1",
"tool": "mstodo",
"resource": "task",
"action": "create",
"direction": "input",
"kind": "provider-native",
"json_schema": {
"type": "object",
"required": [
"list",
"title"
],
"properties": {
"list": {
"type": "string"
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"body_file": {
"type": "string"
},
"due": {
"type": "string"
},
"start": {
"type": "string"
},
"reminder": {
"type": "string"
},
"recurrence": {
"type": "string"
},
"importance": {
"type": "string",
"enum": [
"low",
"normal",
"high"
]
},
"category": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"list",
"title"
],
"optional": [
"body",
"body_file",
"due",
"start",
"reminder",
"recurrence",
"importance",
"category"
]
}{
"schema_id": "mstodo.task.search.output.v1",
"version": "v1",
"tool": "mstodo",
"resource": "task",
"action": "search",
"direction": "output",
"kind": "provider-native",
"json_schema": {
"type": "object",
"required": [
"items",
"count_emitted",
"truncated",
"next_cursor"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"id",
"title"
],
"properties": {
"type": {
"const": "task"
},
"id": {
"type": "string"
},
"list_id": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "string"
},
"importance": {
"type": "string"
},
"body": {
"type": "string"
},
"categories": {
"type": "array",
"items": {
"type": "string"
}
},
"due": {
"type": "string"
},
"due_time_zone": {
"type": "string"
},
"start": {
"type": "string"
},
"start_time_zone": {
"type": "string"
},
"reminder": {
"type": "string"
},
"reminder_time_zone": {
"type": "string"
},
"recurrence": {
"type": "string"
},
"created_date_time": {
"type": "string"
},
"modified_date_time": {
"type": "string"
},
"completed_date_time": {
"type": "string"
},
"completed": {
"type": "boolean"
}
}
}
},
"count_emitted": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"resource": {
"type": "string"
},
"action": {
"type": "string"
},
"request": {
"type": "object"
},
"list": {
"type": "object",
"required": [
"type",
"id",
"name"
],
"properties": {
"type": {
"const": "list"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"wellknown_list_name": {
"type": "string"
},
"is_owner": {
"type": "boolean"
},
"is_shared": {
"type": "boolean"
}
}
}
}
},
"required": [
"items",
"count_emitted",
"truncated",
"next_cursor"
],
"optional": [
"resource",
"action",
"request",
"list"
]
}overview
mstodo - Microsoft To Do from cmdhub
Auth: required, Microsoft OAuth device-code
Use local refs such as l1, t1, c1, a1, and r1 in follow-up commands.
Common workflows:
- Verify auth: mstodo auth status
- Confirm account: mstodo auth whoami
- List task lists: mstodo list list --limit 10
- Search tasks: mstodo task search --query "quarterly packet"
- Inspect task: mstodo task get t1 --view full
- Create task: mstodo task create --list l1 --title "Review quarterly packet"
- Work checklist: mstodo checklist create --task t1 --title "Confirm launch numbers"
- Add source link: mstodo link create --task t1 --application "cmdhub" --name "Ticket 882" --url https://example.test/tickets/882
- Clean up safely: mstodo task cleanup --query cmdhub-eval --dry-run
Resources:
auth login, status, whoami, refresh, logout
profile list, create, use, rename, delete
list list, search, get, create, update, delete
task list, search, get, create, update, complete, reopen, move, delete, cleanup
checklist list, get, create, update, check, uncheck, delete
link list, get, create, update, delete
attachment list, get, add, delete
sync delta
Meta:
doctor, capabilities, schema, mcp, resolve, version
Safety:
- Deletes require --dry-run or --yes.
- Bulk cleanup requires a narrowing filter and --all --yes to execute.
- Built-in lists such as defaultList and flaggedEmails cannot be renamed or deleted.
Discovery:
- Machine inventory: mstodo capabilities --json
- Command schemas: mstodo schema task.create --input --json
- Command help: mstodo task create --help
Usage:
mstodo [flags]
mstodo [command]
Examples:
mstodo auth login
mstodo list list
mstodo list create --name "Operations"
mstodo task create --list l1 --title "Send packet" --due 2026-05-01
mstodo task complete t1
Available Commands:
attachment Work with task attachments
auth Manage Microsoft authentication
capabilities Describe capabilities
checklist Work with task checklist items
config Inspect local configuration
doctor Run mstodo diagnostics
help Help about any command
link Work with task linked resources
list Work with Microsoft To Do task lists
mcp Run the MCP server
profile Manage provider profiles
resolve Resolve a local mstodo reference
schema Emit mstodo schema hints
sync Work with To Do sync cursors
task Work with Microsoft To Do tasks
version Print version information
Flags:
--config string Config path override
--cursor string Continuation cursor
--debug Enable debug diagnostics
-h, --help help for mstodo
--json Emit JSON machine output
--jsonl Emit JSONL records for piping
--limit int Maximum items to emit (default 50)
--no-paginate Fetch only one page
-o, --output string Compatibility output mode: json|jsonl. Prefer --json or --jsonl
--page-size int Requested upstream page size (default 50)
--profile string Config/auth profile (default "default")
-q, --quiet Suppress non-essential diagnostics
-v, --version Print version information
--view string View mode: summary|full (default "summary")
Use "mstodo [command] --help" for more information about a command.mstodo capabilities Resources: attachment, auth, capabilities, checklist, config, doctor, link, list, mcp, profile, resolve, schema, sync, task, version Machine output: --json, --jsonl Required scopes: Tasks.ReadWrite, User.Read, offline_access, openid, profile 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
# Fetch every task in a long list
mstodo list get l1 --limit 0 --json