---
title: "FreshBooks MCP server for AI agents - actionlake"
description: "Give Claude 184 FreshBooks actions through one MCP server: reporting, invoicing, payments. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/freshbooks
updated: 2026-09-21
---

Connectors · Accounting & finance

# FreshBooks MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to FreshBooks and the rest of your systems. It gives your agent 184 FreshBooks actions (94 reads, 66 writes and 24 that wait for a confirmation) and holds the FreshBooks credential itself, so the agent never does. It paces FreshBooks's limits and records every call. Connecting FreshBooks needs your own FreshBooks OAuth app and one admin sign-in.

[Connect FreshBooks free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

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/mcp`

the first call

```
do {
  action: "freshbooks.invoices.list",
  intent: "check which FreshBooks account is connected"
}
# List invoices · read · 1 upstream call
```

- 184 actions in one signed file
- 94 read look, never change
- 66 write create and update
- 24 wait for a yes destructive, confirmed first

Set up

## Connect FreshBooks in three steps.

1. 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`
2. 02
   ### Connect FreshBooks.
   OAuth 2.0, authorization code. You register your own OAuth app with FreshBooks, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.
   Before the first sign-in, FreshBooks needs an OAuth app of your own, registered in its developer portal. actionlake has no FreshBooks app to lend you.
   - `access_token` Access token from one sign-in with your own OAuth app
   - `refresh_token` Refresh token from the same sign-in; the access token is renewed from it
   - `client_id` FreshBooks app client id
   - `client_secret` FreshBooks app client secret
   Found for you at connect: account id, business id, business uuid and identity id.
   ```
   account { op: "connections.requirements", service: "freshbooks" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "freshbooks.invoices.list" }
   # list invoices · read · 1 upstream call
   check { action: "freshbooks.invoices.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

FreshBooks at a glance

**Sign-in**

OAuth 2.0, authorization code. You register your own OAuth app with FreshBooks, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.

**You provide**

`access_token` `refresh_token` `client_id` `client_secret`

**Found for you**

account id, business id, business uuid and identity id

**Limits we pace to**

100 calls a minute, per connection

**API covered**

FreshBooks API alpha`api.freshbooks.com`

**Built from**

FreshBooks's documentation, read 19 September 2026[freshbooks.com](https://www.freshbooks.com/api/start) [documenter.getpostman.com](https://documenter.getpostman.com/view/3322108/S1ERwwza)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

94 of 94 reads, for up to an hour; a write clears what it affects

**Ready-made plans**

8 in the store

**Shared entities**

14, so ask can line FreshBooks up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in FreshBooks.

184 actions in 19 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **94** read look, never change
- **66** write create and update
- **24** destructive wait for a confirmation

1. ### Reporting
   22
   22 read · 0 write · 0 destructive
   Run the time entry details report · List account entry details · Run a client account statement · Run the accounts aging report
2. ### Invoicing
   19
   8 read · 8 write · 3 destructive
   List invoices · List credit notes · Create an invoice · Get one invoice
3. ### Payments
   16
   6 read · 7 write · 3 destructive
   List payments · Record a payment on an invoice · Get one payment · Update a payment
4. ### Payables
   15
   5 read · 7 write · 3 destructive
   List bills · Create a bill · Get one bill · List bill payments
5. ### Catalogue
   14
   7 read · 6 write · 1 destructive
   List items · Create an item · Get one item · Update an item
6. ### Users
   12
   8 read · 3 write · 1 destructive
   List team members · List business users · List staff · Get the authenticated identity
7. ### Ledger
   12
   8 read · 4 write · 0 destructive
   List journal entry accounts · List journal entry details · List ledger accounts · Create a ledger account
8. ### Expenses
   10
   6 read · 3 write · 1 destructive
   List expenses · Create an expense · Get one expense · Update an expense

**11 more areas · 64 actions**

- Projects **9**
- Time **8**
- Contacts **7**
- Quoting **7**
- Income **6**
- Contracts **5**
- Tax **5**
- Webhooks **5**
- Tasks **5**
- Settings **4**
- Developer **3**

Top actions

## The FreshBooks API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 116 of FreshBooks's 116 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `freshbooks.invoices.list` List invoices | List invoices from FreshBooks. Paged; each page is one billed upstream call. | read | `finance.invoice.list` 101 connectors |
| `freshbooks.payments.list` List payments | List payments from FreshBooks. Paged; each page is one billed upstream call. | read | `finance.payment.list` 75 connectors |
| `freshbooks.estimates.list` List estimates | List estimates from FreshBooks. Paged; each page is one billed upstream call. | read | `finance.quote.list` 52 connectors |
| `freshbooks.expenses.list` List expenses | List expenses from FreshBooks. Paged; each page is one billed upstream call. | read | `finance.expense.list` 40 connectors |
| `freshbooks.credit_notes.list` List credit notes | List credit notes from FreshBooks. Paged; each page is one billed upstream call. | read | `finance.credit_note.list` 33 connectors |
| `freshbooks.bills.list` List bills | List bills from FreshBooks. Paged; each page is one billed upstream call. | read | `finance.bill.list` 31 connectors |
| `freshbooks.projects.list` List projects | List projects from FreshBooks. Paged; each page is one billed upstream call. | read | `work.project.list` 109 connectors |
| `freshbooks.items.list` List items | List items from FreshBooks. Paged; each page is one billed upstream call. | read | `finance.billing_item.list` 24 connectors |
| `freshbooks.invoices.create` Create an invoice | Create an invoice in FreshBooks. | write | `finance.invoice.create` 74 connectors |
| `freshbooks.payments.create` Record a payment on an invoice | Record a payment on an invoice in FreshBooks. | write | `finance.payment.create` 67 connectors |
| `freshbooks.estimates.create` Create an estimate | Create an estimate in FreshBooks. | write | `finance.quote.create` 52 connectors |
| `freshbooks.invoices.delete` Delete an invoice | Delete an invoice in FreshBooks. | destructive | `finance.invoice.delete` 56 connectors |

Try it

## Prompts to paste into Claude.

Each one names the FreshBooks actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Which FreshBooks invoices are more than 30 days overdue? Group them by customer with the total owed.
   calls `freshbooks.invoices.list`
2. Plan write
   Invoice a client for unbilled time in FreshBooks. Ask me before anything is sent or changed.
   calls `freshbooks.time_entries.list` `freshbooks.clients.get` `freshbooks.invoices.create` `freshbooks.time_entries.update` `freshbooks.invoices.mark_sent`
3. Plan write
   Turn an accepted estimate into a sent invoice in FreshBooks. Ask me before anything is sent or changed.
   calls `freshbooks.estimates.get` `freshbooks.estimates.accept` `freshbooks.invoices.create` `freshbooks.invoices.send` `freshbooks.invoices.share_link`
4. Write write
   Create an invoice in FreshBooks. Show me exactly what you will send before you save it.
   calls `freshbooks.invoices.create`
5. Across systems read
   For each customer, how many invoices are in FreshBooks and how many tickets in ConnectWise PSA?
   calls `freshbooks.invoices.list` `connectwise_manage.tickets.list`

Across your systems

## FreshBooks, joined to the rest of your business.

One `ask` fetches from FreshBooks 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 FreshBooks and how many tickets in ConnectWise PSA?
  `freshbooks.invoices.list` + `connectwise_manage.tickets.list`, on `crm.company` · [ConnectWise PSA](https://actionlake.com/connectors/connectwise-psa)
- For each customer, how many invoices are in FreshBooks and how many tickets in HubSpot CRM?
  `freshbooks.invoices.list` + `hubspot_crm.tickets.list`, on `crm.company` · [HubSpot CRM](https://actionlake.com/connectors/hubspot-crm)

Also mapped by other connectors `identity.user` **517** `crm.company` **227** `work.project` **116** `finance.invoice` **91** `finance.payment` **53** `finance.quote` **45** `work.time_entry` **40** `finance.ledger_account` **32**

ask

```
ask {
  intent: "for each customer, how many invoices are in FreshBooks and how many tickets in ConnectWise PSA",
  steps: [
    { action: "freshbooks.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"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

The plan store

## Ready-made plans for FreshBooks.

8 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

1. ### Pull the month-end finance report pack
   Use it when You need the month-end numbers for a FreshBooks business in one go.
   **Effect**
   read
   **Steps**
   5
   **Needs**
   account id, business uuid, end date and start date
   **Install**
   `freshbooks-month-end-finance-pack`
2. ### Review a quarter's tax and expense position
   Use it when A quarter is closing and you want the tax summary alongside what the expenses were spent on.
   **Effect**
   read
   **Steps**
   5 · loops
   **Needs**
   account id, business uuid, end date and start date
   **Install**
   `freshbooks-quarterly-tax-and-expense-review`
3. ### Chase overdue invoices with a resend
   Use it when A client ledger has slipped and you want to re-send every overdue invoice in one pass.
   A person decides Re-send _count_ overdue FreshBooks invoices to _recipient_.
   **Effect**
   write
   **Steps**
   4 · loops
   **Needs**
   account id and recipient
   **Install**
   `freshbooks-chase-overdue-invoices`
4. ### Onboard a client with a project and retainer
   Use it when A new client has signed and needs a record, a project and a recurring retainer set up.
   A person decides Create client _organization_ with a _frequency_ retainer of _fee_ starting _start date_.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   account id, business id, email, fee, frequency, organization, project title and start date
   **Install**
   `freshbooks-onboard-client-with-retainer`
5. ### Record a payment and confirm the invoice balance
   Use it when A client payment has landed and you want it posted against the right FreshBooks invoice.
   A person decides Invoice _invoice number_ already reads as paid — post another _amount_ against it?
   **Effect**
   write
   **Steps**
   5
   **Needs**
   account id, amount, date, invoice id and type
   **Install**
   `freshbooks-record-payment-against-invoice`
6. ### Invoice a client for unbilled time
   Use it when A client has logged billable hours that have not been invoiced and you want them billed and closed off.
   A person decides Invoice _organization_ for _number of items_ unbilled time entries.
   **Effect**
   write
   **Steps**
   6 · loops
   **Needs**
   account id, business id, client id, create date, customerid and lines
   **Install**
   `freshbooks-bill-unbilled-time`
7. ### Turn an accepted estimate into a sent invoice
   Use it when A client has verbally agreed to an estimate and you want it accepted and invoiced in one pass.
   A person decides Accept estimate _estimate number_ and invoice the client for it.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   account id, create date, estimate id, lines and recipient
   **Install**
   `freshbooks-estimate-to-invoice`
8. ### Pay a vendor bill and archive it
   Use it when A supplier bill is due and you want it paid, checked and archived in one pass.
   A person decides Pay _amount_ against bill _bill number_ by _payment type_.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   account id, amount, bill id, paid date and payment type
   **Install**
   `freshbooks-pay-vendor-bill`

install a plan

```
account { op: "plans.install", slug: "freshbooks-month-end-finance-pack" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for FreshBooks

## Destructive actions wait for a yes.

24 FreshBooks actions are destructive. These are all of them:

- Delete an invoice `freshbooks.invoices.delete`
- Delete a payment `freshbooks.payments.delete`
- Delete an estimate `freshbooks.estimates.delete`
- Delete an expense `freshbooks.expenses.delete`
- Delete a project `freshbooks.projects.delete`
- Delete a bill `freshbooks.bills.delete`
- Delete a credit note `freshbooks.credit_notes.delete`
- Delete an item `freshbooks.items.delete`
- Delete a task `freshbooks.tasks.delete`
- Delete a time entry `freshbooks.time_entries.delete`
- Delete a client `freshbooks.clients.delete`
- Delete an other income entry `freshbooks.other_income.delete`
- Delete a bill payment `freshbooks.bill_payments.delete`
- Hard-delete an other income entry `freshbooks.other_income.delete_hard`
- Delete a staff member `freshbooks.staff.delete`
- Delete a tax `freshbooks.taxes.delete`
- Delete a recurring invoice profile `freshbooks.invoice_profiles.delete`
- Delete a bill vendor `freshbooks.bill_vendors.delete`
- Delete a payment gateway `freshbooks.gateways.delete`
- Delete a secondary contact `freshbooks.contacts.delete`
- Delete a checkout link `freshbooks.checkout_links.delete`
- Delete a webhook callback `freshbooks.callbacks.delete`
- Deactivate a retainer `freshbooks.retainers.delete`
- Delete a business `freshbooks.businesses.delete`

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.

do freshbooks.invoices.delete confirm_policy: **human**

Delete an invoice?

**intent:** the user asked me to delete an invoice

run suspended · waiting for a named person · key _freshbooks-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "freshbooks-agent",
  allowed_actions: ["freshbooks.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "freshbooks.invoices.delete", approver: "lead@example.com" },
    { match: "freshbooks.payments.delete", approver: "lead@example.com" },
    { match: "freshbooks.estimates.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to FreshBooks only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What FreshBooks costs on actionlake.

Every FreshBooks action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call FreshBooks 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.

- 1 upstream call per action all 184 FreshBooks actions
- 184 actions page each page of a long list is one call
- 94 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every FreshBooks action.

184 actions by area: the id your agent calls, what it does, and its effect.

**Reporting 22**

- `freshbooks.reports.account_entry_details` List account entry details read
- `freshbooks.reports.account_statement` Run a client account statement read
- `freshbooks.reports.accounts_aging` Run the accounts aging report read
- `freshbooks.reports.balance_sheet` Run the balance sheet report read
- `freshbooks.reports.balance_sheet_classic` Run the classic balance sheet report read
- `freshbooks.reports.bank_reconciliation_summary` Run the bank reconciliation summary report read
- `freshbooks.reports.cash_flow` Run the cash flow report read
- `freshbooks.reports.chart_of_accounts` Run the chart of accounts report read
- `freshbooks.reports.expense_details` Run the expense details report read
- `freshbooks.reports.expense_details_classic` Run the classic expense details report read
- `freshbooks.reports.general_ledger` Run the general ledger report read
- `freshbooks.reports.invoice_details` Run the invoice details report read
- `freshbooks.reports.item_sales` Run the item sales report read
- `freshbooks.reports.manual_journal_entry` Run the manual journal entry report read
- `freshbooks.reports.payments_collected` Run the payments collected report read
- `freshbooks.reports.profit_and_loss` Run the profit and loss report read
- `freshbooks.reports.profitloss_entity` Run the classic profit and loss report read
- `freshbooks.reports.revenue_by_client` Run the revenue by client report read
- `freshbooks.reports.tax_summary` Run the sales tax summary report read
- `freshbooks.reports.time_entry_details` Run the time entry details report read
- `freshbooks.reports.trial_balance` Run the trial balance report read
- `freshbooks.reports.trial_balance_classic` Run the classic trial balance report read

**Invoicing 19**

- `freshbooks.credit_notes.create` Create a credit note write
- `freshbooks.credit_notes.delete` Delete a credit note destructive
- `freshbooks.credit_notes.get` Get one credit note read
- `freshbooks.credit_notes.list` List credit notes read
- `freshbooks.credit_notes.update` Update a credit note write
- `freshbooks.invoice_profiles.create` Create a recurring invoice profile write
- `freshbooks.invoice_profiles.delete` Delete a recurring invoice profile destructive
- `freshbooks.invoice_profiles.get` Get one recurring invoice profile read
- `freshbooks.invoice_profiles.list` List recurring invoice profiles read
- `freshbooks.invoice_profiles.update` Update a recurring invoice profile write
- `freshbooks.invoices.create` Create an invoice write
- `freshbooks.invoices.delete` Delete an invoice destructive
- `freshbooks.invoices.get` Get one invoice read
- `freshbooks.invoices.list` List invoices read
- `freshbooks.invoices.mark_sent` Mark an invoice as sent write
- `freshbooks.invoices.presentations` Get default invoice presentation styles read
- `freshbooks.invoices.send` Send an invoice by email write
- `freshbooks.invoices.share_link` Get an invoice share link read
- `freshbooks.invoices.update` Update an invoice write

**Payments 16**

- `freshbooks.checkout_link_options.create` Set a checkout link's payment gateway write
- `freshbooks.checkout_links.create` Create a checkout link write
- `freshbooks.checkout_links.delete` Delete a checkout link destructive
- `freshbooks.checkout_links.update` Update a checkout link write
- `freshbooks.gateways.delete` Delete a payment gateway destructive
- `freshbooks.gateways.list` List payment gateways read
- `freshbooks.payment_gateway.get` Get the payment gateway details read
- `freshbooks.payment_options.create_invoice` Enable online payments on an invoice write
- `freshbooks.payment_options.create_profile` Enable online payments on a recurring profile write
- `freshbooks.payment_options.get_default` Get default invoice payment options read
- `freshbooks.payment_options.get_invoice` Get an invoice's payment options read
- `freshbooks.payments.create` Record a payment on an invoice write
- `freshbooks.payments.delete` Delete a payment destructive
- `freshbooks.payments.get` Get one payment read
- `freshbooks.payments.list` List payments read
- `freshbooks.payments.update` Update a payment write

**Payables 15**

- `freshbooks.bill_payments.create` Record a payment against a bill write
- `freshbooks.bill_payments.delete` Delete a bill payment destructive
- `freshbooks.bill_payments.get` Get one bill payment read
- `freshbooks.bill_payments.list` List bill payments read
- `freshbooks.bill_payments.update` Update a bill payment write
- `freshbooks.bill_vendors.create` Create a bill vendor write
- `freshbooks.bill_vendors.delete` Delete a bill vendor destructive
- `freshbooks.bill_vendors.list` List bill vendors read
- `freshbooks.bill_vendors.update` Update a bill vendor write
- `freshbooks.bills.archive` Archive a bill write
- `freshbooks.bills.create` Create a bill write
- `freshbooks.bills.delete` Delete a bill destructive
- `freshbooks.bills.get` Get one bill read
- `freshbooks.bills.list` List bills read
- `freshbooks.bills.update` Update a bill write

**Catalogue 14**

- `freshbooks.billable_items.create` Create a billable service item write
- `freshbooks.billable_items.get` Get one billable service item read
- `freshbooks.items.create` Create an item write
- `freshbooks.items.delete` Delete an item destructive
- `freshbooks.items.get` Get one item read
- `freshbooks.items.list` List items read
- `freshbooks.items.update` Update an item write
- `freshbooks.service_rates.create` Create a service rate write
- `freshbooks.service_rates.get` Get one service rate read
- `freshbooks.service_rates.list` List service rates read
- `freshbooks.service_rates.update` Update a service rate write
- `freshbooks.services.create` Create a service write
- `freshbooks.services.get` Get one service read
- `freshbooks.services.list` List services read

**Users 12**

- `freshbooks.business_users.list` List business users read
- `freshbooks.identity.get` Get the authenticated identity read
- `freshbooks.invitation_rates.list` List invitation rates read
- `freshbooks.invitations.create` Invite a team member write
- `freshbooks.staff.delete` Delete a staff member destructive
- `freshbooks.staff.get` Get one staff member read
- `freshbooks.staff.list` List staff read
- `freshbooks.staff.update` Update a staff member write
- `freshbooks.team_member_rates.list` List team member rates read
- `freshbooks.team_member_rates.update` Update a team member rate write
- `freshbooks.team_members.get` Get one team member read
- `freshbooks.team_members.list` List team members read

**Ledger 12**

- `freshbooks.journal_entries.create` Create a journal entry write
- `freshbooks.journal_entries.list` List journal entries read
- `freshbooks.journal_entries.update` Update a journal entry write
- `freshbooks.journal_entry_accounts.list` List journal entry accounts read
- `freshbooks.journal_entry_details.list` List journal entry details read
- `freshbooks.ledger_account_sub_types.get` Get one ledger account sub type read
- `freshbooks.ledger_account_sub_types.list` List ledger account sub types read
- `freshbooks.ledger_account_types.list` List ledger account types read
- `freshbooks.ledger_accounts.create` Create a ledger account write
- `freshbooks.ledger_accounts.get` Get one ledger account read
- `freshbooks.ledger_accounts.list` List ledger accounts read
- `freshbooks.ledger_accounts.update` Update a ledger account write

**Expenses 10**

- `freshbooks.expense_categories.get` Get one expense category read
- `freshbooks.expense_categories.list` List expense categories read
- `freshbooks.expense_profiles.create` Create a recurring expense profile write
- `freshbooks.expenses.create` Create an expense write
- `freshbooks.expenses.delete` Delete an expense destructive
- `freshbooks.expenses.get` Get one expense read
- `freshbooks.expenses.list` List expenses read
- `freshbooks.expenses.summaries` Get expense summaries read
- `freshbooks.expenses.update` Update an expense write
- `freshbooks.expenses.vendors` List expense vendor names read

**Projects 9**

- `freshbooks.project_service_rates.update` Update a project service rate write
- `freshbooks.project_threads.create` Post a project discussion message write
- `freshbooks.project_threads.list` List project discussion messages read
- `freshbooks.projects.create` Create a project write
- `freshbooks.projects.delete` Delete a project destructive
- `freshbooks.projects.get` Get one project read
- `freshbooks.projects.list` List projects read
- `freshbooks.projects.update` Update a project write
- `freshbooks.thread_comments.create` Add a comment to a discussion message write

**Time 8**

- `freshbooks.time_entries.create` Create a time entry write
- `freshbooks.time_entries.delete` Delete a time entry destructive
- `freshbooks.time_entries.get` Get one time entry read
- `freshbooks.time_entries.list` List time entries read
- `freshbooks.time_entries.search` Search time entries read
- `freshbooks.time_entries.update` Update a time entry write
- `freshbooks.timers.get` Get one timer read
- `freshbooks.timers.list` List running timers read

**Contacts 7**

- `freshbooks.clients.create` Create a client write
- `freshbooks.clients.delete` Delete a client destructive
- `freshbooks.clients.get` Get one client read
- `freshbooks.clients.list` List clients read
- `freshbooks.clients.update` Update a client write
- `freshbooks.contacts.delete` Delete a secondary contact destructive
- `freshbooks.contacts.update` Update a secondary contact write

**Quoting 7**

- `freshbooks.estimates.accept` Accept an estimate on the client's behalf write
- `freshbooks.estimates.create` Create an estimate write
- `freshbooks.estimates.delete` Delete an estimate destructive
- `freshbooks.estimates.get` Get one estimate read
- `freshbooks.estimates.list` List estimates read
- `freshbooks.estimates.send` Send an estimate by email write
- `freshbooks.estimates.update` Update an estimate write

**Income 6**

- `freshbooks.other_income.create` Create an other income entry write
- `freshbooks.other_income.delete` Delete an other income entry destructive
- `freshbooks.other_income.delete_hard` Hard-delete an other income entry destructive
- `freshbooks.other_income.get` Get one other income entry read
- `freshbooks.other_income.list` List other income entries read
- `freshbooks.other_income.update` Update an other income entry write

**Contracts 5**

- `freshbooks.retainers.create` Create a retainer write
- `freshbooks.retainers.delete` Deactivate a retainer destructive
- `freshbooks.retainers.get` Get one retainer read
- `freshbooks.retainers.list` List retainers read
- `freshbooks.retainers.update` Update a retainer write

**Tax 5**

- `freshbooks.taxes.create` Create a tax write
- `freshbooks.taxes.delete` Delete a tax destructive
- `freshbooks.taxes.get` Get one tax read
- `freshbooks.taxes.list` List taxes read
- `freshbooks.taxes.update` Update a tax write

**Webhooks 5**

- `freshbooks.callbacks.create` Register a webhook callback write
- `freshbooks.callbacks.delete` Delete a webhook callback destructive
- `freshbooks.callbacks.list` List webhook callbacks read
- `freshbooks.callbacks.resend` Resend a webhook verification code write
- `freshbooks.callbacks.verify` Verify a webhook callback write

**Tasks 5**

- `freshbooks.tasks.create` Create a task write
- `freshbooks.tasks.delete` Delete a task destructive
- `freshbooks.tasks.get` Get one task read
- `freshbooks.tasks.list` List tasks read
- `freshbooks.tasks.update` Update a task write

**Settings 4**

- `freshbooks.abilities.list` List account abilities read
- `freshbooks.businesses.create` Create a business write
- `freshbooks.businesses.delete` Delete a business destructive
- `freshbooks.systems.get` Get a system read

**Developer 3**

- `freshbooks.applications.create` Create a developer application write
- `freshbooks.applications.list` List developer applications read
- `freshbooks.applications.update` Update a developer application write

Questions

## The FreshBooks MCP server, answered.

**Is there a FreshBooks MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 184 FreshBooks actions across reporting, invoicing, payments and payables, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by FreshBooks.

**What do I need to connect FreshBooks?**

Your own FreshBooks OAuth app, registered with FreshBooks (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no FreshBooks app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. actionlake finds account id, business id, business uuid and identity id for you when you connect. The free call account { op: "connections.requirements", service: "freshbooks" } lists exactly what to paste.

**Can an AI agent delete or change things in FreshBooks?**

Only if its key allows it, and only with an explicit confirmation. 24 FreshBooks actions are destructive, including delete an invoice, delete a payment and delete an estimate. 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 FreshBooks API limit?**

actionlake paces every call to the limits in the FreshBooks service file: 100 calls a minute per connection. Repeated reads are answered from cache (94 FreshBooks actions can be), which never reaches FreshBooks.

**What does a FreshBooks action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (184 FreshBooks actions page). Cache hits, searches, dry runs and calls FreshBooks 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 FreshBooks API does it cover?**

The FreshBooks API alpha at api.freshbooks.com. It is built from FreshBooks's documentation as read on 19 September 2026. 184 actions in 19 areas, each one in the signed service file (version 1.0.0).

**Can I combine FreshBooks with my other systems?**

Yes. ask joins FreshBooks to ConnectWise PSA or HubSpot CRM on the same customer and returns the answer rather than every row. FreshBooks maps crm.company, which 227 other connectors also map.

**Does actionlake keep my FreshBooks data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, 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 FreshBooks 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.

## More connectors like FreshBooks

Shares the most action names with

- [Zoho Invoice 63](https://actionlake.com/connectors/zoho-invoice)
- [Zoho Billing 53](https://actionlake.com/connectors/zoho-billing)
- [Xero 52](https://actionlake.com/connectors/xero)
- [FreeAgent 51](https://actionlake.com/connectors/freeagent)
- [Moneybird 50](https://actionlake.com/connectors/moneybird)
- [Harvest 39](https://actionlake.com/connectors/harvest)

Joins with, on shared entities

- [HaloPSA 7](https://actionlake.com/connectors/halopsa)
- [Teamwork 6](https://actionlake.com/connectors/teamwork)
- [Zoho Inventory 6](https://actionlake.com/connectors/zoho-inventory)
- [Zuper 6](https://actionlake.com/connectors/zuper)
- [Kaseya BMS 6](https://actionlake.com/connectors/kaseya-bms)
- [Rev.io 6](https://actionlake.com/connectors/rev-io)

Browse

- [All Accounting & finance connectors](https://actionlake.com/connectors/category/accounting-and-finance)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by FreshBooks; the name is the vendor's own. Counts are from the FreshBooks service file, version 1.0.0.

## Give your agent FreshBooks today.

[Connect FreshBooks free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/freshbooks
More: https://actionlake.com/llms.txt
