Harvest
Harvest is a time-tracking and invoicing tool designed for teams and freelancers, helping them log billable hours, manage projects, and streamline payments
Verdict
Common use cases
- Log billable hours from standup notes
- Draft client estimates during sales calls
- Generate invoices from project chat threads
- Record expenses while discussing budgets
- Create client contacts after kickoff meetings
Integration
- Vendor
- Harvest
- Category
- other
- Auth
- OAUTH2
- Tools
- 50
- Composio slug
harvest
Tools
- Create Client
Tool to create a new client. use after gathering client details to register a new client in 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.
- Create Estimate
Tool to create a new estimate. use after gathering client and line item details.
- Create Estimate Item Category
Tool to create a new estimate item category in harvest. use after deciding to categorize line items within an estimate.
- 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.
- Create Expense
Tool to create a new expense entry. use when recording costs against projects. ensure either units or total cost is provided.
- Create Invoice
Tool to create a new invoice. use when you have gathered all invoice details and need to bill a client in 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.
- Create Invoice Message
Tool to create a new message for an invoice. use after confirming the invoice id when you need to notify a client with invoice details.
- Create Invoice Payment
Tool to create a new payment on an invoice. use when recording a payment against an existing invoice.
- Create Project
Tool to create a new project. use after confirming the client exists.
- Create Task
Tool to create a new task. use after identifying task details to register it in 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.
- Create User
Tool to create a new user. use after gathering user details to invite them to harvest.
- Delete Clientdestructive
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.
- Delete Client Contactdestructive
Tool to delete a client contact. use when you need to remove a contact that is no longer relevant. call after confirming the contact id exists.
- Delete Estimatedestructive
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.
- Delete Estimate Messagedestructive
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.
- Delete Invoicedestructive
Tool to delete an invoice. use when you need to remove an invoice that has no associated payments. call after confirming the invoice id exists.
- Delete Invoice Item Categorydestructive
Tool to delete an invoice item category. use when you need to remove an obsolete or incorrect invoice item category. call after confirming the invoice item category id exists.
- Delete Invoice Messagedestructive
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.
- Delete Invoice Paymentdestructive
Tool to delete an invoice payment. use when you need to remove a payment from an invoice after confirming payment details.
- Delete Projectdestructive
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.
- Delete Taskdestructive
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.
- Delete Time Entrydestructive
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.
- Delete Userdestructive
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.
- Get Client
Tool to retrieve a specific client by id. use when you need details of a client before invoicing or reporting.
- Get Client Contact
Tool to retrieve a specific client contact. use when you have client id and contact id to fetch and verify contact details.
- Get Company Info
Tool to retrieve information about the authenticated user's company. use after authentication to fetch company settings for display or configuration.
- Get Estimate
Tool to retrieve a specific estimate by id. use after confirming the estimate id. example: "get estimate with id 123456".
- 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.'
- Get Project
Tool to retrieve a specific harvest project by id. use when you have a project id and need its details.
- Get Task
Tool to retrieve a specific task by id. use when you have a task id and need its detailed information.
- 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.
- 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".
- List Client Contacts
Tool to list client contacts. use when you need to retrieve contacts with optional filtering and pagination.
- 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.
- List Estimate Messages
Tool to list messages for an estimate. use after obtaining an estimate id to retrieve associated messages, supports pagination and filtering by update time.
- 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.
- 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.
- 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.
- List Invoice Payments
Tool to retrieve payments for a specific invoice. use when you need to list all payments applied to an invoice after confirming the invoice exists.
- 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.'
- 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.
- 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.
- 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".
- List Users
Tool to list users. use when you need to retrieve a paginated list of users from 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.
- Update Client Contact
Tool to update a client contact. use when you have a contact id and need to modify its details.
- Update Company Info
Tool to update information about the company. use to modify company settings such as name, timezone, or formatting options. use after obtaining current settings to apply changes.
Setup
Setup guide
- 11. In Switchy, open your workspace settings and navigate to the Integrations tab. 2. Find Harvest in the MCP directory and click Connect. 3. You'll be redirected to Harvest's OAuth consent screen — log in with your Harvest account if prompted. 4. Review the requested scopes (clients, projects, time entries, expenses, estimates, invoices) and click Authorize. 5. Switchy confirms the connection and returns you to the workspace. 6. Open any Space and type '@Harvest list my active projects' to verify the integration works. 7. If the MCP responds with project names, you're ready to create clients, log time, draft estimates, and generate invoices by @mentioning Harvest in any conversation.
What teammates see: by default, memories from Harvest are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.
Works well with
Top models
Compatibility data appears once enough Spaces have used this MCP together with a given model.
How Switchy teams use it
Starter prompts
Log Time Entry
@Harvest log 4 hours to Project Alpha for today with the note 'API integration work'. Use my default hourly rate.Open in a Space →
Create New Client
@Harvest create a client named Acme Industries with the address 123 Main St, Springfield. Set currency to USD and mark as active.Open in a Space →
Draft Estimate
@Harvest create an estimate for client Acme Industries with two line items: 'Design phase' at $5000 and 'Development phase' at $12000. Set the issue date to today.Open in a Space →
Generate Invoice
@Harvest create an invoice for client Acme Industries covering all unbilled time entries from the last two weeks. Set the due date to 30 days from today.Open in a Space →
Record Expense
@Harvest record an expense of $150 for 'Adobe Creative Cloud subscription' against Project Alpha. Use today's date and mark it billable.Open in a Space →
Example outputs
Illustrative - representative of the model's voice and quality, not literal recordings.
@Harvest show me all unbilled time entries from the last two weeks and group them by project
Here's a summary of unbilled time across your active projects from the past 14 days: **Website Redesign (Client: Acme Corp)** — 42.5 hours unbilled **Mobile App Phase 2 (Client: TechStart)** — 28.0 hours unbilled **Internal R&D** — 15.5 hours unbilled Total unbilled: 86 hours. The Website Redesign project has the most outstanding time, primarily from design and frontend tasks logged by three team members. All entries are marked billable and ready for invoicing.
This example highlights Harvest's time-tracking read capabilities. The MCP can filter by date range and billable status, but the grouping logic depends on how your Harvest account structures projects. If you have many projects, consider narrowing the date range to avoid hitting rate limits on the Harvest API.
@Harvest create an invoice for Acme Corp covering all unbilled time on the Website Redesign project, due in 30 days
Invoice #INV-2847 created successfully for Acme Corp. **Line items:** 42.5 hours of design and development work from the Website Redesign project, totaling $6,375.00 at your standard rates. **Due date:** 30 days from today. **Status:** Draft (not yet sent to client). The invoice is ready for review in your Harvest dashboard. You can edit line items, adjust the message, or send it directly to the client contact on file.
This write action demonstrates Harvest's invoicing workflow. The MCP will create the invoice in draft status by default, giving you a chance to review before sending. Make sure your OAuth token has write permissions for invoices, and confirm that the project's time entries are marked billable in Harvest.
@Harvest compare our actual hours to estimated hours across all active projects and flag anything over budget by more than 10%
Here's the budget health check for your 8 active projects: **Over budget (>10%):** - Website Redesign: 118% of estimate (47.2h actual vs. 40h estimated) - Mobile App Phase 2: 112% of estimate (33.6h vs. 30h) **On track:** - 6 other projects within 10% variance The Website Redesign project is trending 18% over, primarily due to additional design revisions logged last week. Consider discussing scope adjustments with the client or reallocating hours from the contingency budget.
This synthesis example pairs Harvest's time and project data with the AI's ability to calculate variance and surface insights. The MCP reads both time entries and project estimates, then the AI performs the comparison logic. Useful for weekly check-ins, but note that Harvest's API returns estimates at the project level — task-level budget tracking requires additional configuration in your account.
Use-case deep-dives
When Harvest MCP speeds up invoice generation for agencies
A 6-person creative agency bills 12 active clients monthly. The finance lead pulls time entries from Harvest, cross-checks project budgets, and generates invoices in a 90-minute ritual every month-end. The Harvest MCP wins here because it exposes invoice creation, client lookup, and expense logging in one scope—your AI can draft the invoice, attach line items, and flag budget overruns without tab-switching. The 50-tool surface means you can also automate estimate approvals and client contact updates in the same workflow. If your agency runs on retainer billing or fixed-fee projects where invoices rarely change, the MCP is overkill—just use Harvest's native automations. But for project-based shops juggling variable scopes, this MCP cuts the monthly close from 90 minutes to 20.
Why solo consultants skip this MCP for expense logging
A solo consultant travels twice a month and logs 8-12 expenses per trip—meals, transit, client parking. Harvest's mobile app already handles receipt photos and per-diem rates in two taps. The MCP's Create Expense tool requires you to surface project IDs and cost categories in a chat interface, which adds friction instead of removing it. OAuth2 setup takes 15 minutes; the mobile app is instant. This MCP makes sense if you're batching expense imports from a separate tool (say, a corporate card feed) or reconciling 50+ line items at once where an AI can categorize and assign projects in bulk. For real-time, on-the-go logging by one person, the native app beats the MCP every time.
When this MCP handles estimate versioning for creative teams
A 4-person design studio sends 3-5 project estimates per week. Clients request scope changes—add a round of revisions, swap deliverables, adjust timelines. The studio's project manager currently duplicates estimates in Harvest's UI, updates line items manually, and re-sends via email. The Harvest MCP's Create Estimate, Create Estimate Item Category, and Create Estimate Message tools let your AI clone the old estimate, apply the scope delta, and trigger the send event in one prompt. OAuth2 means the AI acts as the PM without shared credentials. The threshold: if your estimates are mostly templated (same line items, same clients), Harvest's native duplication is faster. But if you're customizing 60% of estimates and fielding revision requests in Slack, the MCP turns a 12-minute task into a 2-minute chat.
Frequently asked
What does the Harvest MCP let me do in Switchy?
It lets AI agents create and manage time-tracking data, invoices, estimates, expenses, and client records in your Harvest account. The MCP exposes 50 tools covering everything from logging billable hours to sending estimate messages. You can ask an agent to draft an invoice, add a new client contact, or create an expense entry without opening Harvest.
Do I need admin access to connect Harvest via OAuth?
You need a Harvest account with permission to create clients, projects, invoices, and expenses. Harvest's OAuth flow will show you exactly which scopes Switchy requests—typically read/write access to time entries, invoicing, and client data. If your role is restricted to time-entry-only, some tools won't work. Check with your Harvest admin before connecting.
Can the Harvest MCP approve timesheets or run payroll?
No. The MCP creates and updates time entries, invoices, estimates, and expenses, but it doesn't handle timesheet approvals or payroll processing. Those workflows live in Harvest's native UI or require separate integrations. If you need approval automation, you'll still use Harvest's built-in approval rules or a dedicated payroll tool.
Why use the MCP instead of Harvest's API or Zapier?
The MCP lets you describe what you want in plain language—"draft an invoice for Project X with last week's hours"—and the agent figures out which sequence of Harvest API calls to make. Zapier requires you to map triggers and actions upfront. The MCP is faster for ad-hoc requests and multi-step workflows you don't want to template in advance.
Who on my team should connect the Harvest MCP?
Whoever owns billing and project setup. That person's OAuth token determines which Harvest data the MCP can read and write. If you connect it with a junior account, agents won't be able to create clients or invoices. One connection per workspace is typical—everyone shares the same Harvest view through Switchy's shared context.