update_progress
Track and update task progress on Buildable projects by providing task ID, progress percentage, status updates, completed steps, current step, challenges, modified files, time spent, and additional notes.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| challenges | No | Any challenges or blockers encountered | |
| completed_steps | No | List of completed steps | |
| current_step | No | Current step being worked on | |
| files_modified | No | List of files that were modified | |
| notes | No | Additional notes | |
| progress | Yes | Progress percentage (0-100) | |
| status_update | Yes | Brief status update message | |
| task_id | Yes | The ID of the task being updated | |
| time_spent | No | Time spent in minutes |
Implementation Reference
- src/cli.ts:95-159 (registration)MCP tool registration for 'update_progress', including Zod input schema and handler that delegates to client.updateProgressthis.server.tool( 'update_progress', { task_id: z.string().describe('The ID of the task being updated'), progress: z .number() .min(0) .max(100) .describe('Progress percentage (0-100)'), status_update: z.string().describe('Brief status update message'), completed_steps: z .array(z.string()) .optional() .describe('List of completed steps'), current_step: z .string() .optional() .describe('Current step being worked on'), challenges: z .array(z.string()) .optional() .describe('Any challenges or blockers encountered'), files_modified: z .array(z.string()) .optional() .describe('List of files that were modified'), time_spent: z.number().optional().describe('Time spent in minutes'), notes: z.string().optional().describe('Additional notes'), }, async ({ task_id, progress, status_update, completed_steps, current_step, challenges, files_modified, time_spent, notes, }) => { if (!this.client) { throw new Error('Not connected to Buildable API'); } const result = await this.client.updateProgress(task_id, { progress, status_update, completed_steps, current_step, challenges, files_modified, time_spent, notes, }); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } );
- src/client.ts:155-190 (handler)Core handler function that executes the progress update by making a POST request to the Buildable API endpoint /tasks/{taskId}/progressasync updateProgress( taskId: string, progress: ProgressUpdate ): Promise<ProgressResponse> { this.log( 'debug', `Updating progress for task ${taskId}: ${progress.progress}%` ); try { const response = await this.makeRequest<ProgressResponse>( 'POST', `/tasks/${taskId}/progress`, { completion_percentage: progress.progress, files_created: progress.files_modified, files_modified: progress.files_modified, notes: progress.notes, blockers: progress.challenges, time_spent_minutes: progress.time_spent, current_step: progress.current_step, completed_steps: progress.completed_steps, } ); this.log('info', `Progress updated: ${progress.progress}% complete`); // Update connection activity await this.updateConnectionStatus('working', taskId); return response.data!; } catch (error) { this.log('error', `Failed to update progress for task ${taskId}:`, error); throw error; } }
- src/cli.ts:98-123 (schema)Zod schema for input validation of the update_progress tool parameterstask_id: z.string().describe('The ID of the task being updated'), progress: z .number() .min(0) .max(100) .describe('Progress percentage (0-100)'), status_update: z.string().describe('Brief status update message'), completed_steps: z .array(z.string()) .optional() .describe('List of completed steps'), current_step: z .string() .optional() .describe('Current step being worked on'), challenges: z .array(z.string()) .optional() .describe('Any challenges or blockers encountered'), files_modified: z .array(z.string()) .optional() .describe('List of files that were modified'), time_spent: z.number().optional().describe('Time spent in minutes'), notes: z.string().optional().describe('Additional notes'), },
- src/types.ts:97-106 (schema)TypeScript interface defining the ProgressUpdate structure used by the updateProgress method and MCP toolexport interface ProgressUpdate { progress: number; // 0-100 status_update: string; completed_steps?: string[]; current_step?: string; challenges?: string[]; time_spent?: number; // minutes files_modified?: string[]; notes?: string; }
- src/client.ts:169-177 (helper)Payload mapping from ProgressUpdate to API request body for the progress update endpointcompletion_percentage: progress.progress, files_created: progress.files_modified, files_modified: progress.files_modified, notes: progress.notes, blockers: progress.challenges, time_spent_minutes: progress.time_spent, current_step: progress.current_step, completed_steps: progress.completed_steps, }