askill
todozi

todoziSafety 90Repository

Todozi Eisenhower matrix API client + LangChain tools. Create matrices, tasks, goals, notes; list/search/update; bulk operations; webhooks. Categories: do, done, dream, delegate, defer, dont.

0 stars
1.2k downloads
Updated 2/21/2026

Package Files

Loading files...
SKILL.md

Todozi

Quick Start

As SDK:

from skills.todozi.scripts.todozi import TodoziClient

client = TodoziClient(api_key="your_key")
matrices = await client.list_matrices()
task = await client.create_task("Build feature", priority="high")
await client.complete_item(task.id)

As LangChain Tools:

from skills.todozi.scripts.todozi import TODOZI_TOOLS
# Add to agent tools list

SDK Overview

ClassPurpose
TodoziClientAsync API client
TodoziTaskTask dataclass
TodoziMatrixMatrix dataclass
TodoziStatsStats dataclass

Environment

export TODOZI_API_KEY=your_key
export TODOZI_BASE=https://todozi.com/api  # optional, default provided

Client Methods

Matrices

# List all matrices
matrices = await client.list_matrices()

# Create matrix
matrix = await client.create_matrix("Work", category="do")

# Get matrix
matrix = await client.get_matrix("matrix_id")

# Delete matrix
await client.delete_matrix("matrix_id")

Tasks / Goals / Notes

# Create task
task = await client.create_task(
    title="Review PR",
    priority="high",
    due_date="2026-02-01",
    description="Check the new feature",
    tags=["pr", "review"],
)

# Create goal
goal = await client.create_goal("Ship v2", priority="high")

# Create note
note = await client.create_note("Remember to call Mom")

# Get item
item = await client.get_item("item_id")

# Update item
updated = await client.update_item("item_id", {"title": "New title", "priority": "low"})

# Complete item
await client.complete_item("item_id")

# Delete item
await client.delete_item("item_id")

Lists

# List tasks (with filters)
tasks = await client.list_tasks(status="todo", priority="high")

# List goals
goals = await client.list_goals()

# List notes
notes = await client.list_notes()

# List everything
all_items = await client.list_all()

Search

Searches only: title, description, tags (NOT content)

results = await client.search(
    query="pr",
    type_="task",          # task, goal, or note
    status="pending",
    priority="high",
    category="do",
    tags=["review"],
    limit=10,
)

Bulk Operations

# Update multiple
await client.bulk_update([
    {"id": "id1", "title": "Updated"},
    {"id": "id2", "priority": "low"},
])

# Complete multiple
await client.bulk_complete(["id1", "id2"])

# Delete multiple
await client.bulk_delete(["id1", "id2"])

Webhooks

# Create webhook
webhook = await client.create_webhook(
    url="https://yoururl.com/todozi",
    events=["item.created", "item.completed"],
)

# List webhooks
webhooks = await client.list_webhooks()

# Update webhook
await client.update_webhook(webhook_id, url, ["*"])

# Delete webhook
await client.delete_webhook(webhook_id)

System

# Stats
stats = await client.get_stats()

# Health check
health = await client.health_check()

# Validate API key
valid = await client.validate_api_key()

# Register (get API key)
keys = await client.register(webhook="https://url.com")

LangChain Tools

The skill provides @tool decorated functions for agent integration:

from skills.todozi.scripts.todozi import TODOZI_TOOLS

# Available tools:
# - todozi_create_task(title, priority, due_date, description, thread_id, tags)
# - todozi_list_tasks(status, priority, thread_id, limit)
# - todozi_complete_task(task_id)
# - todozi_get_stats()
# - todozi_search(query, type_, status, priority, limit)
# - todozi_list_matrices()

Categories

CategoryDescription
doDo now (urgent + important)
delegateDelegate (urgent + not important)
deferDefer (not urgent + important)
doneCompleted items
dreamGoals/dreams (not urgent + not important)
dontDon't do (neither)

Common Patterns

Auto-create default matrix:

task = await client.create_task("My task")  # Creates "Default" matrix if needed

Get stats with completion rate:

stats = await client.get_stats()
rate = stats.completed_tasks / stats.total_tasks * 100 if stats.total_tasks > 0 else 0

Search with multiple filters:

results = await client.search("feature", type_="task", status="pending", priority="high")

Complete multiple tasks:

tasks = await client.list_tasks(status="todo")
ids = [t.id for t in tasks[:5]]
await client.bulk_complete(ids)

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

82/100Analyzed 2/24/2026

Well-structured SDK documentation for Todozi API client with LangChain tools. Provides comprehensive coverage of matrices, tasks, goals, notes, search, bulk operations, webhooks, and system methods. Features clear code examples, organized tables, and common usage patterns. Located in dedicated skills folder suggesting external focus. Minor gaps include missing error handling details and response schemas. High reusability as both standalone SDK and LangChain integration.

90
85
85
72
82

Metadata

Licenseunknown
Version-
Updated2/21/2026
Publisherdexhunter

Tags

apici-cd