# Harvest

Your Toolhouse AI Worker can connect to Harvest using 57 specialized tools.

## Auth Connection

This service requires an auth connection to use its tools. You can set this up in your Toolhouse dashboard under [Auth Connections](https://toolhouse.app/auth-connections?authkit_slugs=harvest).

## Tools (57)

### `Harvest Create Client`

Integration name: **HARVEST\_CREATE\_CLIENT**

Tool to create a new client. Use after gathering client details to register a new client in Harvest.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type    | Required | Example                            | Description                                                                           |
| ----------- | ------- | :------: | ---------------------------------- | ------------------------------------------------------------------------------------- |
| `name`      | string  |     ✅    | `"Acme Corporation"`               | The name of the client or company.                                                    |
| `address`   | string  |          | `"123 Main St\nAnytown, CA 12345"` | The client's physical address. May include new line characters.                       |
| `currency`  | string  |          | `"EUR"`                            | ISO currency code for the client. If omitted, the company's default currency is used. |
| `is_active` | boolean |          | —                                  | Whether the client is active, or archived. Defaults to true.                          |

***

### `Harvest Create Client Contact`

Integration name: **HARVEST\_CREATE\_CLIENT\_CONTACT**

Tool to create a new client contact. Use when you need to add a contact under an existing client. Call after you've retrieved or confirmed the client\_id.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example                    | Description                                     |
| -------------- | ------- | :------: | -------------------------- | ----------------------------------------------- |
| `fax`          | string  |          | `"+1-555-8765"`            | Contact's fax number.                           |
| `email`        | string  |          | `"john.doe@example.com"`   | Contact's email address.                        |
| `title`        | string  |          | `"Director of Operations"` | Title of the contact (e.g., 'Director of Ops'). |
| `client_id`    | integer |     ✅    | `12345`                    | ID of the client associated with this contact.  |
| `last_name`    | string  |          | `"Doe"`                    | Last name of the contact.                       |
| `first_name`   | string  |     ✅    | `"John"`                   | First name of the contact.                      |
| `phone_mobile` | string  |          | `"+1-555-5678"`            | Contact's mobile phone number.                  |
| `phone_office` | string  |          | `"+1-555-1234"`            | Contact's office phone number.                  |

***

### `Harvest Create Estimate`

Integration name: **HARVEST\_CREATE\_ESTIMATE**

Tool to create a new estimate. Use after gathering client and line item details.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type    | Required | Example                          | Description                                                       |
| ---------------- | ------- | :------: | -------------------------------- | ----------------------------------------------------------------- |
| `tax`            | number  |          | `10`                             | First tax percentage applied to subtotal, e.g., 10.0 for 10%.     |
| `tax2`           | number  |          | `5`                              | Second tax percentage applied to subtotal, e.g., 5.0 for 5%.      |
| `notes`          | string  |          | `"Thank you for your business."` | Additional notes to include on the estimate.                      |
| `number`         | string  |          | `"2023-0001"`                    | If not set, the estimate number will be auto-generated.           |
| `subject`        | string  |          | `"Website Redesign"`             | Estimate subject.                                                 |
| `currency`       | string  |          | `"USD"`                          | Currency for the estimate; defaults to client's currency.         |
| `discount`       | number  |          | `15`                             | Discount percentage subtracted from subtotal, e.g., 15.0 for 15%. |
| `client_id`      | integer |     ✅    | `123456`                         | ID of the client this estimate belongs to.                        |
| `issue_date`     | string  |          | `"2023-04-01"`                   | Date the estimate was issued (YYYY-MM-DD); defaults to today.     |
| `line_items`     | array   |          | —                                | List of line items to include on the estimate.                    |
| `purchase_order` | string  |          | `"PO-7890"`                      | The purchase order number.                                        |

***

### `Harvest Create Estimate Item Category`

Integration name: **HARVEST\_CREATE\_ESTIMATE\_ITEM\_CATEGORY**

Tool to create a new estimate item category in Harvest. Use after deciding to categorize line items within an estimate.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type   | Required | Example       | Description                             |
| --------- | ------ | :------: | ------------- | --------------------------------------- |
| `name`    | string |     ✅    | `"Materials"` | The name of the estimate item category. |

***

### `Harvest Create Estimate Message`

Integration name: **HARVEST\_CREATE\_ESTIMATE\_MESSAGE**

Tool to create a new message for an estimate. Use when you have an estimate ID and want to send a message or run an event (send, accept, decline, re-open) on the estimate.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type    | Required | Example   | Description                                                                             |
| ---------------- | ------- | :------: | --------- | --------------------------------------------------------------------------------------- |
| `body`           | string  |          | —         | The message body.                                                                       |
| `subject`        | string  |          | —         | The message subject.                                                                    |
| `event_type`     | string  |          | —         | If provided, runs an event on the estimate. Options: accept, decline, re-open, or send. |
| `recipients`     | array   |          | —         | Array of recipient parameters. Required unless performing an event-only call.           |
| `estimate_id`    | integer |     ✅    | `1439818` | ID of the estimate to add a message to.                                                 |
| `send_me_a_copy` | boolean |          | —         | Whether to email a copy of the message to the current user. Defaults to false.          |

***

### `Harvest Create Expense`

Integration name: **HARVEST\_CREATE\_EXPENSE**

Tool to create a new expense entry. Use when recording costs against projects. Ensure either units or total\_cost is provided.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter             | Type    | Required | Example               | Description                                                                               |
| --------------------- | ------- | :------: | --------------------- | ----------------------------------------------------------------------------------------- |
| `notes`               | string  |          | `"Lunch with client"` | Textual notes describing the expense.                                                     |
| `units`               | number  |          | `1`                   | Quantity of units to use for calculating total\_cost. Required for unit-based categories. |
| `receipt`             | string  |          | —                     | Receipt file to attach. Multipart/form-data upload not supported by this tool.            |
| `user_id`             | integer |          | `1782959`             | ID of the user associated with this expense. Defaults to the authenticated user.          |
| `billable`            | boolean |          | `true`                | Whether the expense is billable. Defaults to true.                                        |
| `project_id`          | integer |     ✅    | `14308069`            | ID of the project associated with this expense.                                           |
| `spent_date`          | string  |     ✅    | `"2017-03-01"`        | Date the expense occurred (YYYY-MM-DD).                                                   |
| `total_cost`          | number  |          | `13.59`               | Total amount of the expense. Required if not using a unit-based category.                 |
| `expense_category_id` | integer |     ✅    | `4195926`             | ID of the expense category this expense is tracked against.                               |

***

### `Harvest Create Invoice`

Integration name: **HARVEST\_CREATE\_INVOICE**

Tool to create a new invoice. Use when you have gathered all invoice details and need to bill a client in Harvest.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type    | Required | Example                          | Description                                                       |
| ---------------- | ------- | :------: | -------------------------------- | ----------------------------------------------------------------- |
| `tax`            | —       |          | `5`                              | First tax rate applied to the invoice (0-100).                    |
| `tax2`           | —       |          | `2.5`                            | Second tax rate applied to the invoice (0-100).                   |
| `notes`          | string  |          | `"Thank you for your business!"` | Additional notes on the invoice.                                  |
| `state`          | string  |          | —                                | State of the invoice. Options: 'draft', 'open', 'paid', 'closed'. |
| `number`         | string  |          | `"INV-1001"`                     | Custom invoice number (e.g., 'INV-1001').                         |
| `subject`        | string  |          | `"January Consulting"`           | Subject of the invoice.                                           |
| `currency`       | string  |          | `"USD"`                          | Currency code (e.g., 'USD').                                      |
| `discount`       | —       |          | `10`                             | Percentage discount applied to the invoice (0-100).               |
| `due_date`       | string  |          | `"2023-02-15"`                   | Date the invoice is due (YYYY-MM-DD).                             |
| `client_id`      | integer |     ✅    | `12345`                          | ID of the client to associate with the invoice.                   |
| `issue_date`     | string  |          | `"2023-01-15"`                   | Date the invoice was issued (YYYY-MM-DD).                         |
| `line_items`     | array   |     ✅    | —                                | Array of line item objects to include in the invoice.             |
| `purchase_order` | string  |          | `"PO-1234"`                      | Purchase order number.                                            |

***

### `Harvest Create Invoice Item Category`

Integration name: **HARVEST\_CREATE\_INVOICE\_ITEM\_CATEGORY**

Tool to create a new invoice item category. Use after you have decided on the category name to register it in Harvest.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type   | Required | Example     | Description                            |
| --------- | ------ | :------: | ----------- | -------------------------------------- |
| `name`    | string |     ✅    | `"Hosting"` | The name of the invoice item category. |

***

### `Harvest Create Invoice Message`

Integration name: **HARVEST\_CREATE\_INVOICE\_MESSAGE**

Creates a new message for an invoice in Harvest. Use this to send invoice notifications to clients, create draft messages, or change invoice states (close/reopen). Requires a valid invoice ID. The invoice must be in the appropriate state for the requested event\_type.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                        | Type    | Required | Example                                 | Description                                                                                                                                                                                                                                                                                                                                      |
| -------------------------------- | ------- | :------: | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `body`                           | string  |          | `"Please review the attached invoice."` | The message body                                                                                                                                                                                                                                                                                                                                 |
| `subject`                        | string  |          | `"Your Invoice is Ready"`               | The message subject                                                                                                                                                                                                                                                                                                                              |
| `thank_you`                      | boolean |          | —                                       | If true, send a thank you message email                                                                                                                                                                                                                                                                                                          |
| `attach_pdf`                     | boolean |          | —                                       | If true, attach a PDF of the invoice to the message email                                                                                                                                                                                                                                                                                        |
| `event_type`                     | string  |          | `"send"`                                | Invoice event type controls message sending and invoice state changes. Options: null/'send' - sends the message (invoice must be draft); 'draft' - creates message without sending; 'close' - closes invoice as written off (invoice must be open); 're-open' - reopens closed invoice (invoice must be closed). Default: null (same as 'send'). |
| `invoice_id`                     | integer |     ✅    | `123456`                                | ID of the invoice to message                                                                                                                                                                                                                                                                                                                     |
| `recipients`                     | array   |          | —                                       | List of message recipients. If omitted and send\_me\_a\_copy is false, the message will have no recipients and the request may fail. Required when event\_type is 'send' or omitted (null) and send\_me\_a\_copy is false.                                                                                                                       |
| `send_me_a_copy`                 | boolean |          | —                                       | If true, send a copy of the message email to the current user                                                                                                                                                                                                                                                                                    |
| `include_link_to_client_invoice` | boolean |          | —                                       | Deprecated. Ignored if true; if false, clears payment options on the invoice.                                                                                                                                                                                                                                                                    |

***

### `Harvest Create Invoice Payment`

Integration name: **HARVEST\_CREATE\_INVOICE\_PAYMENT**

Tool to create a new payment on an invoice. Use when recording a payment against an existing invoice.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type    | Required | Example                  | Description                                                                                                                                                                                                                                        |
| ---------------- | ------- | :------: | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `notes`          | string  |          | `"Paid by phone"`        | Any notes to be associated with the payment.                                                                                                                                                                                                       |
| `amount`         | —       |     ✅    | `1575.86`                | The amount of the payment.                                                                                                                                                                                                                         |
| `paid_at`        | string  |          | `"2017-07-24T13:32:18Z"` | Date and time the payment was made (ISO 8601 format). Provide either paid\_at or paid\_date (at least one is required), but not both.                                                                                                              |
| `paid_date`      | string  |          | `"2017-07-24"`           | Date the payment was made (YYYY-MM-DD format). Provide either paid\_date or paid\_at (at least one is required), but not both.                                                                                                                     |
| `invoice_id`     | integer |     ✅    | `13150378`               | ID of the invoice to add a payment to.                                                                                                                                                                                                             |
| `send_thank_you` | boolean |          | `true`                   | Whether to send a thank you email to the client. Emails are only sent when the invoice becomes fully paid after this payment. Defaults to true if not specified. Requires account email settings to be enabled in Invoices > Configure > Messages. |

***

### `Harvest Create Project`

Integration name: **HARVEST\_CREATE\_PROJECT**

Create a new project in Harvest. A project is a container for tracking time, expenses, and invoices for a specific client engagement. Required: You must provide a valid client\_id (use list\_clients or create\_client first), project name, and billing configuration (is\_billable, bill\_by, budget\_by). Common use cases: - Time & Materials: is\_billable=true, bill\_by="Tasks", budget\_by="project" - Fixed Fee: is\_billable=true, bill\_by="Project", budget\_by="none", is\_fixed\_fee=true - Internal/Non-billable: is\_billable=false, bill\_by="none", budget\_by="none"

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                             | Type    | Required | Example              | Description                                                                 |
| ------------------------------------- | ------- | :------: | -------------------- | --------------------------------------------------------------------------- |
| `fee`                                 | number  |          | `2000`               | The fee for the project when billing by project.                            |
| `code`                                | string  |          | `"PRJ001"`           | The project code.                                                           |
| `name`                                | string  |     ✅    | `"Website Redesign"` | Name of the project.                                                        |
| `notes`                               | string  |          | —                    | Any additional notes about the project.                                     |
| `budget`                              | number  |          | `1000`               | The monetary budget for the project.                                        |
| `bill_by`                             | string  |     ✅    | `"Tasks"`            | The method by which the project is invoiced. Required by the Harvest API.   |
| `ends_on`                             | string  |          | —                    | Date the project ends (YYYY-MM-DD).                                         |
| `budget_by`                           | string  |     ✅    | `"project"`          | The method by which the project is budgeted. Required by the Harvest API.   |
| `client_id`                           | integer |     ✅    | `123`                | ID of the client to associate this project with.                            |
| `is_active`                           | boolean |          | —                    | Whether the project is active (true) or archived (false). Defaults to true. |
| `starts_on`                           | string  |          | —                    | Date the project starts (YYYY-MM-DD).                                       |
| `cost_budget`                         | number  |          | `500`                | The monetary cost budget for the project.                                   |
| `hourly_rate`                         | number  |          | `150`                | The default hourly rate to use for this project when billing by project.    |
| `is_billable`                         | boolean |     ✅    | —                    | Whether the project is billable. Required by the Harvest API.               |
| `is_fixed_fee`                        | boolean |          | —                    | Whether the project is a fixed-fee project.                                 |
| `budget_is_monthly`                   | boolean |          | —                    | Whether the budget resets every month.                                      |
| `show_budget_to_all`                  | boolean |          | —                    | Whether the budget is visible to all project members.                       |
| `notify_when_over_budget`             | boolean |          | —                    | Whether to send a notification when the project exceeds its budget.         |
| `cost_budget_include_expenses`        | boolean |          | —                    | Whether expenses are included in the cost budget.                           |
| `over_budget_notification_percentage` | number  |          | `80`                 | Percentage at which the over budget notification is triggered.              |

***

### `Harvest Create Task`

Integration name: **HARVEST\_CREATE\_TASK**

Creates a new task in Harvest. Tasks are reusable activity types (e.g., "Development", "Design", "Consulting") that can be assigned to projects for time tracking. Use this to define billable or non-billable work categories that your team will track time against.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter             | Type    | Required | Example         | Description                                                                                                                               |
| --------------------- | ------- | :------: | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                | string  |     ✅    | `"Development"` | The name of the task to create. Must be unique across all tasks (both active and archived) in the Harvest account.                        |
| `is_active`           | boolean |          | —               | Whether the task is active (true) or archived (false). Archived tasks cannot be assigned to projects. If not specified, defaults to true. |
| `is_default`          | boolean |          | —               | Whether this task should be automatically added to all future projects. If not specified, defaults to false.                              |
| `billable_by_default` | boolean |          | —               | Whether the task is billable by default when added to a project. If not specified, defaults to true.                                      |
| `default_hourly_rate` | number  |          | `100`           | The default hourly rate (in account currency) for this task when added to a project. If not specified, defaults to 0.                     |

***

### `Harvest Create Time Entry`

Integration name: **HARVEST\_CREATE\_TIME\_ENTRY**

Tool to create a new time entry. Use when logging hours for a project by specifying start/end times or duration.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter            | Type    | Required | Example        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------------- | ------- | :------: | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `hours`              | —       |          | `8.5`          | Total hours to log. Only used when the Harvest account is configured for duration-based time tracking. If the account uses timestamp timers, this parameter is ignored and a running timer is started instead. Use started\_time and ended\_time for timestamp-based tracking.                                                                                                                                                                                          |
| `notes`              | string  |          | —              | Notes or description of the work performed                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `task_id`            | integer |     ✅    | `67890`        | ID of the task to associate with the time entry. The task must be assigned to the specified project. To find valid task IDs, use GET /projects/{project\_id}/task\_assignments to list tasks assigned to your project - the task ID is found in the 'task.id' field of each assignment. Using HARVEST\_LIST\_TASKS returns global tasks which may not be assigned to your project. The task must also be active; inactive tasks cause a 422 'Task doesn't exist' error. |
| `user_id`            | integer |          | `111`          | ID of the user; defaults to the authenticated user                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `ended_time`         | string  |          | —              | Time the entry ended (e.g., '5:00pm', '17:00'). Only used when the Harvest account is configured for timestamp-based time tracking. If omitted with started\_time, creates a running timer.                                                                                                                                                                                                                                                                             |
| `project_id`         | integer |     ✅    | `12345`        | ID of the project to associate with the time entry. Use HARVEST\_LIST\_PROJECTS to retrieve available project IDs. The authenticated user must be assigned to the project.                                                                                                                                                                                                                                                                                              |
| `spent_date`         | string  |     ✅    | `"2021-09-15"` | Date the time entry was spent (YYYY-MM-DD) Use the user's local date, not UTC, to avoid logging hours on the wrong date.                                                                                                                                                                                                                                                                                                                                                |
| `started_time`       | string  |          | —              | Time the entry started (e.g., '9:00am', '14:30'). Only used when the Harvest account is configured for timestamp-based time tracking. Omit ended\_time to create a running timer.                                                                                                                                                                                                                                                                                       |
| `external_reference` | object  |          | —              | Links this entry to an external system (task, project, etc.).                                                                                                                                                                                                                                                                                                                                                                                                           |

***

### `Harvest Create User`

Integration name: **HARVEST\_CREATE\_USER**

Creates a new user in Harvest and sends an invitation email to the specified address. Use this action to add team members to your Harvest account. You can specify their role, permissions, rates, and whether they are employees or contractors. The user will receive an invitation email to activate their account. Required: first\_name, last\_name, and email. Optional: timezone, access roles, rates, weekly capacity, and business roles.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                           | Type    | Required | Example                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ----------------------------------- | ------- | :------: | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `email`                             | string  |     ✅    | `"george@example.com"`         | The email address of the user.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `roles`                             | array   |          | —                              | Descriptive names of the business roles assigned to this person. Used for filtering reports, with no impact on permissions.                                                                                                                                                                                                                                                                                                                                                                                                      |
| `timezone`                          | string  |          | `"Eastern Time (US & Canada)"` | The user's timezone in Rails timezone format. Defaults to the company's timezone if not specified. Common values: 'Eastern Time (US & Canada)', 'Pacific Time (US & Canada)', 'Central Time (US & Canada)', 'Mountain Time (US & Canada)', 'UTC', 'London', 'Paris', 'Tokyo', 'Sydney', etc.                                                                                                                                                                                                                                     |
| `cost_rate`                         | number  |          | —                              | The cost rate to use for this user when calculating project costs. Defaults to 0.0.                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `is_active`                         | boolean |          | —                              | Whether the user is active or archived. Defaults to true.                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `last_name`                         | string  |     ✅    | `"Frank"`                      | The last name of the user.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `first_name`                        | string  |     ✅    | `"George"`                     | The first name of the user.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `access_roles`                      | array   |          | `["administrator"]`            | Access role(s) that determine the user's permissions in Harvest. Primary roles (choose one): 'member' (default), 'manager', or 'administrator'. Additional manager-only roles (combine with 'manager'): 'project\_creator', 'billable\_rates\_manager', 'managed\_projects\_invoice\_drafter', 'managed\_projects\_invoice\_manager', 'client\_and\_task\_manager', 'time\_and\_expenses\_manager', 'estimates\_manager'. Note: Some roles have dependencies (e.g., invoice/estimates roles require 'billable\_rates\_manager'). |
| `is_contractor`                     | boolean |          | —                              | Whether the user is a contractor or an employee. Defaults to false.                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `weekly_capacity`                   | integer |          | `126000`                       | The number of hours per week this person is available to work in seconds. Defaults to 126000 (35 hours).                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `default_hourly_rate`               | number  |          | —                              | The billable rate to use for this user when added to a project. Defaults to 0.0.                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `has_access_to_all_future_projects` | boolean |          | —                              | Whether the user should be automatically added to future projects. Defaults to false.                                                                                                                                                                                                                                                                                                                                                                                                                                            |

***

### `Harvest Delete Client`

Integration name: **HARVEST\_DELETE\_CLIENT**

Tool to delete a client. Use when you need to remove a client that has no associated projects, invoices, or estimates. Call after confirming the client\_id exists and has no dependent resources.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type    | Required | Example  | Description                     |
| ----------- | ------- | :------: | -------- | ------------------------------- |
| `client_id` | integer |     ✅    | `123456` | The ID of the client to delete. |

***

### `Harvest Delete Client Contact`

Integration name: **HARVEST\_DELETE\_CLIENT\_CONTACT**

Permanently deletes a client contact from Harvest. Use when you need to remove a contact that is no longer relevant. Requires Administrator or Manager permissions. The deletion cannot be undone, so verify the contact\_id before calling.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example | Description                                                                       |
| ------------ | ------- | :------: | ------- | --------------------------------------------------------------------------------- |
| `contact_id` | integer |     ✅    | —       | The ID of the contact to delete. Returns 404 error if the contact does not exist. |

***

### `Harvest Delete Estimate`

Integration name: **HARVEST\_DELETE\_ESTIMATE**

Tool to delete an estimate. Use when you need to remove an estimate that is no longer needed. Call after confirming the estimate\_id exists and has no dependent resources.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter     | Type    | Required | Example  | Description                       |
| ------------- | ------- | :------: | -------- | --------------------------------- |
| `estimate_id` | integer |     ✅    | `123456` | The ID of the estimate to delete. |

***

### `Harvest Delete Estimate Message`

Integration name: **HARVEST\_DELETE\_ESTIMATE\_MESSAGE**

Tool to delete an estimate message. Use when you need to remove a message from an estimate. Call after confirming estimate\_id and message\_id are correct.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter     | Type    | Required | Example  | Description                                        |
| ------------- | ------- | :------: | -------- | -------------------------------------------------- |
| `message_id`  | integer |     ✅    | `654321` | The ID of the message to delete from the estimate. |
| `estimate_id` | integer |     ✅    | `123456` | The ID of the estimate.                            |

***

### `Harvest Delete Invoice`

Integration name: **HARVEST\_DELETE\_INVOICE**

Delete an invoice from Harvest. Removes the specified invoice permanently. Requires Administrator or Manager permissions with invoice editing access.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example  | Description                      |
| ------------ | ------- | :------: | -------- | -------------------------------- |
| `invoice_id` | integer |     ✅    | `123456` | The ID of the invoice to delete. |

***

### `Harvest Delete Invoice Item Category`

Integration name: **HARVEST\_DELETE\_INVOICE\_ITEM\_CATEGORY**

Tool to delete an invoice item category from Harvest. Returns 200 OK on success with no response body. Important: Deletion is only possible if both use\_as\_service and use\_as\_expense are false. Categories actively used for billable hours or expenses cannot be deleted. Use when you need to remove an obsolete or unused invoice item category. Requires Admin or Project Manager permissions.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                  | Type    | Required | Example  | Description                                    |
| -------------------------- | ------- | :------: | -------- | ---------------------------------------------- |
| `invoice_item_category_id` | integer |     ✅    | `123456` | The ID of the invoice item category to delete. |

***

### `Harvest Delete Invoice Message`

Integration name: **HARVEST\_DELETE\_INVOICE\_MESSAGE**

Tool to delete a message from an invoice. Use when you need to remove a specific message that is no longer relevant. Call after confirming the invoice\_id and message\_id.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example    | Description                                     |
| ------------ | ------- | :------: | ---------- | ----------------------------------------------- |
| `invoice_id` | integer |     ✅    | `13150403` | The ID of the invoice to delete a message from. |
| `message_id` | integer |     ✅    | `27835324` | The ID of the message to be deleted.            |

***

### `Harvest Delete Invoice Payment`

Integration name: **HARVEST\_DELETE\_INVOICE\_PAYMENT**

Tool to delete an invoice payment. Use when you need to remove a payment from an invoice after confirming payment details.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example | Description                                             |
| ------------ | ------- | :------: | ------- | ------------------------------------------------------- |
| `invoice_id` | integer |     ✅    | `1234`  | The ID of the invoice containing the payment to delete. |
| `payment_id` | integer |     ✅    | `5678`  | The ID of the invoice payment to delete.                |

***

### `Harvest Delete Project`

Integration name: **HARVEST\_DELETE\_PROJECT**

Tool to delete a project. Use when you need to remove a project and all its associated time entries and expenses; invoices remain intact. Call after confirming the project\_id exists.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example  | Description                      |
| ------------ | ------- | :------: | -------- | -------------------------------- |
| `project_id` | integer |     ✅    | `987654` | The ID of the project to delete. |

***

### `Harvest Delete Task`

Integration name: **HARVEST\_DELETE\_TASK**

Tool to delete a task. Use when you need to remove a task that has no associated time entries. Call after confirming the task\_id exists and has no dependent time entries.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type    | Required | Example  | Description                   |
| --------- | ------- | :------: | -------- | ----------------------------- |
| `task_id` | integer |     ✅    | `123456` | The ID of the task to delete. |

***

### `Harvest Delete Time Entry`

Integration name: **HARVEST\_DELETE\_TIME\_ENTRY**

Tool to delete a time entry. Use when removing an existing time entry that is deletable (not closed or on archived projects/tasks). Call after confirming the time\_entry\_id exists.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example  | Description                         |
| --------------- | ------- | :------: | -------- | ----------------------------------- |
| `time_entry_id` | integer |     ✅    | `123456` | The ID of the time entry to delete. |

***

### `Harvest Delete User`

Integration name: **HARVEST\_DELETE\_USER**

Tool to delete a user. Use when you need to remove a user that has no associated time entries or expenses. Call after confirming the user\_id exists and has no dependent time entries or expenses.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type    | Required | Example  | Description                   |
| --------- | ------- | :------: | -------- | ----------------------------- |
| `user_id` | integer |     ✅    | `123456` | The ID of the user to delete. |

***

### `Harvest Get Client`

Integration name: **HARVEST\_GET\_CLIENT**

Retrieves a specific client by ID from Harvest. Use this to get detailed information about a client including their name, active status, address, currency, and timestamps. Returns complete client details needed for invoicing, reporting, or verifying client information.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type    | Required | Example | Description                       |
| ----------- | ------- | :------: | ------- | --------------------------------- |
| `client_id` | integer |     ✅    | `12345` | The ID of the client to retrieve. |

***

### `Harvest Get Company Info`

Integration name: **HARVEST\_GET\_COMPANY\_INFO**

Retrieves detailed information about the company associated with the authenticated Harvest account. This endpoint returns comprehensive company settings including: - Basic information (name, domain, active status) - Time tracking preferences (format, week start day, timer type) - Localization settings (date/time format, currency, separators) - Feature flags (expenses, invoices, estimates, approvals, team scheduling) - Weekly capacity and other operational settings No parameters required. Use this to understand company configuration before performing other operations.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

*No parameters required.*

***

### `Harvest Get Estimate`

Integration name: **HARVEST\_GET\_ESTIMATE**

Tool to retrieve a specific estimate by ID. Use after confirming the estimate ID. Example: "Get estimate with ID 123456".

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter     | Type    | Required | Example  | Description                     |
| ------------- | ------- | :------: | -------- | ------------------------------- |
| `estimate_id` | integer |     ✅    | `123456` | ID of the estimate to retrieve. |

***

### `Harvest Get Invoice`

Integration name: **HARVEST\_GET\_INVOICE**

Tool to retrieve a specific invoice by ID. Use when you need the full details of an invoice after selecting or creating it. Example: 'Get invoice with ID 13150378.'

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example    | Description                           |
| ------------ | ------- | :------: | ---------- | ------------------------------------- |
| `invoice_id` | integer |     ✅    | `13150378` | Unique ID of the invoice to retrieve. |

***

### `Harvest Get Project`

Integration name: **HARVEST\_GET\_PROJECT**

Tool to retrieve a specific Harvest project by ID. Use when you have a project ID and need its details.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example  | Description                                |
| ------------ | ------- | :------: | -------- | ------------------------------------------ |
| `project_id` | integer |     ✅    | `123456` | The ID of the Harvest project to retrieve. |

***

### `Harvest Get Task`

Integration name: **HARVEST\_GET\_TASK**

Tool to retrieve a specific task by ID. Use when you have a task ID and need its detailed information.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type    | Required | Example  | Description                        |
| --------- | ------- | :------: | -------- | ---------------------------------- |
| `task_id` | integer |     ✅    | `123456` | Unique ID of the task to retrieve. |

***

### `Harvest Get Time Entry`

Integration name: **HARVEST\_GET\_TIME\_ENTRY**

Tool to retrieve a single time entry by ID. Use when you have a specific time entry ID and need its full details.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example  | Description                           |
| --------------- | ------- | :------: | -------- | ------------------------------------- |
| `time_entry_id` | integer |     ✅    | `123456` | The ID of the time entry to retrieve. |

***

### `Harvest Get User`

Integration name: **HARVEST\_GET\_USER**

Tool to retrieve a specific user by ID. Use after obtaining a valid user ID (for example via List Users). Example: "Get details of user 3230547".

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter | Type    | Required | Example | Description                            |
| --------- | ------- | :------: | ------- | -------------------------------------- |
| `user_id` | integer |     ✅    | `123`   | The unique ID of the user to retrieve. |

***

### `Harvest List Client Contacts`

Integration name: **HARVEST\_LIST\_CLIENT\_CONTACTS**

Tool to list client contacts. Use when you need to retrieve contacts with optional filtering and pagination.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                   |
| --------------- | ------- | :------: | ------------------------ | ------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | Page number to use in pagination.                             |
| `per_page`      | integer |          | `100`                    | Number of records to return per page.                         |
| `client_id`     | integer |          | `123456`                 | Only return contacts belonging to the client with this ID.    |
| `updated_since` | string  |          | `"2021-03-01T00:00:00Z"` | Only return contacts updated since this date/time (ISO 8601). |

***

### `Harvest List Clients`

Integration name: **HARVEST\_LIST\_CLIENTS**

Tool to list clients. Use when you need to retrieve a paginated list of clients from Harvest. Ensure you have a valid access token in metadata before calling.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                                                   |
| --------------- | ------- | :------: | ------------------------ | --------------------------------------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | DEPRECATED. Page number for pagination. Defaults to 1.                                        |
| `per_page`      | integer |          | `100`                    | The number of records to return per page. Min 1, max 2000. Defaults to 2000.                  |
| `is_active`     | boolean |          | `true`                   | Pass true to only return active clients and false to return inactive clients.                 |
| `updated_since` | string  |          | `"2021-03-15T12:00:00Z"` | Only return clients that have been updated since the given date and time, in ISO 8601 format. |

***

### `Harvest List Estimate Messages`

Integration name: **HARVEST\_LIST\_ESTIMATE\_MESSAGES**

Lists all messages associated with a specific estimate in Harvest. Returns messages sorted by creation date (most recent first). Use this tool when you need to: - View communication history for an estimate - Check what messages have been sent to clients regarding an estimate - Track events that occurred on an estimate (send, accept, decline, re-open) - Filter messages by update time to find recent communications Requires a valid estimate\_id. Supports pagination via per\_page parameter (default 2000, max 2000).

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                                              |
| --------------- | ------- | :------: | ------------------------ | ---------------------------------------------------------------------------------------- |
| `page`          | integer |          | `2`                      | DEPRECATED. Page number for pagination. Defaults to 1.                                   |
| `per_page`      | integer |          | `1000`                   | Number of records per page, between 1 and 2000. Defaults to 2000.                        |
| `estimate_id`   | integer |     ✅    | `1439818`                | ID of the estimate to retrieve messages for.                                             |
| `updated_since` | string  |          | `"2020-01-01T00:00:00Z"` | Only return estimate messages updated since the given date and time, in ISO 8601 format. |

***

### `Harvest List Expense Categories`

Integration name: **HARVEST\_LIST\_EXPENSE\_CATEGORIES**

Tool to list expense categories. Use when you need to retrieve a paginated list of expense categories, optionally filtering by active status or last update timestamp.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                                                   |
| --------------- | ------- | :------: | ------------------------ | --------------------------------------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | Page number for pagination.                                                                   |
| `per_page`      | integer |          | `100`                    | Number of records to return per page (1–2000).                                                |
| `is_active`     | boolean |          | `true`                   | Pass true to return only active expense categories; false to return only inactive categories. |
| `updated_since` | string  |          | `"2023-01-01T00:00:00Z"` | Only return expense categories updated since the given date and time (ISO 8601).              |

***

### `Harvest List Invoice Item Categories`

Integration name: **HARVEST\_LIST\_INVOICE\_ITEM\_CATEGORIES**

Tool to retrieve invoice item categories. Use when you need to fetch a paginated list of invoice item categories in Harvest.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                                                                   |
| --------------- | ------- | :------: | ------------------------ | ------------------------------------------------------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | DEPRECATED. Page number for pagination. Defaults to 1.                                                        |
| `per_page`      | integer |          | `100`                    | The number of records to return per page. Min 1, max 2000. Defaults to 2000.                                  |
| `updated_since` | string  |          | `"2021-03-15T12:00:00Z"` | Only return invoice item categories that have been updated since the given date and time, in ISO 8601 format. |

***

### `Harvest List Invoice Messages`

Integration name: **HARVEST\_LIST\_INVOICE\_MESSAGES**

Tool to list messages associated with a given invoice. Use when you need to retrieve invoice messages with optional filtering by update time and pagination.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                      |
| --------------- | ------- | :------: | ------------------------ | ---------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | Page number to use in pagination (deprecated, defaults to 1).    |
| `per_page`      | integer |          | `100`                    | Number of records to return per page (1-2000, defaults to 2000). |
| `invoice_id`    | integer |     ✅    | `123456`                 | ID of the invoice to retrieve messages for.                      |
| `updated_since` | string  |          | `"2021-04-01T00:00:00Z"` | Only return messages updated since this date/time (ISO 8601).    |

***

### `Harvest List Invoice Payments`

Integration name: **HARVEST\_LIST\_INVOICE\_PAYMENTS**

List all payments recorded for a specific invoice. Returns payment details including amounts, dates, payment gateway information, and who recorded each payment. Supports filtering by updated\_since date and pagination. Returns an empty list if the invoice has no payments.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                                                                                   |
| --------------- | ------- | :------: | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | Page number for pagination. Note: This parameter is deprecated by Harvest in favor of cursor-based pagination. Defaults to 1. |
| `per_page`      | integer |          | `100`                    | Number of payment records to return per page. Must be between 1 and 2000. Defaults to 2000 (maximum).                         |
| `invoice_id`    | integer |     ✅    | `12345`                  | The ID of the invoice whose payments you want to list. Required.                                                              |
| `updated_since` | string  |          | `"2021-03-01T00:00:00Z"` | Filter to only payments updated after this date/time. ISO 8601 format (e.g., '2021-03-01T00:00:00Z'). Optional.               |

***

### `Harvest List Invoices`

Integration name: **HARVEST\_LIST\_INVOICES**

Tool to list invoices. Use when you need to retrieve invoices filtered by client, project, date range, or state. Example: 'List invoices for client 5735776 from 2023-01-01 to 2023-01-31.'

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                                                    |
| --------------- | ------- | :------: | ------------------------ | ---------------------------------------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | Page number for pagination. Defaults to 1.                                                     |
| `state`         | string  |          | `"open"`                 | Only return invoices with a state matching this value.                                         |
| `to_date`       | string  |          | `"2021-03-31"`           | Only return invoices with an issue\_date on or before the given date (YYYY-MM-DD).             |
| `per_page`      | integer |          | `100`                    | Number of records to return per page. 1–2000. Defaults to 100.                                 |
| `client_id`     | integer |          | `5735776`                | Only return invoices belonging to the client with the given ID.                                |
| `from_date`     | string  |          | `"2021-03-01"`           | Only return invoices with an issue\_date on or after the given date (YYYY-MM-DD).              |
| `project_id`    | integer |          | `14308069`               | Only return invoices associated with the project with the given ID.                            |
| `updated_since` | string  |          | `"2021-03-15T12:00:00Z"` | Only return invoices that have been updated since the given date and time, in ISO 8601 format. |

***

### `Harvest List Projects`

Integration name: **HARVEST\_LIST\_PROJECTS**

Tool to list projects. Use when you need to retrieve a paginated list of projects from Harvest. Ensure a valid access token is present in metadata before calling. Results span multiple pages; check total\_pages in the response and increment page to retrieve all projects. Large result sets may be returned as remote files rather than inline JSON; use structure\_info to parse the response correctly.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                        |
| --------------- | ------- | :------: | ------------------------ | ------------------------------------------------------------------ |
| `page`          | integer |          | `1`                      | Page number for pagination. Defaults to 1.                         |
| `client`        | integer |          | `123456`                 | Filter projects by the client ID.                                  |
| `per_page`      | integer |          | `50`                     | Number of records per page. Min 1, max 100. Defaults to 100.       |
| `updated_since` | string  |          | `"2021-03-15T12:00:00Z"` | Only return projects updated since the given date/time (ISO 8601). |

***

### `Harvest List Tasks`

Integration name: **HARVEST\_LIST\_TASKS**

Tool to list tasks. Use when you need to retrieve a paginated list of tasks from Harvest. Ensure you have a valid access token in metadata before calling. Response includes `total_pages` to iterate all pages when task count exceeds `per_page`.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                                                                                                                                                                            |
| --------------- | ------- | :------: | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | Page number for pagination. Defaults to 1.                                                                                                                                                                             |
| `per_page`      | integer |          | `100`                    | The number of records to return per page. Min 1, max 100. Defaults to 100.                                                                                                                                             |
| `is_active`     | boolean |          | `true`                   | Pass true to only return active tasks and false to return archived tasks. Use `true` to obtain valid task IDs for time entry creation; passing an inactive task ID to HARVEST\_CREATE\_TIME\_ENTRY causes a 422 error. |
| `is_default`    | boolean |          | `true`                   | Pass true to only return default tasks.                                                                                                                                                                                |
| `updated_since` | string  |          | `"2021-03-15T12:00:00Z"` | Only return tasks that have been updated since the given date and time, in ISO 8601 format.                                                                                                                            |

***

### `Harvest List Time Entries`

Integration name: **HARVEST\_LIST\_TIME\_ENTRIES**

Tool to retrieve a list of time entries. Use when you need to fetch tracked hours with filters or date ranges for reporting or invoicing. Example: "List time entries for project 123 between 2023-01-01 and 2023-01-31".

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter               | Type    | Required | Example                  | Description                                                                      |
| ----------------------- | ------- | :------: | ------------------------ | -------------------------------------------------------------------------------- |
| `to`                    | string  |          | `"2023-01-31"`           | Only return time entries with a spent\_date on or before this date (YYYY-MM-DD). |
| `page`                  | integer |          | `1`                      | Page number for pagination.                                                      |
| `task_id`               | integer |          | `321`                    | Only return time entries belonging to the task with the given ID.                |
| `user_id`               | integer |          | `123`                    | Only return time entries belonging to the user with the given ID.                |
| `per_page`              | integer |          | `100`                    | Number of records to return per page (1–2000).                                   |
| `client_id`             | integer |          | `456`                    | Only return time entries belonging to the client with the given ID.              |
| `from_date`             | string  |          | `"2023-01-01"`           | Only return time entries with a spent\_date on or after this date (YYYY-MM-DD).  |
| `is_billed`             | boolean |          | `true`                   | Pass true to return invoiced entries, false for unbilled entries.                |
| `is_running`            | boolean |          | `true`                   | Pass true to return running timers, false for stopped entries.                   |
| `project_id`            | integer |          | `789`                    | Only return time entries belonging to the project with the given ID.             |
| `updated_since`         | string  |          | `"2023-03-01T00:00:00Z"` | Only return time entries updated since this date and time (ISO 8601).            |
| `external_reference_id` | string  |          | `"ref-123"`              | Only return time entries with the given external reference ID.                   |

***

### `Harvest List Users`

Integration name: **HARVEST\_LIST\_USERS**

Tool to list users. Use when you need to retrieve a paginated list of users from Harvest.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                  | Description                                                                                 |
| --------------- | ------- | :------: | ------------------------ | ------------------------------------------------------------------------------------------- |
| `page`          | integer |          | `1`                      | DEPRECATED. Page number for pagination. Defaults to 1.                                      |
| `per_page`      | integer |          | `100`                    | The number of records to return per page. Min 1, max 2000. Defaults to 2000.                |
| `is_active`     | boolean |          | `true`                   | Pass true to only return active users and false to return inactive users.                   |
| `updated_since` | string  |          | `"2021-03-15T12:00:00Z"` | Only return users that have been updated since the given date and time, in ISO 8601 format. |

***

### `Harvest Update Client`

Integration name: **HARVEST\_UPDATE\_CLIENT**

Tool to update an existing client. Use after retrieving client details to modify its properties. Supports partial updates; omit fields to leave them unchanged.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type    | Required | Example                            | Description                                                     |
| ----------- | ------- | :------: | ---------------------------------- | --------------------------------------------------------------- |
| `name`      | string  |          | `"Acme Corporation Updated"`       | A textual description of the client.                            |
| `address`   | string  |          | `"123 Main St\nAnytown, CA 12345"` | The client's physical address. May include new line characters. |
| `currency`  | string  |          | `"USD"`                            | ISO currency code for the client.                               |
| `client_id` | integer |     ✅    | `123456`                           | Unique ID of the client to update                               |
| `is_active` | boolean |          | `true`                             | Whether the client is active or archived.                       |

***

### `Harvest Update Client Contact`

Integration name: **HARVEST\_UPDATE\_CLIENT\_CONTACT**

Tool to update a client contact. Use when you have a contact\_id and need to modify its details.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example                   | Description                                     |
| -------------- | ------- | :------: | ------------------------- | ----------------------------------------------- |
| `email`        | string  |          | `"john.doe@example.com"`  | Contact's email address.                        |
| `title`        | string  |          | `"Director of Marketing"` | Title of the contact (e.g., 'Director of Ops'). |
| `last_name`    | string  |          | `"Doe"`                   | Last name of the contact.                       |
| `contact_id`   | integer |     ✅    | `12345`                   | ID of the contact to update.                    |
| `first_name`   | string  |          | `"John"`                  | First name of the contact.                      |
| `phone_mobile` | string  |          | `"+1-555-5678"`           | Contact's mobile phone number.                  |
| `phone_office` | string  |          | `"+1-555-1234"`           | Contact's office phone number.                  |

***

### `Harvest Update Company Info`

Integration name: **HARVEST\_UPDATE\_COMPANY\_INFO**

Updates company time tracking settings in Harvest. This endpoint allows modification of two company settings: 1. wants\_timestamp\_timers - Controls whether time is tracked via duration or start/end times 2. weekly\_capacity - Sets the expected working hours per week (in seconds) Returns the complete updated company object. Requires admin permissions. Note: Other company settings (name, timezone, currency, date/time formats, color scheme, etc.) cannot be modified via the API and must be changed through the Harvest web interface.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                | Type    | Required | Example  | Description                                                                                                                                                                              |
| ------------------------ | ------- | :------: | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `weekly_capacity`        | integer |          | `144000` | The weekly capacity in seconds. This represents the expected number of working hours per week. For example, 144000 seconds = 40 hours (40 \* 60 \* 60). Must be non-negative.            |
| `wants_timestamp_timers` | boolean |          | `true`   | Whether time is tracked via duration (false) or start and end times (true). When true, users must enter start/end times for time entries. When false, users can enter just the duration. |

***

### `Harvest Update Estimate`

Integration name: **HARVEST\_UPDATE\_ESTIMATE**

Tool to update an existing estimate. Use when you need to modify specific fields of an estimate; omit parameters to leave other fields unchanged.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type    | Required | Example                    | Description                                                           |
| ---------------- | ------- | :------: | -------------------------- | --------------------------------------------------------------------- |
| `tax`            | number  |          | `10`                       | First tax percentage applied to the subtotal, e.g., 10.0 for 10%.     |
| `tax2`           | number  |          | `5`                        | Second tax percentage applied to the subtotal, e.g., 5.0 for 5%.      |
| `notes`          | string  |          | `"Please review changes."` | Additional notes for the estimate.                                    |
| `number`         | string  |          | `"2023-0001"`              | Custom estimate number. Auto-generated if omitted.                    |
| `subject`        | string  |          | `"Updated Project Quote"`  | Estimate subject line.                                                |
| `currency`       | string  |          | `"USD"`                    | Currency code for the estimate; defaults to client's currency.        |
| `discount`       | number  |          | `15`                       | Discount percentage subtracted from the subtotal, e.g., 15.0 for 15%. |
| `client_id`      | integer |          | `5735776`                  | The ID of the client this estimate belongs to.                        |
| `issue_date`     | string  |          | `"2023-06-01"`             | Date the estimate was issued (YYYY-MM-DD).                            |
| `line_items`     | array   |          | —                          | List of line items to update or add. Omit unchanged items.            |
| `estimate_id`    | integer |     ✅    | `1439827`                  | Unique ID of the estimate to update.                                  |
| `purchase_order` | string  |          | `"PO-2345"`                | The purchase order number.                                            |

***

### `Harvest Update Estimate Item Category`

Integration name: **HARVEST\_UPDATE\_ESTIMATE\_ITEM\_CATEGORY**

Updates an existing estimate item category's name in Harvest. Estimate item categories are used to organize line items within estimates. Provide the category ID and the new name you want to set.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                   | Type    | Required | Example               | Description                                       |
| --------------------------- | ------- | :------: | --------------------- | ------------------------------------------------- |
| `name`                      | string  |          | `"Materials Updated"` | The new name for the estimate item category.      |
| `estimate_item_category_id` | integer |     ✅    | `123`                 | Unique ID of the estimate item category to update |

***

### `Harvest Update Expense`

Integration name: **HARVEST\_UPDATE\_EXPENSE**

Tool to update an existing expense. Use after retrieving an expense to modify project, category, date, cost, or delete a receipt; omit fields to leave unchanged.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter             | Type    | Required | Example                    | Description                                            |
| --------------------- | ------- | :------: | -------------------------- | ------------------------------------------------------ |
| `notes`               | string  |          | `"Client dinner expenses"` | Notes or description for the expense.                  |
| `units`               | —       |          | `3.5`                      | Quantity of units used to calculate the expense total. |
| `billable`            | boolean |          | `true`                     | Whether the expense is billable.                       |
| `expense_id`          | integer |     ✅    | `123456`                   | Unique ID of the expense to update                     |
| `project_id`          | integer |          | `654321`                   | ID of the project associated with this expense.        |
| `spent_date`          | string  |          | `"2021-09-15"`             | Date the expense occurred (YYYY-MM-DD)                 |
| `total_cost`          | —       |          | `150.75`                   | Total amount of the expense.                           |
| `delete_receipt`      | boolean |          | `true`                     | Pass true to delete the attached receipt.              |
| `expense_category_id` | integer |          | `98765`                    | ID of the expense category for this expense.           |

***

### `Harvest Update Invoice`

Integration name: **HARVEST\_UPDATE\_INVOICE**

Tool to update an existing invoice. Use after retrieving invoice details to modify its fields. Supports partial updates; omit fields to leave unchanged.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter         | Type    | Required | Example                          | Description                                                                   |
| ----------------- | ------- | :------: | -------------------------------- | ----------------------------------------------------------------------------- |
| `tax`             | —       |          | `10`                             | Tax percentage applied to the invoice.                                        |
| `tax2`            | —       |          | `2.5`                            | Additional tax percentage applied.                                            |
| `notes`           | string  |          | `"Thank you for your business!"` | Additional notes to include on the invoice.                                   |
| `number`          | string  |          | `"INV-1001"`                     | Custom invoice number.                                                        |
| `subject`         | string  |          | `"Consulting Services"`          | The invoice subject.                                                          |
| `currency`        | string  |          | `"USD"`                          | Currency code (e.g., USD).                                                    |
| `discount`        | —       |          | `5`                              | Discount percentage applied to the invoice.                                   |
| `due_date`        | string  |          | `"2023-02-15"`                   | Date the invoice is due (YYYY-MM-DD).                                         |
| `client_id`       | integer |          | `12345`                          | ID of the client this invoice belongs to.                                     |
| `invoice_id`      | integer |     ✅    | `789`                            | Unique ID of the invoice to update.                                           |
| `issue_date`      | string  |          | `"2023-01-15"`                   | Date the invoice was issued (YYYY-MM-DD).                                     |
| `line_items`      | array   |          | —                                | Array of line item objects to update or add.                                  |
| `estimate_id`     | integer |          | `234`                            | ID of the estimate associated with this invoice.                              |
| `retainer_id`     | integer |          | `678`                            | ID of the retainer associated with this invoice.                              |
| `payment_term`    | string  |          | `"net 30"`                       | Payment timeframe: 'upon receipt', 'net 15', 'net 30', 'net 45', or 'net 60'. |
| `purchase_order`  | string  |          | `"PO-1234"`                      | The purchase order number.                                                    |
| `payment_options` | array   |          | —                                | Payment options available: 'ach', 'credit\_card', or 'paypal'.                |

***

### `Harvest Update Project`

Integration name: **HARVEST\_UPDATE\_PROJECT**

Tool to update an existing project. Use when you need to modify one or more fields of a project by its ID. Invoke after confirming the project ID and desired changes.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                             | Type    | Required | Example                          | Description                                                                                                                                                                           |
| ------------------------------------- | ------- | :------: | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `fee`                                 | number  |          | `7500`                           | Fixed-fee amount to invoice for fixed-fee projects                                                                                                                                    |
| `code`                                | string  |          | `"WR2023Q2"`                     | Project code identifier                                                                                                                                                               |
| `name`                                | string  |          | `"Website Redesign Q2"`          | Name of the project                                                                                                                                                                   |
| `notes`                               | string  |          | `"Kickoff scheduled for May 1."` | Project notes or description                                                                                                                                                          |
| `budget`                              | number  |          | `200`                            | Time budget in hours when budgeting by hours                                                                                                                                          |
| `bill_by`                             | string  |          | `"Project"`                      | Billing method: 'Project', 'Tasks', 'People', or 'none'                                                                                                                               |
| `ends_on`                             | string  |          | `"2023-12-31"`                   | Project end date (YYYY-MM-DD)                                                                                                                                                         |
| `budget_by`                           | string  |          | `"project"`                      | Budgeting method: 'project' (hours per project), 'project\_cost' (total fees), 'task' (hours per task), 'task\_fees' (fees per task), 'person' (hours per person), or 'none'          |
| `client_id`                           | integer |          | `5735776`                        | ID of the client to associate this project with                                                                                                                                       |
| `is_active`                           | boolean |          | `true`                           | Whether the project is active (true) or archived (false)                                                                                                                              |
| `starts_on`                           | string  |          | `"2023-05-01"`                   | Project start date (YYYY-MM-DD)                                                                                                                                                       |
| `project_id`                          | integer |     ✅    | `14308112`                       | Unique ID of the project to update. This must be an existing project ID obtained from Harvest, typically by using LIST\_PROJECTS first. Do not use arbitrary numbers or placeholders. |
| `cost_budget`                         | number  |          | `5000`                           | Monetary budget when budgeting by money                                                                                                                                               |
| `hourly_rate`                         | number  |          | `100`                            | Hourly rate when billed by project hourly rate                                                                                                                                        |
| `is_billable`                         | boolean |          | `true`                           | Whether time on this project is billable                                                                                                                                              |
| `is_fixed_fee`                        | boolean |          | `false`                          | Whether this is a fixed-fee project                                                                                                                                                   |
| `budget_is_monthly`                   | boolean |          | `false`                          | If true, reset budget each month; defaults to false                                                                                                                                   |
| `show_budget_to_all`                  | boolean |          | `false`                          | Show budget to all employees; defaults to false                                                                                                                                       |
| `notify_when_over_budget`             | boolean |          | `false`                          | Email managers when over budget; defaults to false                                                                                                                                    |
| `cost_budget_include_expenses`        | boolean |          | `false`                          | Include tracked expenses in 'project\_cost' budgets; defaults to false                                                                                                                |
| `over_budget_notification_percentage` | number  |          | `80`                             | Threshold percent to trigger over-budget alerts (e.g., 80.0)                                                                                                                          |

***

### `Harvest Update Task`

Integration name: **HARVEST\_UPDATE\_TASK**

Tool to update an existing task. Use after retrieving task details to modify its attributes such as name, billing defaults, or status. Supports partial updates; omit fields to leave them unchanged.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter             | Type    | Required | Example           | Description                                                         |
| --------------------- | ------- | :------: | ----------------- | ------------------------------------------------------------------- |
| `name`                | string  |          | `"Design Review"` | New name for the task.                                              |
| `task_id`             | integer |     ✅    | `123456`          | Unique ID of the task to update                                     |
| `is_active`           | boolean |          | `true`            | Whether this task is active (true) or archived (false).             |
| `is_default`          | boolean |          | `true`            | Whether this task should be automatically added to future projects. |
| `billable_by_default` | boolean |          | `true`            | Whether new projects with this task are billable by default.        |
| `default_hourly_rate` | number  |          | `150`             | Default hourly rate when this task is added to a project.           |

***

### `Harvest Update Time Entry`

Integration name: **HARVEST\_UPDATE\_TIME\_ENTRY**

Tool to update an existing time entry. Use after retrieving the entry to adjust hours, notes, project, or task details. Supports partial updates; omit fields to leave unchanged.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example                       | Description                                                                     |
| --------------- | ------- | :------: | ----------------------------- | ------------------------------------------------------------------------------- |
| `hours`         | —       |          | `1.5`                         | The updated number of hours for the time entry.                                 |
| `notes`         | string  |          | `"Completed API integration"` | The updated notes for the time entry.                                           |
| `task_id`       | integer |          | `67890`                       | ID of the task associated with the time entry.                                  |
| `ended_time`    | string  |          | —                             | The time the entry ended (e.g., '5:00pm'); if omitted, timer remains running    |
| `project_id`    | integer |          | `12345`                       | ID of the project associated with the time entry.                               |
| `spent_date`    | string  |          | `"2021-09-15"`                | The date the time entry was spent (YYYY-MM-DD)                                  |
| `started_time`  | string  |          | —                             | The time the entry started (e.g., '9:00am'); omit ended\_time for running timer |
| `time_entry_id` | integer |     ✅    | `123456`                      | Unique ID of the time entry to update                                           |

***

### `Harvest Update User`

Integration name: **HARVEST\_UPDATE\_USER**

Tool to update an existing user. Use when you need to modify a user's profile or settings after confirming the user ID.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                           | Type    | Required | Example                        | Description                                                                                                                                                                                                                                                                                                         |
| ----------------------------------- | ------- | :------: | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `email`                             | string  |          | `"george@example.com"`         | The email address of the user. Cannot be updated if the user is inactive.                                                                                                                                                                                                                                           |
| `roles`                             | array   |          | —                              | Descriptive names of the business roles assigned to this person. Used for filtering reports, with no impact on permissions.                                                                                                                                                                                         |
| `user_id`                           | integer |     ✅    | `123456`                       | Unique ID of the user to update                                                                                                                                                                                                                                                                                     |
| `timezone`                          | string  |          | `"Eastern Time (US & Canada)"` | The user’s timezone. Defaults to the company’s timezone. See supported time zones in the Harvest docs.                                                                                                                                                                                                              |
| `is_active`                         | boolean |          | —                              | Whether the user is active or archived.                                                                                                                                                                                                                                                                             |
| `last_name`                         | string  |          | `"Frank"`                      | The last name of the user. Cannot be updated if the user is inactive.                                                                                                                                                                                                                                               |
| `first_name`                        | string  |          | `"George"`                     | The first name of the user. Cannot be updated if the user is inactive.                                                                                                                                                                                                                                              |
| `access_roles`                      | array   |          | —                              | Access roles that determine the user’s permissions in Harvest. Possible values: administrator, manager, member, project\_creator, billable\_rates\_manager, managed\_projects\_invoice\_drafter, managed\_projects\_invoice\_manager, client\_and\_task\_manager, time\_and\_expenses\_manager, estimates\_manager. |
| `is_contractor`                     | boolean |          | —                              | Whether the user is a contractor or an employee. Defaults to false.                                                                                                                                                                                                                                                 |
| `weekly_capacity`                   | integer |          | `126000`                       | The number of hours per week this person is available to work, in seconds. Must be non-negative.                                                                                                                                                                                                                    |
| `has_access_to_all_future_projects` | boolean |          | —                              | Whether the user should be automatically added to future projects. Defaults to false.                                                                                                                                                                                                                               |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.toolhouse.ai/toolhouse/integrations/harvest.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
