ms-todo
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
hatchandxapp-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)
| File | Size | Uploaded | |
|---|---|---|---|
| ms_todo-0.1.1.tar.gz | 156.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|