Skip to main content
Glama
kydycode

Enhanced Todoist MCP Server Extended

todoist_update_task

Modify an existing Todoist task by updating its content, description, due date, priority, or labels using the task ID.

Instructions

Update an existing task by its ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe ID of the task to update
contentNoNew content/title for the task (optional)
descriptionNoNew description for the task (optional)
dueStringNoNew due date in natural language (optional)
priorityNoNew priority level from 1 (normal) to 4 (urgent) (optional)
labelsNoNew array of label names (optional)

Implementation Reference

  • Handler logic for executing todoist_update_task: validates args with isUpdateTaskArgs, prepares updateData, calls todoistClient.updateTask(taskId, updateData), formats and returns response.
    if (name === "todoist_update_task") { if (!isUpdateTaskArgs(args)) { throw new Error("Invalid arguments for todoist_update_task"); } const updateData: any = {}; if (args.content) updateData.content = args.content; if (args.description) updateData.description = args.description; if (args.dueString) updateData.dueString = args.dueString; if (args.priority) updateData.priority = args.priority; if (args.labels) updateData.labels = args.labels; const updatedTask = await todoistClient.updateTask(args.taskId, updateData); return { content: [{ type: "text", text: `Task updated successfully:\nID: ${updatedTask.id}\n${formatTask(updatedTask)}` }], isError: false, }; }
  • Tool schema definition including name, description, and inputSchema for validating arguments to todoist_update_task.
    const UPDATE_TASK_TOOL: Tool = { name: "todoist_update_task", description: "Update an existing task by its ID", inputSchema: { type: "object", properties: { taskId: { type: "string", description: "The ID of the task to update" }, content: { type: "string", description: "New content/title for the task (optional)" }, description: { type: "string", description: "New description for the task (optional)" }, dueString: { type: "string", description: "New due date in natural language (optional)" }, priority: { type: "number", description: "New priority level from 1 (normal) to 4 (urgent) (optional)", enum: [1, 2, 3, 4] }, labels: { type: "array", items: { type: "string" }, description: "New array of label names (optional)" } }, required: ["taskId"] } };
  • src/index.ts:1083-1121 (registration)
    Registration of all tools including UPDATE_TASK_TOOL in the ListToolsRequestHandler, making todoist_update_task available.
    server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ // Task tools CREATE_TASK_TOOL, QUICK_ADD_TASK_TOOL, GET_TASKS_TOOL, GET_TASK_TOOL, UPDATE_TASK_TOOL, DELETE_TASK_TOOL, COMPLETE_TASK_TOOL, REOPEN_TASK_TOOL, SEARCH_TASKS_TOOL, MOVE_TASK_TOOL, BULK_MOVE_TASKS_TOOL, // Project tools GET_PROJECTS_TOOL, GET_PROJECT_TOOL, CREATE_PROJECT_TOOL, UPDATE_PROJECT_TOOL, DELETE_PROJECT_TOOL, // Section tools GET_SECTIONS_TOOL, CREATE_SECTION_TOOL, UPDATE_SECTION_TOOL, DELETE_SECTION_TOOL, // Label tools CREATE_LABEL_TOOL, GET_LABEL_TOOL, GET_LABELS_TOOL, UPDATE_LABEL_TOOL, DELETE_LABEL_TOOL, // Comment tools CREATE_COMMENT_TOOL, GET_COMMENT_TOOL, GET_COMMENTS_TOOL, UPDATE_COMMENT_TOOL, DELETE_COMMENT_TOOL, ], }));
  • Type guard helper function used to validate arguments for todoist_update_task before execution.
    function isUpdateTaskArgs(args: unknown): args is { taskId: string; content?: string; description?: string; dueString?: string; priority?: number; labels?: string[]; } { return ( typeof args === "object" && args !== null && "taskId" in args && typeof (args as { taskId: string }).taskId === "string" ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kydycode/todoist-mcp-server-ext'

If you have feedback or need assistance with the MCP directory API, please join our Discord server