Skip to main content

ms-todo

Coverage

CLI and importable Python package for Microsoft To Do via Microsoft Graph.

Install (in your virtualenv)

pip install -e .

Config File (~/.ms-todo/.env)

By default, config is loaded from ~/.ms-todo/.env. You can override the config directory with MS_TODO_CONFIG_DIR.

CLIENT_ID=YOUR_CLIENT_ID
TENANT_ID=consumers
TASK_LIST_ID=YOUR_TASK_LIST_ID

Optional:

CLIENT_SECRET=YOUR_CLIENT_SECRET

CLIENT_SECRET is not used by the device-code CLI flow, but can remain for other scripts.

CLI Usage

ms-todo --help

Who Am I

ms-todo whoami

Shows signed-in user account info and To Do mailbox diagnostics.

Get Task List IDs

List all:

ms-todo get-task-list-id

Find one by name:

ms-todo get-task-list-id --list-name "Tasks"

Add a Todo

Using default list from config (TASK_LIST_ID):

ms-todo add-todo "Call accountant"

Explicit list ID:

ms-todo add-todo "Call accountant" --task-list-id "<LIST_ID>"

Interactive prompt:

ms-todo add-todo --interactive

Complete a Todo by ID

With tracked lookup (no list ID needed if task was added via this tool):

ms-todo complete-todo --todo-id "<TODO_ID>"

With explicit list ID:

ms-todo complete-todo --todo-id "<TODO_ID>" --task-list-id "<LIST_ID>"

Complete a Todo by Source Title

ms-todo complete-from-source "Call accountant"

With explicit list ID:

ms-todo complete-from-source "Call accountant" --task-list-id "<LIST_ID>"

Bulk Add From File

Using default list from config (TASK_LIST_ID):

ms-todo bulk-add-from-file --file todos.txt

Explicit list ID:

ms-todo bulk-add-from-file --file todos.txt --task-list-id "<LIST_ID>"

Interactive list selection:

ms-todo bulk-add-from-file --file todos.txt --interactive

The file should contain one todo title per line. Successfully added titles are removed from the file.

Debug Logging

ms-todo --debug whoami

The --debug flag can be prepended to any command.

Docs

For Azure app registration and full setup, see docs/docs/index.md or run:

just mkdocs-serve

History

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

0.1.1 (2026-04-20)

  • Updated README and move to hatch and xapp-tools.

0.1.0 (2026-03-07)

  • First release

Metadata

Release files for ms-todo 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ms-todo 0.1.1
File Size Uploaded
ms_todo-0.1.1.tar.gz 156.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ms-todo 0.1.1
File Interpreter ABI Platform
ms_todo-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 184.5 kB

Release files / ms_todo-0.1.1.tar.gz

Download URL ms_todo-0.1.1.tar.gz
Size 156.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1810958a7dabe7addda3d976fe5d1fa5d9f1bb7cb8358c995ddd43db26dca4a2
BLAKE2b-256 checksum
How to use checksums
25f353d0a7e7b12dcf5946ea35b9f075a1ba2455af1fe508afca12e624a4fca0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.1

Release files / ms_todo-0.1.1-py3-none-any.whl

Download URL ms_todo-0.1.1-py3-none-any.whl
Size 28.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
813f43cb8575d69ee9042f3e49374574254724c939429dca6ea4d651bcb4e80a
BLAKE2b-256 checksum
How to use checksums
1113d8d8f174ecf7d989bbb71e63c240cbe1e5ee14f64574f7c8bb1a48281eb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.1

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page