Skip to content

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.

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
  • 184actionsin one signed file
  • 94readlook, never change
  • 66writecreate and update
  • 24wait for a yesdestructive, 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_tokenAccess token from one sign-in with your own OAuth app
    • refresh_tokenRefresh token from the same sign-in; the access token is renewed from it
    • client_idFreshBooks app client id
    • client_secretFreshBooks 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 callcheck { 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_tokenrefresh_tokenclient_idclient_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 alphaapi.freshbooks.com
Built from
FreshBooks's documentation, read 19 September 2026freshbooks.comdocumenter.getpostman.com
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.

  • 94readlook, never change
  • 66writecreate and update
  • 24destructivewait 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.

ActionWhat it doesEffectSame name in
freshbooks.invoices.listList invoicesList invoices from FreshBooks. Paged; each page is one billed upstream call.readfinance.invoice.list101 connectors
freshbooks.payments.listList paymentsList payments from FreshBooks. Paged; each page is one billed upstream call.readfinance.payment.list75 connectors
freshbooks.estimates.listList estimatesList estimates from FreshBooks. Paged; each page is one billed upstream call.readfinance.quote.list52 connectors
freshbooks.expenses.listList expensesList expenses from FreshBooks. Paged; each page is one billed upstream call.readfinance.expense.list40 connectors
freshbooks.credit_notes.listList credit notesList credit notes from FreshBooks. Paged; each page is one billed upstream call.readfinance.credit_note.list33 connectors
freshbooks.bills.listList billsList bills from FreshBooks. Paged; each page is one billed upstream call.readfinance.bill.list31 connectors
freshbooks.projects.listList projectsList projects from FreshBooks. Paged; each page is one billed upstream call.readwork.project.list109 connectors
freshbooks.items.listList itemsList items from FreshBooks. Paged; each page is one billed upstream call.readfinance.billing_item.list24 connectors
freshbooks.invoices.createCreate an invoiceCreate an invoice in FreshBooks.writefinance.invoice.create74 connectors
freshbooks.payments.createRecord a payment on an invoiceRecord a payment on an invoice in FreshBooks.writefinance.payment.create67 connectors
freshbooks.estimates.createCreate an estimateCreate an estimate in FreshBooks.writefinance.quote.create52 connectors
freshbooks.invoices.deleteDelete an invoiceDelete an invoice in FreshBooks.destructivefinance.invoice.delete56 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. Readread

    Which FreshBooks invoices are more than 30 days overdue? Group them by customer with the total owed.

    callsfreshbooks.invoices.list

  2. Planwrite

    Invoice a client for unbilled time in FreshBooks. Ask me before anything is sent or changed.

    callsfreshbooks.time_entries.listfreshbooks.clients.getfreshbooks.invoices.createfreshbooks.time_entries.updatefreshbooks.invoices.mark_sent

  3. Planwrite

    Turn an accepted estimate into a sent invoice in FreshBooks. Ask me before anything is sent or changed.

    callsfreshbooks.estimates.getfreshbooks.estimates.acceptfreshbooks.invoices.createfreshbooks.invoices.sendfreshbooks.invoices.share_link

  4. Writewrite

    Create an invoice in FreshBooks. Show me exactly what you will send before you save it.

    callsfreshbooks.invoices.create

  5. Across systemsread

    For each customer, how many invoices are in FreshBooks and how many tickets in ConnectWise PSA?

    callsfreshbooks.invoices.listconnectwise_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

  • 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

Also mapped by other connectorsidentity.user 517crm.company 227work.project 116finance.invoice 91finance.payment 53finance.quote 45work.time_entry 40finance.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 decidesRe-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 decidesCreate 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 decidesInvoice 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 decidesInvoice 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 decidesAccept 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 decidesPay 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 invoicefreshbooks.invoices.delete
  • Delete a paymentfreshbooks.payments.delete
  • Delete an estimatefreshbooks.estimates.delete
  • Delete an expensefreshbooks.expenses.delete
  • Delete a projectfreshbooks.projects.delete
  • Delete a billfreshbooks.bills.delete
  • Delete a credit notefreshbooks.credit_notes.delete
  • Delete an itemfreshbooks.items.delete
  • Delete a taskfreshbooks.tasks.delete
  • Delete a time entryfreshbooks.time_entries.delete
  • Delete a clientfreshbooks.clients.delete
  • Delete an other income entryfreshbooks.other_income.delete
  • Delete a bill paymentfreshbooks.bill_payments.delete
  • Hard-delete an other income entryfreshbooks.other_income.delete_hard
  • Delete a staff memberfreshbooks.staff.delete
  • Delete a taxfreshbooks.taxes.delete
  • Delete a recurring invoice profilefreshbooks.invoice_profiles.delete
  • Delete a bill vendorfreshbooks.bill_vendors.delete
  • Delete a payment gatewayfreshbooks.gateways.delete
  • Delete a secondary contactfreshbooks.contacts.delete
  • Delete a checkout linkfreshbooks.checkout_links.delete
  • Delete a webhook callbackfreshbooks.callbacks.delete
  • Deactivate a retainerfreshbooks.retainers.delete
  • Delete a businessfreshbooks.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.

dofreshbooks.invoices.deleteconfirm_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: "[email protected]" },    { match: "freshbooks.payments.delete", approver: "[email protected]" },    { match: "freshbooks.estimates.delete", approver: "[email protected]" }  ]}
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.

  • 1upstream call per actionall 184 FreshBooks actions
  • 184actions pageeach page of a long list is one call
  • 94reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every FreshBooks action.

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

Reporting22
  • freshbooks.reports.account_entry_detailsList account entry detailsread
  • freshbooks.reports.account_statementRun a client account statementread
  • freshbooks.reports.accounts_agingRun the accounts aging reportread
  • freshbooks.reports.balance_sheetRun the balance sheet reportread
  • freshbooks.reports.balance_sheet_classicRun the classic balance sheet reportread
  • freshbooks.reports.bank_reconciliation_summaryRun the bank reconciliation summary reportread
  • freshbooks.reports.cash_flowRun the cash flow reportread
  • freshbooks.reports.chart_of_accountsRun the chart of accounts reportread
  • freshbooks.reports.expense_detailsRun the expense details reportread
  • freshbooks.reports.expense_details_classicRun the classic expense details reportread
  • freshbooks.reports.general_ledgerRun the general ledger reportread
  • freshbooks.reports.invoice_detailsRun the invoice details reportread
  • freshbooks.reports.item_salesRun the item sales reportread
  • freshbooks.reports.manual_journal_entryRun the manual journal entry reportread
  • freshbooks.reports.payments_collectedRun the payments collected reportread
  • freshbooks.reports.profit_and_lossRun the profit and loss reportread
  • freshbooks.reports.profitloss_entityRun the classic profit and loss reportread
  • freshbooks.reports.revenue_by_clientRun the revenue by client reportread
  • freshbooks.reports.tax_summaryRun the sales tax summary reportread
  • freshbooks.reports.time_entry_detailsRun the time entry details reportread
  • freshbooks.reports.trial_balanceRun the trial balance reportread
  • freshbooks.reports.trial_balance_classicRun the classic trial balance reportread
Invoicing19
  • freshbooks.credit_notes.createCreate a credit notewrite
  • freshbooks.credit_notes.deleteDelete a credit notedestructive
  • freshbooks.credit_notes.getGet one credit noteread
  • freshbooks.credit_notes.listList credit notesread
  • freshbooks.credit_notes.updateUpdate a credit notewrite
  • freshbooks.invoice_profiles.createCreate a recurring invoice profilewrite
  • freshbooks.invoice_profiles.deleteDelete a recurring invoice profiledestructive
  • freshbooks.invoice_profiles.getGet one recurring invoice profileread
  • freshbooks.invoice_profiles.listList recurring invoice profilesread
  • freshbooks.invoice_profiles.updateUpdate a recurring invoice profilewrite
  • freshbooks.invoices.createCreate an invoicewrite
  • freshbooks.invoices.deleteDelete an invoicedestructive
  • freshbooks.invoices.getGet one invoiceread
  • freshbooks.invoices.listList invoicesread
  • freshbooks.invoices.mark_sentMark an invoice as sentwrite
  • freshbooks.invoices.presentationsGet default invoice presentation stylesread
  • freshbooks.invoices.sendSend an invoice by emailwrite
  • freshbooks.invoices.share_linkGet an invoice share linkread
  • freshbooks.invoices.updateUpdate an invoicewrite
Payments16
  • freshbooks.checkout_link_options.createSet a checkout link's payment gatewaywrite
  • freshbooks.checkout_links.createCreate a checkout linkwrite
  • freshbooks.checkout_links.deleteDelete a checkout linkdestructive
  • freshbooks.checkout_links.updateUpdate a checkout linkwrite
  • freshbooks.gateways.deleteDelete a payment gatewaydestructive
  • freshbooks.gateways.listList payment gatewaysread
  • freshbooks.payment_gateway.getGet the payment gateway detailsread
  • freshbooks.payment_options.create_invoiceEnable online payments on an invoicewrite
  • freshbooks.payment_options.create_profileEnable online payments on a recurring profilewrite
  • freshbooks.payment_options.get_defaultGet default invoice payment optionsread
  • freshbooks.payment_options.get_invoiceGet an invoice's payment optionsread
  • freshbooks.payments.createRecord a payment on an invoicewrite
  • freshbooks.payments.deleteDelete a paymentdestructive
  • freshbooks.payments.getGet one paymentread
  • freshbooks.payments.listList paymentsread
  • freshbooks.payments.updateUpdate a paymentwrite
Payables15
  • freshbooks.bill_payments.createRecord a payment against a billwrite
  • freshbooks.bill_payments.deleteDelete a bill paymentdestructive
  • freshbooks.bill_payments.getGet one bill paymentread
  • freshbooks.bill_payments.listList bill paymentsread
  • freshbooks.bill_payments.updateUpdate a bill paymentwrite
  • freshbooks.bill_vendors.createCreate a bill vendorwrite
  • freshbooks.bill_vendors.deleteDelete a bill vendordestructive
  • freshbooks.bill_vendors.listList bill vendorsread
  • freshbooks.bill_vendors.updateUpdate a bill vendorwrite
  • freshbooks.bills.archiveArchive a billwrite
  • freshbooks.bills.createCreate a billwrite
  • freshbooks.bills.deleteDelete a billdestructive
  • freshbooks.bills.getGet one billread
  • freshbooks.bills.listList billsread
  • freshbooks.bills.updateUpdate a billwrite
Catalogue14
  • freshbooks.billable_items.createCreate a billable service itemwrite
  • freshbooks.billable_items.getGet one billable service itemread
  • freshbooks.items.createCreate an itemwrite
  • freshbooks.items.deleteDelete an itemdestructive
  • freshbooks.items.getGet one itemread
  • freshbooks.items.listList itemsread
  • freshbooks.items.updateUpdate an itemwrite
  • freshbooks.service_rates.createCreate a service ratewrite
  • freshbooks.service_rates.getGet one service rateread
  • freshbooks.service_rates.listList service ratesread
  • freshbooks.service_rates.updateUpdate a service ratewrite
  • freshbooks.services.createCreate a servicewrite
  • freshbooks.services.getGet one serviceread
  • freshbooks.services.listList servicesread
Users12
  • freshbooks.business_users.listList business usersread
  • freshbooks.identity.getGet the authenticated identityread
  • freshbooks.invitation_rates.listList invitation ratesread
  • freshbooks.invitations.createInvite a team memberwrite
  • freshbooks.staff.deleteDelete a staff memberdestructive
  • freshbooks.staff.getGet one staff memberread
  • freshbooks.staff.listList staffread
  • freshbooks.staff.updateUpdate a staff memberwrite
  • freshbooks.team_member_rates.listList team member ratesread
  • freshbooks.team_member_rates.updateUpdate a team member ratewrite
  • freshbooks.team_members.getGet one team memberread
  • freshbooks.team_members.listList team membersread
Ledger12
  • freshbooks.journal_entries.createCreate a journal entrywrite
  • freshbooks.journal_entries.listList journal entriesread
  • freshbooks.journal_entries.updateUpdate a journal entrywrite
  • freshbooks.journal_entry_accounts.listList journal entry accountsread
  • freshbooks.journal_entry_details.listList journal entry detailsread
  • freshbooks.ledger_account_sub_types.getGet one ledger account sub typeread
  • freshbooks.ledger_account_sub_types.listList ledger account sub typesread
  • freshbooks.ledger_account_types.listList ledger account typesread
  • freshbooks.ledger_accounts.createCreate a ledger accountwrite
  • freshbooks.ledger_accounts.getGet one ledger accountread
  • freshbooks.ledger_accounts.listList ledger accountsread
  • freshbooks.ledger_accounts.updateUpdate a ledger accountwrite
Expenses10
  • freshbooks.expense_categories.getGet one expense categoryread
  • freshbooks.expense_categories.listList expense categoriesread
  • freshbooks.expense_profiles.createCreate a recurring expense profilewrite
  • freshbooks.expenses.createCreate an expensewrite
  • freshbooks.expenses.deleteDelete an expensedestructive
  • freshbooks.expenses.getGet one expenseread
  • freshbooks.expenses.listList expensesread
  • freshbooks.expenses.summariesGet expense summariesread
  • freshbooks.expenses.updateUpdate an expensewrite
  • freshbooks.expenses.vendorsList expense vendor namesread
Projects9
  • freshbooks.project_service_rates.updateUpdate a project service ratewrite
  • freshbooks.project_threads.createPost a project discussion messagewrite
  • freshbooks.project_threads.listList project discussion messagesread
  • freshbooks.projects.createCreate a projectwrite
  • freshbooks.projects.deleteDelete a projectdestructive
  • freshbooks.projects.getGet one projectread
  • freshbooks.projects.listList projectsread
  • freshbooks.projects.updateUpdate a projectwrite
  • freshbooks.thread_comments.createAdd a comment to a discussion messagewrite
Time8
  • freshbooks.time_entries.createCreate a time entrywrite
  • freshbooks.time_entries.deleteDelete a time entrydestructive
  • freshbooks.time_entries.getGet one time entryread
  • freshbooks.time_entries.listList time entriesread
  • freshbooks.time_entries.searchSearch time entriesread
  • freshbooks.time_entries.updateUpdate a time entrywrite
  • freshbooks.timers.getGet one timerread
  • freshbooks.timers.listList running timersread
Contacts7
  • freshbooks.clients.createCreate a clientwrite
  • freshbooks.clients.deleteDelete a clientdestructive
  • freshbooks.clients.getGet one clientread
  • freshbooks.clients.listList clientsread
  • freshbooks.clients.updateUpdate a clientwrite
  • freshbooks.contacts.deleteDelete a secondary contactdestructive
  • freshbooks.contacts.updateUpdate a secondary contactwrite
Quoting7
  • freshbooks.estimates.acceptAccept an estimate on the client's behalfwrite
  • freshbooks.estimates.createCreate an estimatewrite
  • freshbooks.estimates.deleteDelete an estimatedestructive
  • freshbooks.estimates.getGet one estimateread
  • freshbooks.estimates.listList estimatesread
  • freshbooks.estimates.sendSend an estimate by emailwrite
  • freshbooks.estimates.updateUpdate an estimatewrite
Income6
  • freshbooks.other_income.createCreate an other income entrywrite
  • freshbooks.other_income.deleteDelete an other income entrydestructive
  • freshbooks.other_income.delete_hardHard-delete an other income entrydestructive
  • freshbooks.other_income.getGet one other income entryread
  • freshbooks.other_income.listList other income entriesread
  • freshbooks.other_income.updateUpdate an other income entrywrite
Contracts5
  • freshbooks.retainers.createCreate a retainerwrite
  • freshbooks.retainers.deleteDeactivate a retainerdestructive
  • freshbooks.retainers.getGet one retainerread
  • freshbooks.retainers.listList retainersread
  • freshbooks.retainers.updateUpdate a retainerwrite
Tax5
  • freshbooks.taxes.createCreate a taxwrite
  • freshbooks.taxes.deleteDelete a taxdestructive
  • freshbooks.taxes.getGet one taxread
  • freshbooks.taxes.listList taxesread
  • freshbooks.taxes.updateUpdate a taxwrite
Webhooks5
  • freshbooks.callbacks.createRegister a webhook callbackwrite
  • freshbooks.callbacks.deleteDelete a webhook callbackdestructive
  • freshbooks.callbacks.listList webhook callbacksread
  • freshbooks.callbacks.resendResend a webhook verification codewrite
  • freshbooks.callbacks.verifyVerify a webhook callbackwrite
Tasks5
  • freshbooks.tasks.createCreate a taskwrite
  • freshbooks.tasks.deleteDelete a taskdestructive
  • freshbooks.tasks.getGet one taskread
  • freshbooks.tasks.listList tasksread
  • freshbooks.tasks.updateUpdate a taskwrite
Settings4
  • freshbooks.abilities.listList account abilitiesread
  • freshbooks.businesses.createCreate a businesswrite
  • freshbooks.businesses.deleteDelete a businessdestructive
  • freshbooks.systems.getGet a systemread
Developer3
  • freshbooks.applications.createCreate a developer applicationwrite
  • freshbooks.applications.listList developer applicationsread
  • freshbooks.applications.updateUpdate a developer applicationwrite

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.

Give your agent FreshBooks today.

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