Simple CLI tool to integrate with Microsoft To Do, allowing users to manage their tasks from the command line.
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ms_todo-0.1.1.tar.gz.
File metadata
- Download URL: ms_todo-0.1.1.tar.gz
- Upload date:
- Size: 156.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1810958a7dabe7addda3d976fe5d1fa5d9f1bb7cb8358c995ddd43db26dca4a2
|
|
| MD5 |
4e2b95e94f68c3f0875201d7d123bd3c
|
|
| BLAKE2b-256 |
25f353d0a7e7b12dcf5946ea35b9f075a1ba2455af1fe508afca12e624a4fca0
|
File details
Details for the file ms_todo-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ms_todo-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
813f43cb8575d69ee9042f3e49374574254724c939429dca6ea4d651bcb4e80a
|
|
| MD5 |
e0c978f8de8f8b6b57fac496374bb589
|
|
| BLAKE2b-256 |
1113d8d8f174ecf7d989bbb71e63c240cbe1e5ee14f64574f7c8bb1a48281eb7
|