update_project
Modify project settings in Harvest, including name, billing, budget, timeline, and status, by updating specific fields without affecting unchanged values.
Instructions
Update an existing project. Can modify any project settings including name, billing configuration, budget settings, and project timeline. Only provided fields will be updated.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the project to update (required) | |
| name | No | Update project name | |
| code | No | Update project code | |
| is_active | No | Update active status | |
| is_billable | No | Update billable status | |
| is_fixed_fee | No | Update fixed fee billing | |
| bill_by | No | Update billing method | |
| hourly_rate | No | Update hourly rate | |
| budget | No | Update budget amount | |
| budget_by | No | Update budget calculation method | |
| budget_is_monthly | No | Update monthly budget reset | |
| notify_when_over_budget | No | Update budget notifications | |
| over_budget_notification_percentage | No | Update notification threshold | |
| show_budget_to_all | No | Update budget visibility | |
| cost_budget | No | Update cost budget | |
| cost_budget_include_expenses | No | Update expense inclusion | |
| fee | No | Update fixed fee | |
| notes | No | Update project notes | |
| starts_on | No | Update start date (YYYY-MM-DD) | |
| ends_on | No | Update end date (YYYY-MM-DD) |
Implementation Reference
- src/tools/projects.ts:81-97 (handler)The implementation of the UpdateProjectHandler class which handles the execution of the update_project tool.
class UpdateProjectHandler implements ToolHandler { constructor(private readonly config: BaseToolConfig) {} async execute(args: Record<string, any>): Promise<CallToolResult> { try { const validatedArgs = validateInput(UpdateProjectSchema, args, 'update project'); logger.info('Updating project via Harvest API', { projectId: validatedArgs.id }); const project = await this.config.harvestClient.updateProject(validatedArgs); return { content: [{ type: 'text', text: JSON.stringify(project, null, 2) }], }; } catch (error) { return handleMCPToolError(error, 'update_project'); } } } - src/tools/projects.ts:273-285 (registration)Registration of the update_project tool and its associated handler.
{ tool: { name: 'update_project', description: 'Update an existing project. Can modify any project settings including name, billing configuration, budget settings, and project timeline. Only provided fields will be updated.', inputSchema: { type: 'object', properties: { id: { type: 'number', description: 'The ID of the project to update (required)' }, name: { type: 'string', minLength: 1, description: 'Update project name' }, code: { type: 'string', description: 'Update project code' }, is_active: { type: 'boolean', description: 'Update active status' }, is_billable: { type: 'boolean', description: 'Update billable status' }, is_fixed_fee: { type: 'boolean', description: 'Update fixed fee billing' },