todoist_test_all_features
Run comprehensive tests to verify Todoist MCP functionality, including task and project management features, with basic or enhanced testing modes.
Instructions
Run comprehensive tests on all Todoist MCP features to verify functionality
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Test mode: 'basic' for read-only API tests, 'enhanced' for full CRUD testing (default: basic) | basic |
Implementation Reference
- src/handlers/test-handlers.ts:269-292 (handler)Primary handler function that executes the todoist_test_all_features tool. Runs basic read-only tests on all features or delegates to enhanced tests based on input mode.export async function handleTestAllFeatures( todoistClient: TodoistApi, args?: { mode?: "basic" | "enhanced" } ): Promise<ComprehensiveTestResult | unknown> { // Use enhanced testing if requested if (args?.mode === "enhanced") { const { handleTestAllFeaturesEnhanced } = await import( "./test-handlers-enhanced/index.js" ); return handleTestAllFeaturesEnhanced(todoistClient); } // Default to basic testing const results: FeatureTestResult[] = []; // Test each feature results.push(await testTaskOperations(todoistClient)); results.push(await testProjectOperations(todoistClient)); results.push(await testLabelOperations(todoistClient)); results.push(await testSectionOperations(todoistClient)); results.push(await testCommentOperations(todoistClient)); return formatTestResults(results); }
- src/tools/test-tools.ts:14-30 (schema)Tool definition and input schema specifying the optional 'mode' parameter for basic or enhanced testing.export const TEST_ALL_FEATURES_TOOL: Tool = { name: "todoist_test_all_features", description: "Run comprehensive tests on all Todoist MCP features to verify functionality", inputSchema: { type: "object", properties: { mode: { type: "string", enum: ["basic", "enhanced"], description: "Test mode: 'basic' for read-only API tests, 'enhanced' for full CRUD testing (default: basic)", default: "basic", }, }, }, };
- src/index.ts:355-361 (registration)Dispatching registration in the main CallToolRequestSchema handler switch statement, invoking the specific handler.case "todoist_test_all_features": const featuresResult = await handleTestAllFeatures( apiClient, args as { mode?: "basic" | "enhanced" } ); result = JSON.stringify(featuresResult, null, 2); break;
- src/tools/index.ts:62-69 (registration)Tool registration by including TEST_TOOLS (containing todoist_test_all_features) in the ALL_TOOLS array exported for ListToolsRequestSchema.export const ALL_TOOLS = [ ...TASK_TOOLS, ...PROJECT_TOOLS, ...COMMENT_TOOLS, ...LABEL_TOOLS, ...SUBTASK_TOOLS, ...TEST_TOOLS, ];
- Enhanced mode handler for comprehensive CRUD tests, called dynamically by the primary handler when mode='enhanced'. Orchestrates multiple test suites.export async function handleTestAllFeaturesEnhanced( todoistClient: TodoistApi ): Promise<ComprehensiveTestReport> { const testStartTime = Date.now(); const suites: TestSuite[] = []; // Run all test suites suites.push(await testTaskOperations(todoistClient)); suites.push(await testSubtaskOperations(todoistClient)); suites.push(await testLabelOperations(todoistClient)); suites.push(await testBulkOperations(todoistClient)); // Calculate totals const totalTests = suites.reduce((sum, suite) => sum + suite.tests.length, 0); const passed = suites.reduce((sum, suite) => sum + suite.passed, 0); const failed = suites.reduce((sum, suite) => sum + suite.failed, 0); const skipped = suites.reduce((sum, suite) => sum + suite.skipped, 0); const totalResponseTime = suites.reduce( (sum, suite) => sum + suite.totalTime, 0 ); return { overallStatus: failed === 0 ? "success" : passed > 0 ? "partial" : "error", totalTests, passed, failed, skipped, suites, totalResponseTime, timestamp: new Date().toISOString(), testDuration: Date.now() - testStartTime, }; }