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
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor for next page (optional). | |
| limit | No | Maximum number of sections to return (default: 50) (optional). | |
| projectId | No | Filter sections by project ID (optional). |
Implementation Reference
- src/index.ts:1454-1479 (handler)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, }; }
- src/index.ts:479-498 (schema)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, ], }));
- src/index.ts:864-871 (helper)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; }