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.
Tools (57)
Harvest Create Client
Harvest Create ClientIntegration 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.
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
Harvest Create Client ContactIntegration 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.
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
Harvest Create EstimateIntegration 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.
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
Harvest Create Estimate Item CategoryIntegration 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.
name
string
✅
"Materials"
The name of the estimate item category.
Harvest Create Estimate Message
Harvest Create Estimate MessageIntegration 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.
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
Harvest Create ExpenseIntegration 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.
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
Harvest Create InvoiceIntegration 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.
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
Harvest Create Invoice Item CategoryIntegration 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.
name
string
✅
"Hosting"
The name of the invoice item category.
Harvest Create Invoice Message
Harvest Create Invoice MessageIntegration 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.
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
Harvest Create Invoice PaymentIntegration 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.
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
Harvest Create ProjectIntegration 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.
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
Harvest Create TaskIntegration 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.
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
Harvest Create Time EntryIntegration 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.
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
Harvest Create UserIntegration 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.
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
Harvest Delete ClientIntegration 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.
client_id
integer
✅
123456
The ID of the client to delete.
Harvest Delete Client Contact
Harvest Delete Client ContactIntegration 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.
contact_id
integer
✅
—
The ID of the contact to delete. Returns 404 error if the contact does not exist.
Harvest Delete Estimate
Harvest Delete EstimateIntegration 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.
estimate_id
integer
✅
123456
The ID of the estimate to delete.
Harvest Delete Estimate Message
Harvest Delete Estimate MessageIntegration 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.
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
Harvest Delete InvoiceIntegration 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.
invoice_id
integer
✅
123456
The ID of the invoice to delete.
Harvest Delete Invoice Item Category
Harvest Delete Invoice Item CategoryIntegration 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.
invoice_item_category_id
integer
✅
123456
The ID of the invoice item category to delete.
Harvest Delete Invoice Message
Harvest Delete Invoice MessageIntegration 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.
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
Harvest Delete Invoice PaymentIntegration 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.
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
Harvest Delete ProjectIntegration 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.
project_id
integer
✅
987654
The ID of the project to delete.
Harvest Delete Task
Harvest Delete TaskIntegration 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.
task_id
integer
✅
123456
The ID of the task to delete.
Harvest Delete Time Entry
Harvest Delete Time EntryIntegration 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.
time_entry_id
integer
✅
123456
The ID of the time entry to delete.
Harvest Delete User
Harvest Delete UserIntegration 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.
user_id
integer
✅
123456
The ID of the user to delete.
Harvest Get Client
Harvest Get ClientIntegration 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.
client_id
integer
✅
12345
The ID of the client to retrieve.
Harvest Get Company Info
Harvest Get Company InfoIntegration 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
Harvest Get EstimateIntegration 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.
estimate_id
integer
✅
123456
ID of the estimate to retrieve.
Harvest Get Invoice
Harvest Get InvoiceIntegration 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.
invoice_id
integer
✅
13150378
Unique ID of the invoice to retrieve.
Harvest Get Project
Harvest Get ProjectIntegration 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.
project_id
integer
✅
123456
The ID of the Harvest project to retrieve.
Harvest Get Task
Harvest Get TaskIntegration 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.
task_id
integer
✅
123456
Unique ID of the task to retrieve.
Harvest Get Time Entry
Harvest Get Time EntryIntegration 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.
time_entry_id
integer
✅
123456
The ID of the time entry to retrieve.
Harvest Get User
Harvest Get UserIntegration 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.
user_id
integer
✅
123
The unique ID of the user to retrieve.
Harvest List Client Contacts
Harvest List Client ContactsIntegration 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.
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
Harvest List ClientsIntegration 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.
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
Harvest List Estimate MessagesIntegration 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.
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
Harvest List Expense CategoriesIntegration 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.
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
Harvest List Invoice Item CategoriesIntegration 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.
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
Harvest List Invoice MessagesIntegration 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.
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
Harvest List Invoice PaymentsIntegration 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.
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
Harvest List InvoicesIntegration 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.
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
Harvest List ProjectsIntegration 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.
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
Harvest List TasksIntegration 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.
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
Harvest List Time EntriesIntegration 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.
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
Harvest List UsersIntegration 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.
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
Harvest Update ClientIntegration 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.
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
Harvest Update Client ContactIntegration 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.
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
Harvest Update Company InfoIntegration 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.
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
Harvest Update EstimateIntegration 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.
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
Harvest Update Estimate Item CategoryIntegration 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.
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
Harvest Update ExpenseIntegration 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.
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
Harvest Update InvoiceIntegration 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.
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
Harvest Update ProjectIntegration 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.
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
Harvest Update TaskIntegration 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.
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
Harvest Update Time EntryIntegration 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.
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
Harvest Update UserIntegration 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.
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.