MissionControlHQMissionControlHQResources
ArticlesDocs
Get early access→
Integrations
Email & Productivity
  • Gmail
  • Outlook
  • Google Docs
  • Google Sheets
  • Excel
  • Notion
  • Confluence
  • Airtable
  • Todoist
  • Google Tasks
  • Canva
Communication
  • Slack
  • Microsoft Teams
  • Discord
  • WhatsApp
  • Webex
Scheduling & Meetings
  • Google Calendar
  • Zoom
  • Calendly
  • Cal.com
  • Google Meet
  • Eventbrite
Marketing & Social
  • Mailchimp
  • Google Ads
  • Facebook
  • LinkedIn
  • YouTube
  • Reddit
  • Dub
CRM & Support
  • HubSpot
  • Salesforce
  • Attio
  • Capsule CRM
  • Intercom
  • Zendesk
  • Gorgias
  • Zoho Desk
  • Gong
File Storage
  • Google Drive
  • Dropbox
  • OneDrive
  • Box
  • SharePoint
  • Google Photos
E-commerce & Payments
  • Stripe
  • Square
Finance & Time
  • Harvest
  • Zoho Books
  • Zoho Invoice
  • FreshBooks
  • Fathom
Analytics
  • Google BigQuery
Dev & Project Management
  • GitHub
  • GitLab
  • Bitbucket
  • Linear
  • Jira
  • Asana
  • ClickUp
  • Trello
  • Monday.com
  • Basecamp
  • Wrike
  • Productboard
  • Figma
  • Miro
  • Sentry
  • PagerDuty
  • Supabase
  • DigitalOcean
Resources/Integrations/Harvest

Finance & Time

⏱️ Harvest integration

Verified July 15, 2026

PreviousSquareNextZoho Books

Connect Harvest once and every agent in your squad can work in it for you, with exactly as much access as you decide to give, and a receipt for every call it makes.

What your squad can do in Harvest

  • Look things up, get client; get company info; get estimate, and more.
  • Do real work, create client; create client contact; create estimate; create estimate item category, and more.
  • Run it on a schedule: any of the 57 available tools below can be part of a scheduled task or a mission.

How to connect

  1. In your dashboard, open Integrations and find Harvest.
  2. Click Connect.
  3. Sign in to Harvest in the window that opens and approve. You land back on the Integrations page with the account live.

If the connection ever expires, the card shows Reconnect; one click re-authorizes the same account with the same settings.

Multiple accounts: connect as many as you need (say, yours and a client's). One is primary. Agents use it unless a mission says otherwise.

Access levels

This app connects with standard access. Every agent can still be individually allowed, scoped, or denied from the Integrations page.

Every tool, in plain terms

The 57 tools agents use in Harvest through Mission Control, and the lowest access level that includes each. Agents discover these themselves. You never have to name a tool; asking in plain language is enough.

ToolWhat it doesAccess level
Create client
HARVEST_CREATE_CLIENT
Create a new client. Use after gathering client details to register a new client in Harvest.All levels
Create client contact
HARVEST_CREATE_CLIENT_CONTACT
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.All levels
Create estimate
HARVEST_CREATE_ESTIMATE
Create a new estimate. Use after gathering client and line item details.All levels
Create estimate item category
HARVEST_CREATE_ESTIMATE_ITEM_CATEGORY
Create a new estimate item category in Harvest.All levels
Create estimate message
HARVEST_CREATE_ESTIMATE_MESSAGE
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.All levels
Create expense
HARVEST_CREATE_EXPENSE
Create a new expense entry. Use when recording costs against projects. Ensure either units or total_cost is provided.All levels
Create invoice
HARVEST_CREATE_INVOICE
Create a new invoice. Use when you have gathered all invoice details and need to bill a client in Harvest.All levels
Create invoice item category
HARVEST_CREATE_INVOICE_ITEM_CATEGORY
Create a new invoice item category. Use after you have decided on the category name to register it in Harvest.All levels
Create invoice message
HARVEST_CREATE_INVOICE_MESSAGE
Creates a new message for an invoice in Harvest.All levels
Create invoice payment
HARVEST_CREATE_INVOICE_PAYMENT
Create a new payment on an invoice. Use when recording a payment against an existing invoice.All levels
Create project
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…All levels
Create task
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 categor…All levels
Create time entry
HARVEST_CREATE_TIME_ENTRY
Create a new time entry. Use when logging hours for a project by specifying start/end times or duration.All levels
Create user
HARVEST_CREATE_USER
Creates a new user in Harvest and sends an invitation email to the specified address.All levels
Delete client
HARVEST_DELETE_CLIENT
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.All levels
Delete client contact
HARVEST_DELETE_CLIENT_CONTACT
Permanently deletes a client contact from Harvest.All levels
Delete estimate
HARVEST_DELETE_ESTIMATE
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.All levels
Delete estimate message
HARVEST_DELETE_ESTIMATE_MESSAGE
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.All levels
Delete invoice
HARVEST_DELETE_INVOICE
Delete an invoice from Harvest. Removes the specified invoice permanently. Requires Administrator or Manager permissions with invoice editing access.All levels
Delete invoice item category
HARVEST_DELETE_INVOICE_ITEM_CATEGORY
Delete an invoice item category from Harvest.All levels
Delete invoice message
HARVEST_DELETE_INVOICE_MESSAGE
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.All levels
Delete invoice payment
HARVEST_DELETE_INVOICE_PAYMENT
Delete an invoice payment. Use when you need to remove a payment from an invoice after confirming payment details.All levels
Delete project
HARVEST_DELETE_PROJECT
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.All levels
Delete task
HARVEST_DELETE_TASK
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.All levels
Delete time entry
HARVEST_DELETE_TIME_ENTRY
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.All levels
Delete user
HARVEST_DELETE_USER
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.All levels
Get client
HARVEST_GET_CLIENT
Retrieves a specific client by ID from Harvest.All levels
Get company info
HARVEST_GET_COMPANY_INFO
Retrieves detailed information about the company associated with the authenticated Harvest account.All levels
Get estimate
HARVEST_GET_ESTIMATE
Retrieve a specific estimate by ID. Use after confirming the estimate ID. Example: "Get estimate with ID 123456".All levels
Get invoice
HARVEST_GET_INVOICE
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.'All levels
Get project
HARVEST_GET_PROJECT
Retrieve a specific Harvest project by ID.All levels
Get task
HARVEST_GET_TASK
Retrieve a specific task by ID. Use when you have a task ID and need its detailed information.All levels
Get time entry
HARVEST_GET_TIME_ENTRY
Retrieve a single time entry by ID. Use when you have a specific time entry ID and need its full details.All levels
Get user
HARVEST_GET_USER
Retrieve a specific user by ID. Use after obtaining a valid user ID (for example via List Users). Example: "Get details of user 3230547".All levels
List clients
HARVEST_LIST_CLIENTS
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.All levels
List client contacts
HARVEST_LIST_CLIENT_CONTACTS
List client contacts. Use when you need to retrieve contacts with optional filtering and pagination.All levels
List estimate messages
HARVEST_LIST_ESTIMATE_MESSAGES
Lists all messages associated with a specific estimate in Harvest.All levels
List expense categories
HARVEST_LIST_EXPENSE_CATEGORIES
List expense categories. Use when you need to retrieve a paginated list of expense categories, optionally filtering by active status or last update timestamp.All levels
List invoices
HARVEST_LIST_INVOICES
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.'All levels
List invoice item categories
HARVEST_LIST_INVOICE_ITEM_CATEGORIES
Retrieve invoice item categories. Use when you need to fetch a paginated list of invoice item categories in Harvest.All levels
List invoice messages
HARVEST_LIST_INVOICE_MESSAGES
List messages associated with a given invoice.All levels
List invoice payments
HARVEST_LIST_INVOICE_PAYMENTS
List all payments recorded for a specific invoice.All levels
List projects
HARVEST_LIST_PROJECTS
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 a…All levels
List tasks
HARVEST_LIST_TASKS
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 exc…All levels
List time entries
HARVEST_LIST_TIME_ENTRIES
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".All levels
List users
HARVEST_LIST_USERS
List users. Use when you need to retrieve a paginated list of users from Harvest.All levels
Update client
HARVEST_UPDATE_CLIENT
Update an existing client. Use after retrieving client details to modify its properties. Supports partial updates; omit fields to leave them unchanged.All levels
Update client contact
HARVEST_UPDATE_CLIENT_CONTACT
Update a client contact. Use when you have a contact_id and need to modify its details.All levels
Update company info
HARVEST_UPDATE_COMPANY_INFO
Updates company time tracking settings in Harvest.All levels
Update estimate
HARVEST_UPDATE_ESTIMATE
Update an existing estimate. Use when you need to modify specific fields of an estimate; omit parameters to leave other fields unchanged.All levels
Update estimate item category
HARVEST_UPDATE_ESTIMATE_ITEM_CATEGORY
Updates an existing estimate item category's name in Harvest.All levels
Update expense
HARVEST_UPDATE_EXPENSE
Update an existing expense. Use after retrieving an expense to modify project, category, date, cost, or delete a receipt; omit fields to leave unchanged.All levels
Update invoice
HARVEST_UPDATE_INVOICE
Update an existing invoice. Use after retrieving invoice details to modify its fields. Supports partial updates; omit fields to leave unchanged.All levels
Update project
HARVEST_UPDATE_PROJECT
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.All levels
Update task
HARVEST_UPDATE_TASK
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.All levels
Update time entry
HARVEST_UPDATE_TIME_ENTRY
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.All levels
Update user
HARVEST_UPDATE_USER
Update an existing user. Use when you need to modify a user's profile or settings after confirming the user ID.All levels

What agents can't do in Harvest (yet)

  • Anything not in the table above. The tools mirror what Harvest makes available to connected apps. If Harvest doesn't expose an operation, agents can't perform it either.
  • If something you need is missing, there's usually a path: add the service's API key under Settings → Custom integrations and your agents can call it directly. See custom integrations & secrets. You can also ask your lead agent to open a ticket describing what it needs.

Using it in missions

Just ask in plain language: “check Harvest for …”, “create … in Harvest”, “every Monday, … ”, and the agent finds the right tool, runs it, and reports back with a receipt in your Runs ledger. Anything outward-facing (sending, posting, publishing) that a mission didn't clearly authorize comes back to you as a ticket first.

Troubleshooting

Agent saysWhat's happeningFix
"Harvest isn't connected"No active connection (or this agent is denied)Connect on the Integrations page; check the agent's per-app policy
"The connection has expired"Harvest ended the authorization (they all do periodically)Click Reconnect on the account, same settings, one click
"I'm not allowed to do that"The action is above the account's access level, or the agent is scoped downRaise the level under Manage, or adjust that agent's policy
It did something unexpectedThe ask was ambiguous (e.g. matched an existing item)Be explicit, "create a NEW …", and give agents a working folder where relevant