Skip to main content
Glama
kydycode

Enhanced Todoist MCP Server Extended

todoist_create_label

Create custom labels in Todoist to organize tasks by category, priority, or context using name, color, favorites, and ordering options.

Instructions

Create a new label.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the label.
colorNoLabel color name or code (e.g., 'berry_red', '#FF0000') (optional).
isFavoriteNoWhether the label should be a favorite (optional).
orderNoThe order of the label in the list (optional).

Implementation Reference

  • Handler implementation for todoist_create_label tool. Validates input with isCreateLabelArgs type guard, calls todoistClient.addLabel(args), formats response using formatLabel helper, and handles errors.
    if (name === "todoist_create_label") { if (!isCreateLabelArgs(args)) { return { content: [{ type: "text", text: "Invalid arguments for create_label" }], isError: true }; } try { const label = await todoistClient.addLabel(args); return { content: [{ type: "text", text: `Label created:\n${formatLabel(label)}` }], isError: false }; } catch (error: any) { return { content: [{ type: "text", text: `Error creating label: ${error.message}` }], isError: true }; } }
  • Tool schema definition for todoist_create_label, including input schema with required 'name' and optional color, isFavorite, order.
    const CREATE_LABEL_TOOL: Tool = { name: "todoist_create_label", description: "Create a new label.", inputSchema: { type: "object", properties: { name: { type: "string", description: "The name of the label." }, color: { type: "string", description: "Label color name or code (e.g., 'berry_red', '#FF0000') (optional)." }, isFavorite: { type: "boolean", description: "Whether the label should be a favorite (optional)." }, order: { type: "number", description: "The order of the label in the list (optional)." } }, required: ["name"] } };
  • src/index.ts:1083-1121 (registration)
    Registration of all tools including todoist_create_label via CREATE_LABEL_TOOL in the ListToolsRequestSchema handler's tools array.
    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 isCreateLabelArgs used to validate input arguments for the todoist_create_label handler.
    function isCreateLabelArgs(args: unknown): args is { name: string; color?: string; isFavorite?: boolean; order?: number; } { return ( typeof args === "object" && args !== null && "name" in args && typeof (args as { name: string }).name === "string" ); }
  • Helper function formatLabel used to format the output of created/updated labels in responses.
    function formatLabel(label: any): string { return `- ${label.name} (ID: ${label.id})${label.color ? `\n Color: ${label.color}` : ''}${label.isFavorite ? `\n Favorite: Yes` : ''}${label.order ? `\n Order: ${label.order}`: ''}`; }

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