
· 4 min read
Using Work IQ to find the tasks you forgot you promised
AI inside Microsoft 365 is starting to understand how work actually happens, after Delve and the Microsoft Graph there now is a new kid on the block: Work IQ. It sits on top of your organization’s data and signals. Like the Microsoft Graph it can access emails, meetings, documents, chats, and relationships between people. The idea is straight forward: instead of searching for information, you can ask questions about your work. And Copilot can reason over that context.
My problem: forgotten promises
One of the things I run into all the time is this: small promises that disappear in the flow of the week.
- “Let me send you that document.”
- “I’ll check with the team and get back on that”
- “Can you share the numbers tomorrow?”
Most of those happen in email, something I usually am good at keeping track of, but also during meetings or chats. And after a few days, it’s hard to remember what is still outstanding.
With Work IQ and the CLI options you have I can now use it to look through my email and Teams messages and find follow‑ups. Specifically: things I promised, or things someone promised me, that haven’t happened yet this week. The result was surprisingly useful. It produced a small list of items that clearly looked like follow‑ups. I am sure it won’t be perfect, but definitely good enough to act on.

Staying in control with Microsoft To Do
I still like having a clear task bucket. For me that’s Microsoft To Do. It’s the place where everything ends up so I can keep track of what’s waiting on me, and what I’m waiting for from others. The biggest issue is that Work IQ and Microsoft To Do are separate; there is no support for To Do yet. But that is where community comes in, there are samples out there on hosting your own Microsoft Todo MCP server. I choose to host it in my NAS but you can also run it locally or on Azure.
So the next step was obvious: connect the two. I created a docker compose file to run the MCP server, pulled in the repo into the /app folder and setup the .env file.
services:
microsoft-todo-mcp:
image: node:20-alpine
container_name: microsoft-todo-mcp
restart: unless-stopped
working_dir: /app
command: >
sh -c "
if [ ! -d /app/node_modules ]; then
npm install;
fi &&
npm run build &&
node dist/todo-index.js
"
volumes:
- /mnt/myapps/configs/todo-mcp/app:/app # repo location on host
- /mnt/myapps/configs/todo-mcp/data:/app/data # persists tokens.json + lists.db
ports:
- "30275:30275"
environment:
CLIENT_ID: ${CLIENT_ID}
CLIENT_SECRET: ${CLIENT_SECRET}
TENANT_ID: ${TENANT_ID}
PORT: 30275
PUBLIC_URL: ${PUBLIC_URL} # e.g. https://todo-mcp.yourdomain.com
REDIRECT_URI: ${PUBLIC_URL}/callback
MCP_API_KEY: ${MCP_API_KEY}
DASHBOARD_USERNAME: ${DASHBOARD_USERNAME:-admin}
DASHBOARD_PASSWORD: ${DASHBOARD_PASSWORD}
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:30275/health"]
interval: 30s
timeout: 5s
retries: 3
A simple .env file to hold the secrets and configuration values,
CLIENT_ID=<your_client_id>
CLIENT_SECRET=<your_client_secret>
TENANT_ID=<my-tenant-id> # use "common" if work+personal
PUBLIC_URL=https://my-todo-mcp.yourdomain.com
MCP_API_KEY=<random-api-key> # generate: openssl rand -hex 32
DASHBOARD_USERNAME=admin_appie
DASHBOARD_PASSWORD=<randompassword>
Make sure to follow the docs to setup a client id and secret that has the right permissions to access Microsoft To Do. Then you can start the container and go through the auth flow to connect it to your tenant. Then start the container and you can connect to your MCP server at https://my-todo-mcp.yourdomain.com. You can also login to the dashboard to see the logs and manage the server.
Once that was running, the flow became very straightforward; you add the MCP server, authenticate to it and then you can use it in your agent or play around with it in the CLI.

First, the CLI asks Work IQ to analyze my emails and Teams conversations and identify outstanding items. Then it retrieves my Waiting for list from Microsoft To Do. And finally it creates tasks for the follow‑ups it found.
In my case it found six items that were worth tracking. Small things, but exactly the type that otherwise slip through the cracks; each item will contain the body of the e-mail or chat message where the promise was made, so I can easily follow up on it. And since they are in To Do, I can keep track of them and make sure they get done.
Automation rules
What I like about this approach is that it doesn’t replace how I organize work. It does fill one of the gaps. Work IQ is good at understanding conversations and context. Microsoft To Do is good at being a simple, reliable task bucket, and I am still in charge to decide what I want to track and what I don’t. I can even decide to delete tasks or move them to a different list if I want to.

Albert-Jan Schot
CTO, Microsoft MVP & FastTrack Recognized Solution Architect
I am Albert-Jan Schot, CTO at Blis Digital, Microsoft MVP, and FastTrack Recognized Solution Architect focused on Microsoft 365, Azure, and AI agents. I help teams turn complex Microsoft Cloud challenges into practical architecture decisions and shipped outcomes.
Zuid Holland, Netherlands


