Skip to main content

Todo Toolset for Pydantic AI

Task Planning and Tracking for AI Agents

PyPI version Python 3.10+ License: MIT CI Pydantic AI

Capabilities API — plug-and-play with one line  •  Subtasks & Dependencies — hierarchical task management  •  PostgreSQL Storage — persistent multi-tenant tasks  •  Event System — webhooks and callbacks


Todo Toolset for Pydantic AI adds task planning capabilities to any Pydantic AI agent. Your agent can create, track, and complete tasks with full support for subtasks, dependencies, and persistent storage.

Full framework? Check out Pydantic Deep Agents — complete agent framework with planning, filesystem, subagents, and skills.

Quick Start

The recommended way to add todo support is via the Capabilities API — one import, one line:

from pydantic_ai import Agent
from pydantic_ai_todo import TodoCapability

agent = Agent("openai:gpt-4.1", capabilities=[TodoCapability()])
result = await agent.run("Create a todo list for building a REST API")

TodoCapability automatically:

  • Registers all todo tools (add_todo, read_todos, write_todos, update_todo_status, remove_todo)
  • Injects a system prompt section describing the todo workflow (static by default, so todo updates never invalidate the provider's prompt cache; pass include_current_todos=True to embed the live task list instead)
  • Creates in-memory storage (or use your own)

With Storage Access

from pydantic_ai_todo import TodoCapability, TodoStorage

storage = TodoStorage()
agent = Agent("openai:gpt-4.1", capabilities=[TodoCapability(storage=storage)])

result = await agent.run("Plan a blog application")

# Access todos directly
for todo in storage.todos:
    print(f"[{todo.status}] {todo.content}")

With Subtasks and Dependencies

agent = Agent(
    "openai:gpt-4.1",
    capabilities=[TodoCapability(enable_subtasks=True)],
)

Enables add_subtask, set_dependency, and get_available_tasks tools with automatic cycle detection.

YAML Agent Definition

model: openai:gpt-4.1
instructions: "You are a project planner."
capabilities:
  - TodoCapability:
      enable_subtasks: true
agent = Agent.from_file("agent.yaml")

Installation

pip install pydantic-ai-todo

Or with uv:

uv add pydantic-ai-todo

Alternative: Toolset API

If you prefer the lower-level toolset approach (without capabilities):

from pydantic_ai import Agent
from pydantic_ai_todo import create_todo_toolset, get_todo_system_prompt, TodoStorage

storage = TodoStorage()
toolset = create_todo_toolset(storage=storage)

agent = Agent(
    "openai:gpt-4.1",
    toolsets=[toolset],
    system_prompt=get_todo_system_prompt(storage),
)

Note: With the toolset API, you need to wire get_todo_system_prompt() manually. TodoCapability handles this automatically.

Available Tools

Tool Description
read_todos List all tasks (supports hierarchical view)
write_todos Bulk write/update tasks
add_todo Add a single task
update_todo_status Update task status by ID
remove_todo Delete task by ID
add_subtask* Create child task
set_dependency* Link tasks with dependency
get_available_tasks* List tasks ready to work on

*Available when enable_subtasks=True

Storage Backends

In-Memory (Default)

from pydantic_ai_todo import TodoCapability, TodoStorage

storage = TodoStorage()
agent = Agent("openai:gpt-4.1", capabilities=[TodoCapability(storage=storage)])

Async Memory

from pydantic_ai_todo import TodoCapability, AsyncMemoryStorage

storage = AsyncMemoryStorage()
agent = Agent("openai:gpt-4.1", capabilities=[TodoCapability(async_storage=storage)])

PostgreSQL

Requires the postgres extra: pip install 'pydantic-ai-todo[postgres]'

from pydantic_ai_todo import TodoCapability, create_storage

storage = create_storage(
    "postgres",
    connection_string="postgresql://user:pass@localhost/db",
    session_id="user-123",  # Multi-tenancy
)
await storage.initialize()

agent = Agent("openai:gpt-4.1", capabilities=[TodoCapability(async_storage=storage)])

Event System

React to task changes:

from pydantic_ai_todo import TodoCapability, TodoEventEmitter, AsyncMemoryStorage

emitter = TodoEventEmitter()

@emitter.on_completed
async def notify_completed(event):
    print(f"Task done: {event.todo.content}")

@emitter.on_created
async def notify_created(event):
    print(f"New task: {event.todo.content}")

storage = AsyncMemoryStorage(event_emitter=emitter)
agent = Agent("openai:gpt-4.1", capabilities=[TodoCapability(async_storage=storage)])

API Reference

Capability

Class Description
TodoCapability Pydantic AI capability — recommended way to add todo support

Factory Functions

Function Description
create_todo_toolset() Create standalone toolset (lower-level API)
create_storage(backend, **options) Factory for storage backends
get_todo_system_prompt() Generate system prompt with current todos

Models

Model Description
Todo Task with id, content, status, parent_id, depends_on
TodoItem Input model for write_todos
TodoEvent Event data with type, todo, timestamp
TodoEventType CREATED, UPDATED, STATUS_CHANGED, DELETED, COMPLETED

Storage Classes

Class Description
TodoStorage Sync in-memory storage
AsyncMemoryStorage Async in-memory with CRUD
AsyncPostgresStorage PostgreSQL with multi-tenancy
TodoEventEmitter Event emitter for callbacks

Related Projects

Package Description
Pydantic Deep Agents Full agent framework (uses this library)
pydantic-ai-backend File storage and Docker sandbox
subagents-pydantic-ai Multi-agent orchestration
summarization-pydantic-ai Context management
pydantic-ai The foundation — agent framework by Pydantic

Contributing

git clone https://github.com/vstorm-co/pydantic-ai-todo.git
cd pydantic-ai-todo
make install
make test  # 100% coverage required

License

MIT — see LICENSE


Need help implementing this in your company?

We're Vstorm — an Applied Agentic AI Engineering Consultancy
with 30+ production AI agent implementations.

Talk to us



Made with ❤️ by Vstorm

Release files for pydantic-ai-todo 0.2.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydantic-ai-todo 0.2.7
File Size Uploaded
pydantic_ai_todo-0.2.7.tar.gz 122.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pydantic-ai-todo 0.2.7
File Interpreter ABI Platform
pydantic_ai_todo-0.2.7-py3-none-any.whl Python 3 none any Details

Total release size: 149.9 kB

Release files / pydantic_ai_todo-0.2.7.tar.gz

Download URL pydantic_ai_todo-0.2.7.tar.gz
Size 122.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8e162d6d5532975d912368fedb8aa1364c8b1894cc4ed7000c144c94dfdebc18
BLAKE2b-256 checksum
How to use checksums
37cf2b18e86fbf82a6256bc1f1ca1f0f5e1764089bf164cd3b565825cce414a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.

Transparency log

Release files / pydantic_ai_todo-0.2.7-py3-none-any.whl

Download URL pydantic_ai_todo-0.2.7-py3-none-any.whl
Size 27.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
889d67e0806439b2dd2496ce0a183802387dee859b006d46e14c86c25ea7f0da
BLAKE2b-256 checksum
How to use checksums
4bf5dbe1921b4f0419b86b1562bbe798a79c10933af75e2ba4d5c8cdc33bc610
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.7 This release

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page