todoist_update_comment
Modify existing comments in Todoist by specifying their ID and providing updated content using the Enhanced Todoist MCP Server Extended integration.
Instructions
Update an existing comment by its ID
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| commentId | Yes | The ID of the comment to update | |
| content | Yes | New content/text for the comment |
Implementation Reference
- src/index.ts:1782-1796 (handler)Executes the tool by validating arguments with isUpdateCommentArgs, extracting commentId and content, calling todoistClient.updateComment, formatting the result with formatComment, and returning success or error response.if (name === "todoist_update_comment") { if (!isUpdateCommentArgs(args)) { return { content: [{ type: "text", text: "Invalid arguments for update_comment" }], isError: true }; } try { const { commentId, ...updateArgs } = args; const updatedComment = await todoistClient.updateComment(commentId, updateArgs); return { content: [{ type: "text", text: `Comment updated:\n${formatComment(updatedComment)}` }], isError: false }; } catch (error: any) { return { content: [{ type: "text", text: `Error updating comment: ${error.message}` }], isError: true }; } }
- src/index.ts:657-674 (schema)Defines the Tool object with name, description, and inputSchema specifying required commentId and content parameters.const UPDATE_COMMENT_TOOL: Tool = { name: "todoist_update_comment", description: "Update an existing comment by its ID", inputSchema: { type: "object", properties: { commentId: { type: "string", description: "The ID of the comment to update" }, content: { type: "string", description: "New content/text for the comment" } }, required: ["commentId", "content"] } };
- src/index.ts:1083-1121 (registration)Registers the UPDATE_COMMENT_TOOL in the list of available tools returned by the ListToolsRequestSchema handler.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, ], }));
- src/index.ts:1068-1080 (helper)Type guard function to validate input arguments for the todoist_update_comment tool.function isUpdateCommentArgs(args: unknown): args is { commentId: string; content: string; } { return ( typeof args === "object" && args !== null && "commentId" in args && "content" in args && typeof (args as { commentId: string; content: string }).commentId === "string" && typeof (args as { commentId: string; content: string }).content === "string" ); }
- src/index.ts:732-742 (helper)Helper function to format comment details for output in the tool response.function formatComment(comment: any): string { let commentDetails = `- ID: ${comment.id}\n Content: ${comment.content}`; if (comment.postedAt) commentDetails += `\n Posted At: ${comment.postedAt}`; if (comment.taskId) commentDetails += `\n Task ID: ${comment.taskId}`; if (comment.projectId) commentDetails += `\n Project ID: ${comment.projectId}`; if (comment.attachment) { commentDetails += `\n Attachment: ${comment.attachment.fileName || 'File'} (${comment.attachment.fileType})`; if (comment.attachment.fileUrl) commentDetails += `\n File URL: ${comment.attachment.fileUrl}`; } return commentDetails; }