Tasks from your coding agent
You spend an hour with your coding agent deciding what to do next. From 1.4.4, the last sentence of that hour can be: make tasks out of everything we said we would do. The agent files them into the Todo Backlog widget on your canvas, in the order you agreed, under the steps you named. You do not retype anything.
This works from Claude Code, Cursor, Antigravity, Hermes Agent, and any
IDE or agent that speaks MCP, through the same
@mnemosyne_os/mcp
bridge that lets them read your memory. The tool is called
mnemosyne_todo_add.
What it looks like
You, at the end of a session:
Make tasks out of everything we said we would do, in a new list called Sprint 12, grouped by step.
The agent calls the tool once and reads back:
Filed 9 tasks into "Sprint 12" (list created). They appear in the To-do widget in the order given, under their steps.
Open the widget (Ctrl+4, or the dock) and the tasks are there, with a header for each step where the step changes.
Before it works
- Mnemosyne OS 1.4.4 or later, window open
The backlog lives in the app window. The MCP alone, or the headless daemon, has no To-do to write to: an agent that calls the tool with the app closed is told to start the app, and nothing is written.
- The MCP connected
Follow Connect Claude to Mnemosyne OS. The tool shipped in
@mnemosyne_os/mcp1.7.0. The recommended config runs the package throughnpx -y, which fetches the current version; if your agent still lists 14 tools, restart it so the server is reloaded. - No permission dialog to expect
The MCP bridge is first-party and declares the
todo:writescope itself, so nothing pops up in the app. A cartridge you install has to ask you for that scope, like any other permission.
What to say
The tool refuses to guess, so a good request names three things:
- The list. Say in WIP, in my Blog list, or in a new list called X. Names match the labels you see in the widget, case does not matter, and the three original lists answer to their translated names too. If you name a list that does not exist and did not ask for it to be created, the agent is refused and handed the names that do exist, so its next call picks one instead of guessing. If you say nothing about the list, the tasks go to the first original list, WIP.
- The steps. Say grouped by step, or name them yourself. Each step becomes a header inside the list, drawn where the group changes. A step is a heading on the tasks, not a list of its own.
- The order. The order the agent sends is the order you get. Ask for execution order if the conversation did not settle it.
A colour for a new list is optional; the app picks the next swatch otherwise.
What the agent reads back
Every answer is a sentence the agent can act on, and every failure says that nothing was written.
| Situation | The sentence |
|---|---|
| Filed | Filed 9 tasks into "Sprint 12" (list created). They appear in the To-do widget in the order given, under their steps. |
| Unknown list | No list by that name. Lists that exist: "WIP", "Perso", "Other", "Blog". Pick one of them, or call again with create_list: true to make a new one — never assume a default. |
| Empty list name | The list name was empty. Name an existing list or pass create_list: true with a name. |
| Only blank tasks | Nothing to file: every task was blank after trimming. |
| App not open | The backlog lives in the Mnemosyne OS app window and no window is open. Start the app (Infinity Edition) and call again; the headless daemon cannot show a To-do. |
| No answer in 15 s | The app did not answer in time. Nothing was written. Is the canvas open? Try again once the window is up. |
| Write refused | The app refused the write — the backlog file was not readable yet, or the disk said no. Nothing was written; try again in a moment. |
Limits
- Add only. The agent can file tasks. It cannot complete, edit, move or delete them, and it cannot rename or delete a list. That stays yours.
- One list per call, up to 200 tasks, 300 characters per task, 80 per step name. Longer text is cut, blank lines are dropped.
- No duplicate check. Asking twice files twice.
- The whole plan is one write: either every task lands or none does. There is no half-imported plan to untangle.
The same door from the chat
The chat window has the same feature without an agent: the toolbox button Tasks from this conversation (Turn what this conversation decided to do into an ordered task plan. You review it, pick the list, and only then are the tasks created.). The model drafts a plan from the conversation, with memory recall switched off so nothing you never discussed sneaks in, and a dialog titled New tasks from this conversation shows it first: Nothing is created until you press Create. Edit, remove, pick a list. If the conversation decided nothing, it says so: Nothing to do was found in this conversation.
For cartridge builders
The same door is an SDK call, sdk.todo.add, on the local SDK server
(port 7799). It takes tasks (strings, or { text, group }), an optional
list, createList (default false) and color, and answers
{ ok, added, created, listLabel } or { ok: false, error, lists } with the
codes of the table above. It needs the todo:write scope in your manifest;
being granted vault writes does not hand an app the backlog.
Your backlog stays yours
The app's main process never writes the backlog file. The request is handed to the widget's own store, the only writer of that file, and the same guards apply as when you type a task yourself: nothing is written before the file has been read, and nothing is written if the window did not answer. What the agent files is exactly what you see.