todoist_tasks
Manage Todoist tasks with full CRUD operations - create, read, update, delete, complete, and query tasks using filters like priority, due dates, and labels.
Instructions
Comprehensive task management for Todoist - create, read, update, delete, and query tasks with full CRUD operations and batch support
Input Schema
Name | Required | Description | Default |
---|---|---|---|
action | Yes | Action to perform | |
assignee_id | No | Assignee user ID | |
batch_commands | No | Batch commands (for batch action) | |
content | No | Task content/title | |
cursor | No | Pagination cursor for next page (for list) | |
deadline | No | Task completion deadline in YYYY-MM-DD format (e.g., 2025-10-15). When work must be done by, distinct from due_date (when work should start). Use null to remove deadline. Past dates allowed (triggers reminder). Recurring tasks trigger warning (deadline stays static). | |
description | No | Task description | |
due_date | No | Due date (YYYY-MM-DD) | |
due_datetime | No | Due datetime (ISO 8601) | |
due_string | No | Natural language due date | |
label_id | No | Filter by label ID (for list) | |
labels | No | Label names (not IDs) - e.g., ["Work", "Important"]. Get available label names from todoist_labels tool. | |
lang | No | Language code for query parsing (for list) | |
limit | No | Number of results per page, max 200 (for list) | |
parent_id | No | Parent task ID | |
priority | No | Priority (1-4) | |
project_id | No | Project ID (for create/update/list actions). When listing tasks, use this to filter by project including Inbox. Get project IDs from todoist_projects tool. | |
query | No | Filter query string (for list). Examples: "today" (due today), "tomorrow", "p1" (priority 1), "p2" (priority 2), "overdue", "no date", "#ProjectName" (tasks in project), "@LabelName" (tasks with label), "p1 & today" (high priority + due today). For content search use "search:" prefix: "search: meeting" (tasks containing "meeting"), "search: email & today" (tasks with "email" due today). For Inbox tasks, use project_id parameter instead of query. | |
section_id | No | Section ID | |
task_id | No | Task ID (required for get/update/delete/complete/uncomplete) |
Input Schema (JSON Schema)
{
"properties": {
"action": {
"description": "Action to perform",
"enum": [
"create",
"get",
"update",
"delete",
"list",
"complete",
"uncomplete",
"batch"
],
"type": "string"
},
"assignee_id": {
"description": "Assignee user ID",
"type": "string"
},
"batch_commands": {
"description": "Batch commands (for batch action)",
"items": {
"type": "object"
},
"type": "array"
},
"content": {
"description": "Task content/title",
"type": "string"
},
"cursor": {
"description": "Pagination cursor for next page (for list)",
"type": "string"
},
"deadline": {
"description": "Task completion deadline in YYYY-MM-DD format (e.g., 2025-10-15). When work must be done by, distinct from due_date (when work should start). Use null to remove deadline. Past dates allowed (triggers reminder). Recurring tasks trigger warning (deadline stays static).",
"type": "string"
},
"description": {
"description": "Task description",
"type": "string"
},
"due_date": {
"description": "Due date (YYYY-MM-DD)",
"type": "string"
},
"due_datetime": {
"description": "Due datetime (ISO 8601)",
"type": "string"
},
"due_string": {
"description": "Natural language due date",
"type": "string"
},
"label_id": {
"description": "Filter by label ID (for list)",
"type": "string"
},
"labels": {
"description": "Label names (not IDs) - e.g., [\"Work\", \"Important\"]. Get available label names from todoist_labels tool.",
"items": {
"type": "string"
},
"type": "array"
},
"lang": {
"description": "Language code for query parsing (for list)",
"type": "string"
},
"limit": {
"description": "Number of results per page, max 200 (for list)",
"type": "number"
},
"parent_id": {
"description": "Parent task ID",
"type": "string"
},
"priority": {
"description": "Priority (1-4)",
"type": "number"
},
"project_id": {
"description": "Project ID (for create/update/list actions). When listing tasks, use this to filter by project including Inbox. Get project IDs from todoist_projects tool.",
"type": "string"
},
"query": {
"description": "Filter query string (for list). Examples: \"today\" (due today), \"tomorrow\", \"p1\" (priority 1), \"p2\" (priority 2), \"overdue\", \"no date\", \"#ProjectName\" (tasks in project), \"@LabelName\" (tasks with label), \"p1 & today\" (high priority + due today). For content search use \"search:\" prefix: \"search: meeting\" (tasks containing \"meeting\"), \"search: email & today\" (tasks with \"email\" due today). For Inbox tasks, use project_id parameter instead of query.",
"type": "string"
},
"section_id": {
"description": "Section ID",
"type": "string"
},
"task_id": {
"description": "Task ID (required for get/update/delete/complete/uncomplete)",
"type": "string"
}
},
"required": [
"action"
],
"type": "object"
}