Connectors · Accounting & finance
Harvest MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Harvest and the rest of your systems. It gives your agent 211 Harvest actions (93 reads, 90 writes and 28 that wait for a confirmation) and holds the Harvest credential itself, so the agent never does. It paces Harvest's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "harvest.invoices.list", intent: "check which Harvest account is connected"}# List all invoices · read · 1 upstream call- 211actionsin one signed file
- 93readlook, never change
- 90writecreate and update
- 28wait for a yesdestructive, confirmed first
Set up
Connect Harvest in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect Harvest.
Header credentials. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
access_tokenHarvest access token: a Personal Access Token from https://id.getharvest.com/developers (Create new personal access…account_idHarvest Account ID: shown beside the token on https://id.getharvest.com/developers (or returned by…
account { op: "connections.requirements", service: "harvest" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "harvest.invoices.list" }# list all invoices · read · 1 upstream callcheck { action: "harvest.invoices.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Harvest at a glance
- Sign-in
- Header credentials. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
access_tokenaccount_id- Limits we pace to
- 100 calls per 15 seconds, per connection
- API covered
- Harvest API v2 (REST, documented at help.getharvest.com/api-v2)
api.harvestapp.com - Built from
- Harvest's documentation, read 22 October 2026help.getharvest.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 93 of 93 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 12, so ask can line Harvest up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Harvest.
211 actions in 48 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 93readlook, never change
- 90writecreate and update
- 28destructivewait for a confirmation
Reports
1414 read · 0 write · 0 destructive
Expense Categories Report · Clients Report · Expense Detailed Report · Projects Report
Pto requests
102 read · 7 write · 1 destructive
Create a time off request · List all time off requests · Approve a time off request · Approve multiple time off requests
Time entries
92 read · 5 write · 2 destructive
List all time entries · Create a time entry via duration · Update a time entry · Retrieve a time entry
Invoice messages
82 read · 5 write · 1 destructive
Create and send an invoice message · List all messages for an invoice · Mark an open invoice as closed · Mark an open invoice as a draft
Invoices
83 read · 4 write · 1 destructive
List all invoices · Create a free-form invoice · Retrieve an invoice · Update an invoice
Estimate messages
71 read · 5 write · 1 destructive
Create an estimate message · List all messages for an estimate · Mark an open estimate as accepted · Mark an open estimate as declined
Expenses
72 read · 4 write · 1 destructive
List all expenses · Create an expense · Retrieve an expense · Update an expense
Users
73 read · 3 write · 1 destructive
List all users · Retrieve the currently authenticated user · Create a user · Retrieve a user
40 more areas · 141 actions
- Saved reports 6
- Task assignments 6
- User assignments 6
- Clients 5
- Contacts 5
- Custom roles 5
- Estimate item categories 5
- Estimates 5
- Expense categories 5
- Invoice item categories 5
- Notifications 5
- Projects 5
- Pto holiday calendars 5
- Pto types 5
- Pto work schedules 5
- Roles 5
- Tasks 5
- Pto holiday calendar entries 4
- Billable rates 3
- Cost rates 3
- Gusto sync runs 3
- Gusto user mappings 3
- Imports 3
- Invoice payments 3
- Notification preferences 3
- Pto allocations 3
- Reimbursements 3
- Approvals 2
- Company 2
- E invoicing 2
- Gusto settings 2
- Project assignments 2
- Pto assignments 2
- Reimbursement settings 2
- Report exports 2
- Teammates 2
- Accounts 1
- Permissions 1
- Pto balances 1
- Tags 1
Top actions
The Harvest API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 56 of Harvest's 57 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
harvest.invoices.listList all invoices | List all invoices. | read | finance.invoice.list101 connectors |
harvest.estimates.listList all estimates | List all estimates. | read | finance.quote.list52 connectors |
harvest.expenses.listList all expenses | List all expenses. | read | finance.expense.list40 connectors |
harvest.tasks.listList all tasks | List all tasks. | read | work.task.list122 connectors |
harvest.users.listList all users | List all users. | read | identity.user.list474 connectors |
harvest.projects.listList all projects | List all projects. | read | work.project.list109 connectors |
harvest.time_entries.listList all time entries | List all time entries. | read | work.time_entry.list59 connectors |
harvest.invoices.createCreate a free-form invoice | Create a free-form invoice. | write | finance.invoice.create74 connectors |
harvest.roles.listList all roles | List all roles. | read | identity.role.list184 connectors |
harvest.estimates.createCreate an estimate | Create an estimate. | write | finance.quote.create52 connectors |
harvest.expenses.createCreate an expense | Create an expense. | write | finance.expense.create36 connectors |
harvest.invoices.deleteDelete an invoice | Delete an invoice. | destructive | finance.invoice.delete56 connectors |
Try it
Prompts to paste into Claude.
Each one names the Harvest actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which Harvest invoices are more than 30 days overdue? Group them by customer with the total owed.
calls
harvest.invoices.list - Writewrite
Create a free-form invoice in Harvest. Show me exactly what you will send before you save it.
calls
harvest.invoices.create - Across systemsread
For each customer, how many invoices are in Harvest and how many tickets in ConnectWise PSA?
calls
harvest.invoices.listconnectwise_manage.tickets.list
Across your systems
Harvest, joined to the rest of your business.
One ask fetches from Harvest and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
For each customer, how many invoices are in Harvest and how many tickets in ConnectWise PSA?
harvest.invoices.list+connectwise_manage.tickets.list, oncrm.company· ConnectWise PSAFor each customer, how many invoices are in Harvest and how many tickets in HubSpot CRM?
harvest.invoices.list+hubspot_crm.tickets.list, oncrm.company· HubSpot CRM
identity.user 517crm.company 227crm.contact 192identity.current_user 142work.project 116identity.role 107work.task 105finance.invoice 91ask { intent: "for each customer, how many invoices are in Harvest and how many tickets in ConnectWise PSA", steps: [ { action: "harvest.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 }, { action: "connectwise_manage.tickets.list", as: "tix", input: {}, limit: 100, max_pages: 5 }, { join: { left: "inv", right: "tix", on: "crm.company", group_by: "inv.company_name", select: ["inv.company_name", "count(inv.id) as invoices", "count(tix.id) as tickets"] } } ]}Governance for Harvest
Destructive actions wait for a yes.
28 Harvest actions are destructive. These are all of them:
- Delete an invoice
harvest.invoices.delete - Delete an estimate
harvest.estimates.delete - Delete an expense
harvest.expenses.delete - Delete a task
harvest.tasks.delete - Delete a project
harvest.projects.delete - Delete a user
harvest.users.delete - Delete a time entry
harvest.time_entries.delete - Delete a contact
harvest.contacts.delete - Delete a client
harvest.clients.delete - Delete a role
harvest.roles.delete - Delete an invoice payment
harvest.invoice_payments.delete - Delete a time off policy
harvest.pto_types.delete - Delete a custom role
harvest.custom_roles.delete - Delete a saved report
harvest.saved_reports.delete - Disconnect from e-invoicing
harvest.e_invoicing.disconnect - Delete an invoice message
harvest.invoice_messages.delete - Delete a task assignment
harvest.task_assignments.delete - Delete a user assignment
harvest.user_assignments.delete - Delete an estimate message
harvest.estimate_messages.delete - Delete an expense category
harvest.expense_categories.delete - Delete a user mapping
harvest.gusto_user_mappings.delete - Delete a holiday calendar
harvest.pto_holiday_calendars.delete - Deactivate a work schedule
harvest.pto_work_schedules.deactivate - Delete an invoice item category
harvest.invoice_item_categories.delete - Delete an estimate item category
harvest.estimate_item_categories.delete - Delete a holiday calendar entry
harvest.pto_holiday_calendar_entries.delete - Delete a time entry’s external reference
harvest.time_entries.delete_external_reference - Cancel a time off request
harvest.pto_requests.cancel
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete an invoice?
intent: the user asked me to delete an invoice
account { op: "keys.create", name: "harvest-agent", allowed_actions: ["harvest.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "harvest.invoices.delete", approver: "[email protected]" }, { match: "harvest.estimates.delete", approver: "[email protected]" }, { match: "harvest.expenses.delete", approver: "[email protected]" } ]}Cost
What Harvest costs on actionlake.
Every Harvest action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Harvest refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 211 Harvest actions
- 211actions pageeach page of a long list is one call
- 93reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Harvest action.
211 actions by area: the id your agent calls, what it does, and its effect.
Reports14
harvest.reports.expenses_categoriesExpense Categories Reportreadharvest.reports.expenses_clientsClients Reportreadharvest.reports.expenses_detailedExpense Detailed Reportreadharvest.reports.expenses_projectsProjects Reportreadharvest.reports.expenses_teamTeam Reportreadharvest.reports.generateGenerate a reportreadharvest.reports.profitabilityProfitability Reportreadharvest.reports.project_budgetProject Budget Reportreadharvest.reports.time_clientsClients Reportreadharvest.reports.time_detailedTime Detailed Reportreadharvest.reports.time_projectsProjects Reportreadharvest.reports.time_tasksTasks Reportreadharvest.reports.time_teamTeam Reportreadharvest.reports.uninvoicedUninvoiced Reportread
Pto requests10
harvest.pto_requests.approveApprove a time off requestwriteharvest.pto_requests.bulk_approveApprove multiple time off requestswriteharvest.pto_requests.bulk_declineDecline multiple time off requestswriteharvest.pto_requests.cancelCancel a time off requestdestructiveharvest.pto_requests.createCreate a time off requestwriteharvest.pto_requests.declineDecline a time off requestwriteharvest.pto_requests.getRetrieve a time off requestreadharvest.pto_requests.listList all time off requestsreadharvest.pto_requests.request_changesRequest changes on a time off requestwriteharvest.pto_requests.updateUpdate a time off requestwrite
Time entries9
harvest.time_entries.createCreate a time entry via durationwriteharvest.time_entries.create_with_timesCreate a time entry via start and end timewriteharvest.time_entries.deleteDelete a time entrydestructiveharvest.time_entries.delete_external_referenceDelete a time entry’s external referencedestructiveharvest.time_entries.getRetrieve a time entryreadharvest.time_entries.listList all time entriesreadharvest.time_entries.restartRestart a stopped time entrywriteharvest.time_entries.stopStop a running time entrywriteharvest.time_entries.updateUpdate a time entrywrite
Invoice messages8
harvest.invoice_messages.createCreate and send an invoice messagewriteharvest.invoice_messages.deleteDelete an invoice messagedestructiveharvest.invoice_messages.listList all messages for an invoicereadharvest.invoice_messages.mark_closedMark an open invoice as closedwriteharvest.invoice_messages.mark_draftMark an open invoice as a draftwriteharvest.invoice_messages.mark_sentMark a draft invoice as sentwriteharvest.invoice_messages.previewRetrieve invoice message subject and body for specific invoicereadharvest.invoice_messages.reopenRe-open a closed invoicewrite
Invoices8
harvest.invoices.createCreate a free-form invoicewriteharvest.invoices.create_from_trackedCreate an invoice based on tracked time and expenseswriteharvest.invoices.deleteDelete an invoicedestructiveharvest.invoices.e_invoice_statusRetrieve an e-invoice statusreadharvest.invoices.getRetrieve an invoicereadharvest.invoices.listList all invoicesreadharvest.invoices.send_e_invoiceSend an e-invoicewriteharvest.invoices.updateUpdate an invoicewrite
Estimate messages7
harvest.estimate_messages.createCreate an estimate messagewriteharvest.estimate_messages.deleteDelete an estimate messagedestructiveharvest.estimate_messages.listList all messages for an estimatereadharvest.estimate_messages.mark_acceptedMark an open estimate as acceptedwriteharvest.estimate_messages.mark_declinedMark an open estimate as declinedwriteharvest.estimate_messages.mark_sentMark a draft estimate as sentwriteharvest.estimate_messages.reopenRe-open a closed estimatewrite
Expenses7
harvest.expenses.approveApprove an expensewriteharvest.expenses.createCreate an expensewriteharvest.expenses.deleteDelete an expensedestructiveharvest.expenses.getRetrieve an expensereadharvest.expenses.listList all expensesreadharvest.expenses.updateUpdate an expensewriteharvest.expenses.withdrawWithdraw an expensewrite
Users7
harvest.users.archiveArchive a userwriteharvest.users.createCreate a userwriteharvest.users.deleteDelete a userdestructiveharvest.users.getRetrieve a userreadharvest.users.listList all usersreadharvest.users.meRetrieve the currently authenticated userreadharvest.users.updateUpdate a userwrite
Saved reports6
harvest.saved_reports.createCreate a saved reportwriteharvest.saved_reports.deleteDelete a saved reportdestructiveharvest.saved_reports.getRetrieve a saved reportreadharvest.saved_reports.listList all saved reportsreadharvest.saved_reports.runRun a saved reportreadharvest.saved_reports.updateUpdate a saved reportwrite
Task assignments6
harvest.task_assignments.createCreate a task assignmentwriteharvest.task_assignments.deleteDelete a task assignmentdestructiveharvest.task_assignments.getRetrieve a task assignmentreadharvest.task_assignments.listList all task assignmentsreadharvest.task_assignments.list_for_projectList all task assignments for a specific projectreadharvest.task_assignments.updateUpdate a task assignmentwrite
User assignments6
harvest.user_assignments.createCreate a user assignmentwriteharvest.user_assignments.deleteDelete a user assignmentdestructiveharvest.user_assignments.getRetrieve a user assignmentreadharvest.user_assignments.listList all user assignmentsreadharvest.user_assignments.list_for_projectList all user assignments for a specific projectreadharvest.user_assignments.updateUpdate a user assignmentwrite
Clients5
harvest.clients.createCreate a clientwriteharvest.clients.deleteDelete a clientdestructiveharvest.clients.getRetrieve a clientreadharvest.clients.listList all clientsreadharvest.clients.updateUpdate a clientwrite
Contacts5
harvest.contacts.createCreate a contactwriteharvest.contacts.deleteDelete a contactdestructiveharvest.contacts.getRetrieve a contactreadharvest.contacts.listList all contactsreadharvest.contacts.updateUpdate a contactwrite
Custom roles5
harvest.custom_roles.createCreate a custom rolewriteharvest.custom_roles.deleteDelete a custom roledestructiveharvest.custom_roles.getRetrieve a custom rolereadharvest.custom_roles.listList all custom rolesreadharvest.custom_roles.updateUpdate a custom rolewrite
Estimate item categories5
harvest.estimate_item_categories.createCreate an estimate item categorywriteharvest.estimate_item_categories.deleteDelete an estimate item categorydestructiveharvest.estimate_item_categories.getRetrieve an estimate item categoryreadharvest.estimate_item_categories.listList all estimate item categoriesreadharvest.estimate_item_categories.updateUpdate an estimate item categorywrite
Estimates5
harvest.estimates.createCreate an estimatewriteharvest.estimates.deleteDelete an estimatedestructiveharvest.estimates.getRetrieve an estimatereadharvest.estimates.listList all estimatesreadharvest.estimates.updateUpdate an estimatewrite
Expense categories5
harvest.expense_categories.createCreate an expense categorywriteharvest.expense_categories.deleteDelete an expense categorydestructiveharvest.expense_categories.getRetrieve an expense categoryreadharvest.expense_categories.listList all expense categoriesreadharvest.expense_categories.updateUpdate an expense categorywrite
Invoice item categories5
harvest.invoice_item_categories.createCreate an invoice item categorywriteharvest.invoice_item_categories.deleteDelete an invoice item categorydestructiveharvest.invoice_item_categories.getRetrieve an invoice item categoryreadharvest.invoice_item_categories.listList all invoice item categoriesreadharvest.invoice_item_categories.updateUpdate an invoice item categorywrite
Notifications5
harvest.notifications.listList all notificationsreadharvest.notifications.mark_all_readMark all notifications as readwriteharvest.notifications.mark_readMark a notification as readwriteharvest.notifications.peekPeek at notificationsreadharvest.notifications.unread_countRetrieve the unread countread
Projects5
harvest.projects.createCreate a projectwriteharvest.projects.deleteDelete a projectdestructiveharvest.projects.getRetrieve a projectreadharvest.projects.listList all projectsreadharvest.projects.updateUpdate a projectwrite
Pto holiday calendars5
harvest.pto_holiday_calendars.createCreate a holiday calendarwriteharvest.pto_holiday_calendars.deleteDelete a holiday calendardestructiveharvest.pto_holiday_calendars.getRetrieve a holiday calendarreadharvest.pto_holiday_calendars.listList all holiday calendarsreadharvest.pto_holiday_calendars.updateUpdate a holiday calendarwrite
Pto types5
harvest.pto_types.createCreate a time off policywriteharvest.pto_types.deleteDelete a time off policydestructiveharvest.pto_types.getRetrieve a time off policyreadharvest.pto_types.listList all time off policiesreadharvest.pto_types.updateUpdate a time off policywrite
Pto work schedules5
harvest.pto_work_schedules.createCreate a work schedulewriteharvest.pto_work_schedules.deactivateDeactivate a work scheduledestructiveharvest.pto_work_schedules.getRetrieve a work schedulereadharvest.pto_work_schedules.listList all work schedulesreadharvest.pto_work_schedules.updateUpdate a work schedulewrite
Roles5
harvest.roles.createCreate a rolewriteharvest.roles.deleteDelete a roledestructiveharvest.roles.getRetrieve a rolereadharvest.roles.listList all rolesreadharvest.roles.updateUpdate a rolewrite
Tasks5
harvest.tasks.createCreate a taskwriteharvest.tasks.deleteDelete a taskdestructiveharvest.tasks.getRetrieve a taskreadharvest.tasks.listList all tasksreadharvest.tasks.updateUpdate a taskwrite
Pto holiday calendar entries4
harvest.pto_holiday_calendar_entries.createCreate an entry in a holiday calendarwriteharvest.pto_holiday_calendar_entries.deleteDelete a holiday calendar entrydestructiveharvest.pto_holiday_calendar_entries.listList entries in a holiday calendarreadharvest.pto_holiday_calendar_entries.updateUpdate a holiday calendar entrywrite
Billable rates3
harvest.billable_rates.createCreate a billable ratewriteharvest.billable_rates.getRetrieve a billable ratereadharvest.billable_rates.listList all billable rates for a specific userread
Cost rates3
harvest.cost_rates.createCreate a cost ratewriteharvest.cost_rates.getRetrieve a cost ratereadharvest.cost_rates.listList all cost rates for a specific userread
Gusto sync runs3
harvest.gusto_sync_runs.createCreate a sync runwriteharvest.gusto_sync_runs.getRetrieve a sync runreadharvest.gusto_sync_runs.previewPreview a sync runread
Gusto user mappings3
harvest.gusto_user_mappings.bulk_createBulk create user mappingswriteharvest.gusto_user_mappings.createCreate a user mappingwriteharvest.gusto_user_mappings.deleteDelete a user mappingdestructive
Imports3
harvest.imports.getRetrieve an importreadharvest.imports.listList all importsreadharvest.imports.revertRevert an importwrite
Invoice payments3
harvest.invoice_payments.createCreate an invoice paymentwriteharvest.invoice_payments.deleteDelete an invoice paymentdestructiveharvest.invoice_payments.listList all payments for an invoiceread
Notification preferences3
harvest.notification_preferences.getRetrieve notification preferencesreadharvest.notification_preferences.replaceUpdate notification preferences with PUTwriteharvest.notification_preferences.updateUpdate notification preferenceswrite
Pto allocations3
harvest.pto_allocations.bulk_updateBulk update user allocationswriteharvest.pto_allocations.listList user allocationsreadharvest.pto_allocations.updateUpdate or reset a user allocationwrite
Reimbursements3
harvest.reimbursements.listList all reimbursementsreadharvest.reimbursements.rejectReject a reimbursementwriteharvest.reimbursements.restoreRestore a reimbursementwrite
Approvals2
harvest.approvals.listList all approvalsreadharvest.approvals.submitSubmit a timesheet for approvalwrite
Company2
harvest.company.getRetrieve a companyreadharvest.company.updateUpdate a companywrite
E invoicing2
harvest.e_invoicing.disconnectDisconnect from e-invoicingdestructiveharvest.e_invoicing.enrollEnroll in e-invoicingwrite
Gusto settings2
harvest.gusto_settings.getRetrieve Gusto settingsreadharvest.gusto_settings.updateUpdate Gusto settingswrite
Project assignments2
harvest.project_assignments.listList active project assignmentsreadharvest.project_assignments.list_mineList active project assignments for the currently authenticated userread
Pto assignments2
harvest.pto_assignments.listList user assignmentsreadharvest.pto_assignments.updateUpdate user assignmentswrite
Reimbursement settings2
harvest.reimbursement_settings.getRetrieve reimbursement settingsreadharvest.reimbursement_settings.updateUpdate reimbursement settingswrite
Report exports2
harvest.report_exports.createCreate a report exportwriteharvest.report_exports.getRetrieve a report exportread
Teammates2
harvest.teammates.listList all assigned teammates for a specific userreadharvest.teammates.updateUpdate a user’s assigned teammateswrite
Accounts1
harvest.accounts.listScopes and account accessread
Permissions1
harvest.permissions.listList all permissionsread
Pto balances1
harvest.pto_balances.getRetrieve time off balancesread
Tags1
harvest.tags.listList all tagsread
Questions
The Harvest MCP server, answered.
Is there a Harvest MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 211 Harvest actions across reports, pto requests, time entries and invoice messages, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Harvest.
What do I need to connect Harvest?
Harvest access token: a Personal Access Token from https://id.getharvest.com/developers (Create new personal access… and Harvest Account ID: shown beside the token on https://id.getharvest.com/developers (or returned by…. The free call account { op: "connections.requirements", service: "harvest" } lists exactly what to paste.
Can an AI agent delete or change things in Harvest?
Only if its key allows it, and only with an explicit confirmation. 28 Harvest actions are destructive, including delete an invoice, delete an estimate and delete an expense. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my Harvest API limit?
actionlake paces every call to the limits in the Harvest service file: 100 calls per 15 seconds per connection. Repeated reads are answered from cache (93 Harvest actions can be), which never reaches Harvest.
What does a Harvest action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (211 Harvest actions page). Cache hits, searches, dry runs and calls Harvest refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which Harvest API does it cover?
The Harvest API v2 (REST, documented at help.getharvest.com/api-v2) at api.harvestapp.com. It is built from Harvest's documentation as read on 22 October 2026. 211 actions in 48 areas, each one in the signed service file (version 1.0.0).
Can I combine Harvest with my other systems?
Yes. ask joins Harvest to ConnectWise PSA or HubSpot CRM on the same customer and returns the answer rather than every row. Harvest maps crm.company, which 227 other connectors also map.
Does actionlake keep my Harvest data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Harvest credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent Harvest today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.