TodoToolset gives an agent a lightweight, structured task-tracking system. Instead of holding a plan only in its context window, the agent can write tasks down, track their status, and clean them up as it works — just like a developer using a todo list.
What it’s for
Large, multi-step tasks are hard for agents because every intermediate thought has to stay in the context window. When the agent works on step 7, it can easily lose track of steps 3–6.TodoToolset solves this by giving the agent a persistent scratchpad it can write to and read from:
- Break work into tasks — the agent calls
todo_addfor each discrete unit of work - Track progress — it calls
todo_updateto move tasks frompending→in_progress→done - Show the user what’s happening — a structured todo list is easier for users to inspect than raw agent reasoning
- Unblock sub-tasks —
dependsOnlets the agent model dependencies between tasks
Installation
TodoToolset is bundled inside @vibesjs/sdk.
Quick start
todo_add for each task, todo_update as work progresses, and todo_clear to remove completed items at the end.
Tools exposed
| Tool | What it does |
|---|---|
todo_add | Create a new todo. Assign an optional parent (for sub-tasks) and dependencies. |
todo_list | List all todos. Optionally filter by status to see only what’s pending or in-progress. |
todo_update | Mark a todo as pending, in_progress, done, or cancelled. |
todo_clear | Remove all done and cancelled todos to keep the list clean. |
todo_add
Creates a new todo in pending state and returns it as JSON, including the auto-assigned id.
todo_list
Returns a JSON array of todos. Without a filter it returns everything; with a filter it narrows by status.
todo_update
Updates the status of a single todo. Returns the updated todo as JSON.
todo_clear
Removes every todo whose status is done or cancelled. Takes no parameters. Useful at the end of a session to clean up.
Default storage: MemoryTodoStore
By default todos are stored in memory inside a Map. State is reset when the process exits, which is fine for single-session agents:
Persistent storage
Pass any object that implements theTodoStore interface to persist todos across sessions (database, Redis, file system, etc.):
With dependency injection
TodoToolset is generic over TDeps so its type signature aligns with any agent that uses dependency injection:
Types
Todo
TodoStatus
TodoStore
Want to build your own?
TodoToolset was ported from the pydantic-ai ecosystem using the port-pydantic-ai-community-plugins agent skill. Install the skill to get step-by-step guidance for porting any pydantic-ai plugin into a community toolset: