Skip to main content
Glama
kydycode

Enhanced Todoist MCP Server Extended

todoist_get_sections

Retrieve sections from Todoist projects, filter by project ID, and manage pagination with cursor and limit options for efficient navigation.

Instructions

Get all sections, or sections for a specific project. Supports pagination.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor for next page (optional).
limitNoMaximum number of sections to return (default: 50) (optional).
projectIdNoFilter sections by project ID (optional).

Implementation Reference

  • Handler implementation for todoist_get_sections tool within the CallToolRequestSchema request handler. Fetches sections using todoistClient.getSections with optional projectId, cursor, limit params, formats response, and returns structured content.
    if (name === "todoist_get_sections") { if (!isSectionArgs(args)) { throw new Error("Invalid arguments for todoist_get_sections"); } const params: any = {}; if (args.projectId) params.projectId = args.projectId; if (args.cursor) params.cursor = args.cursor; if (args.limit) params.limit = args.limit; const sectionsResponse = await todoistClient.getSections(params); const sectionList = sectionsResponse.results?.map((section: any) => `- ${section.name} (ID: ${section.id}, Project ID: ${section.projectId})` ).join('\n') || 'No sections found'; const nextCursorMessage = sectionsResponse.nextCursor ? `\n\nNext cursor for more sections: ${sectionsResponse.nextCursor}` : ''; return { content: [{ type: "text", text: `Sections:\n${sectionList}${nextCursorMessage}` }], isError: false, }; }
  • Tool schema definition for todoist_get_sections, including inputSchema for parameters: projectId, cursor, limit.
    name: "todoist_get_sections", description: "Get all sections, or sections for a specific project. Supports pagination.", inputSchema: { type: "object", properties: { projectId: { type: "string", description: "Filter sections by project ID (optional)." }, cursor: { type: "string", description: "Pagination cursor for next page (optional)." }, limit: { type: "number", description: "Maximum number of sections to return (default: 50) (optional)." } } } };
  • src/index.ts:1083-1121 (registration)
    Registration of todoist_get_sections tool (as GET_SECTIONS_TOOL) in the list of tools returned by 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, ], }));
  • Type guard helper function isSectionArgs used in the handler to validate input arguments for todoist_get_sections.
    function isSectionArgs(args: unknown): args is { projectId?: string; cursor?: string; limit?: number; } { // Allows empty object or object with optional projectId, cursor, limit return typeof args === "object" && args !== null; }

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