start_task
Initiate tasks in Buildable projects by specifying a task ID, approach, duration, and notes. Integrates with AI assistants for efficient task management using the Model Context Protocol (MCP).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| approach | No | Optional approach or strategy for the task | |
| estimated_duration | No | Estimated duration in minutes | |
| notes | No | Optional notes about the task | |
| task_id | Yes | The ID of the task to start |
Implementation Reference
- src/cli.ts:72-91 (handler)MCP tool handler for 'start_task' that validates inputs, calls the BuildableMCPClient.startTask method, formats the response as MCP content, and handles client connection errors.async ({ task_id, approach, estimated_duration, notes }) => { if (!this.client) { throw new Error('Not connected to Buildable API'); } const result = await this.client.startTask(task_id, { approach, estimated_duration, notes, }); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
- src/cli.ts:58-92 (registration)Registration of the 'start_task' MCP tool on the McpServer instance, including name, Zod input schema, and handler function.this.server.tool( 'start_task', { task_id: z.string().describe('The ID of the task to start'), approach: z .string() .optional() .describe('Optional approach or strategy for the task'), estimated_duration: z .number() .optional() .describe('Estimated duration in minutes'), notes: z.string().optional().describe('Optional notes about the task'), }, async ({ task_id, approach, estimated_duration, notes }) => { if (!this.client) { throw new Error('Not connected to Buildable API'); } const result = await this.client.startTask(task_id, { approach, estimated_duration, notes, }); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } );
- src/cli.ts:60-71 (schema)Zod schema defining input parameters for the 'start_task' tool: required task_id and optional approach, estimated_duration, notes.{ task_id: z.string().describe('The ID of the task to start'), approach: z .string() .optional() .describe('Optional approach or strategy for the task'), estimated_duration: z .number() .optional() .describe('Estimated duration in minutes'), notes: z.string().optional().describe('Optional notes about the task'), },
- src/client.ts:122-150 (helper)BuildableMCPClient.startTask helper method that sends POST request to the Buildable API /tasks/{taskId}/start endpoint to start the task, updates connection status, and handles errors.async startTask( taskId: string, options: StartTaskOptions = {} ): Promise<StartTaskResponse> { this.log('debug', `Starting task ${taskId}...`); try { const response = await this.makeRequest<StartTaskResponse>( 'POST', `/tasks/${taskId}/start`, { ai_assistant_id: this.aiAssistantId, estimated_time_minutes: options.estimated_duration, notes: options.notes, approach: options.approach, } ); this.log('info', `Successfully started task ${taskId}`); // Update connection status to 'working' await this.updateConnectionStatus('working', taskId); return response.data!; } catch (error) { this.log('error', `Failed to start task ${taskId}:`, error); throw error; } }
- src/types.ts:78-95 (schema)TypeScript interfaces defining StartTaskOptions (input options for startTask) and StartTaskResponse (expected API response structure).export interface StartTaskOptions { approach?: string; estimated_duration?: number; notes?: string; } export interface StartTaskResponse { success: boolean; task_id: string; message: string; started_at: string; guidance?: { step_by_step: string[]; key_considerations: string[]; testing_requirements: string[]; documentation_needs: string[]; }; }