Todo List tools
Every tool in this module, with its full description, parameters, and return value. All of them require the module to be active first. See the Todo List overview for how to turn it on.
Core tools
Create, read, update, and delete entries. Every module has exactly these four.
todo_list_add_entryAdd a task to the user's Todo List module. Requires the module to be active — see create_database. task is the only required field: this stays a fast, freeform way to jot down a to-do.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| task | string | Yes | |
| status | todo | in_progress | waiting_on | completed | No | |
| important | boolean | No | Eisenhower matrix: does this matter for a real goal? |
| urgent | boolean | No | Eisenhower matrix: does this need attention soon? |
| due_date | string | No | ISO date, e.g. 2026-08-20 |
| project | string | No | Freeform project label. Independent of project_id. |
| project_id | string | No | Exact todo_list_projects.id (from todo_list_create_project or todo_list_list_projects) to group this todo under. Leave unset to keep the todo unassigned/ungrouped. |
| notes | string | No | |
| tags | string[] | No | Freeform labels. Normalized to trimmed, lowercased text on write. |
| recurrence | none | daily | weekly | biweekly | monthly | weekdays | No | Defaults to none. Only takes effect if the todo has a due_date when marked completed. |
| recurrence_interval | number | No | Multiplier for recurrence, e.g. 2 with weekly means every 2 weeks. Defaults to 1. |
Returns
The created entry as JSON, including its id.
todo_list_list_entriesList entries in the user's active Todo List module.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| limit | number | No | Max entries to return (default 100, max 500). |
Returns
Every entry in the active database, as a JSON array.
todo_list_update_entryUpdate fields on an existing Todo List entry.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| entryId | string | Yes | |
| task | string | No | |
| status | todo | in_progress | waiting_on | completed | No | |
| important | boolean | No | Eisenhower matrix: does this matter for a real goal? |
| urgent | boolean | No | Eisenhower matrix: does this need attention soon? |
| due_date | string | No | |
| project | string | No | Freeform project label. Independent of project_id. |
| project_id | string | No | Exact todo_list_projects.id to group this todo under. |
| notes | string | No | |
| tags | string[] | No | Freeform labels. Normalized to trimmed, lowercased text on write. |
| recurrence | none | daily | weekly | biweekly | monthly | weekdays | No | |
| recurrence_interval | number | No |
Returns
The updated or deleted entry as JSON. Returns an error if entryId does not belong to an entry in the active database.
todo_list_delete_entryDelete an entry from the user's active Todo List module.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| entryId | string | Yes |
Returns
The updated or deleted entry as JSON. Returns an error if entryId does not belong to an entry in the active database.
Purpose-built tools
Shortcuts and queries shaped around how Todo List is actually used, so your agent doesn't have to fetch every entry and filter them itself.
todo_list_attach_photoAttach a photo to an existing Todo List entry (replacing any photo already on it). If you have the image's raw bytes, pass photo_base64. If the user attached the image in a chat client (e.g. claude.ai), you cannot read its bytes: call this WITHOUT photo_base64 to get a one-time upload link, and give that link to the user so they can upload the photo themselves. The link expires in 30 minutes. Photos are stored privately; the returned viewPath is only viewable signed into the connacto web app as this user.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| entryId | string | Yes | ID of the Todo List entry to attach the photo to. |
| photo_base64 | string | No | The photo, base64-encoded (no data: URI prefix). Omit when you cannot read the image bytes — the tool then returns an upload link for the user instead. |
| photo_content_type | image/jpeg | image/png | image/webp | image/heic | No | MIME type of the photo, if photo_base64 is set. Defaults to image/jpeg. |
Returns
JSON with a private viewPath when photo_base64 was given, or an uploadUrl to hand the user when it was not.
todo_list_list_openList entries in the active Todo List module that are not completed, ordered by Eisenhower quadrant (important+urgent first) then due date. Optionally filter by project.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| project | string | No |
Returns
Matching entries as a JSON array, do-first quadrant first, then soonest due date.
todo_list_list_overdueList entries in the active Todo List module that are not completed and whose due date is before a given date (defaults to today).
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| asOf | string | No | ISO date, e.g. 2026-08-20. Defaults to today. |
Returns
Matching entries as a JSON array, soonest due date first.
todo_list_mark_completedMark a Todo List entry completed in one call, stamping completed_at. If the entry has recurrence set and a due_date, this also inserts the next occurrence (status todo, computed due_date, linked via seriesId) and returns it alongside the completed entry.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| entryId | string | Yes |
Returns
An object with the completed entry and the newly created next occurrence (or null if recurrence is none or there's no due_date, with a note explaining why).
todo_list_list_by_quadrantGroup open (not completed) entries in the active Todo List module into the four Eisenhower quadrants (do_first, schedule, delegate, eliminate, plus unclassified for untriaged todos), with counts.
Parameters
None. Call it with an empty object.
Returns
An object keyed by quadrant, each with a label, count, and items.
todo_list_status_summaryCounts of entries by status (todo, in_progress, waiting_on, completed) and how many open (not completed) entries are overdue, for the user's active Todo List module.
Parameters
None. Call it with an empty object.
Returns
An object with counts by status, total entry count, and overdueCount.
todo_list_list_by_tagList entries in the active Todo List module that have a given tag. Tag matching is case-insensitive (tags are stored lowercased).
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| tag | string | Yes |
Returns
Matching entries as a JSON array.
todo_list_list_tagsList every distinct tag currently used in the active Todo List module.
Parameters
None. Call it with an empty object.
Returns
A sorted JSON array of distinct tag strings.
todo_list_list_recurringList entries in the active Todo List module that have recurrence set (not "none").
Parameters
None. Call it with an empty object.
Returns
Matching entries as a JSON array.
todo_list_create_projectCreate a project (a grouping/list) in the user's active Todo List module. Attach todos to it via project_id on todo_list_add_entry or todo_list_update_entry.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| name | string | Yes | Name of the project, e.g. 'Kitchen Remodel'. |
| description | string | No | |
| sort_order | number | No | Lower sorts first when listing projects. Defaults to 0. |
Returns
The created project as JSON, including its id.
todo_list_list_projectsList projects in the user's active Todo List module, ordered by sort order then name. Excludes archived (is_active false) projects by default.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| include_inactive | boolean | No | Set true to also include archived projects. Defaults to false. |
Returns
Matching projects as a JSON array.
todo_list_update_projectUpdate fields on an existing Todo List project. Set is_active false to archive it without deleting it.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| projectId | string | Yes | ID of the todo_list_projects row to update. |
| name | string | No | |
| description | string | No | |
| sort_order | number | No | |
| is_active | boolean | No |
Returns
The updated project as JSON, or an error if projectId does not belong to the active database.
todo_list_delete_projectDelete a project from the user's active Todo List module. Todos that belonged to it are not deleted: their project_id is cleared, moving them into the unassigned bucket.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| projectId | string | Yes | ID of the todo_list_projects row to delete. |
Returns
The deleted project as JSON, or an error if projectId does not belong to the active database.
todo_list_by_projectAnswer 'what am I working on, organized' in one call: every project in the active Todo List module with its open/completed todo counts and items, plus an unassigned bucket for todos with no project_id.
Parameters
None. Call it with an empty object.
Returns
An object with `projects` (each project plus openCount, completedCount, items) and `unassigned` (same shape, no project attached).