Skip to content

Connectors · Accounting & finance

Jobber MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Jobber and the rest of your systems. It gives your agent 251 Jobber actions (91 reads, 124 writes and 36 that wait for a confirmation) and holds the Jobber credential itself, so the agent never does. It paces Jobber's limits and records every call. Connecting Jobber needs your own Jobber 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: "jobber.invoices.list",  intent: "check which Jobber account is connected"}# List Jobber invoices · read · 1 upstream call
  • 251actionsin one signed file
  • 91readlook, never change
  • 124writecreate and update
  • 36wait for a yesdestructive, confirmed first

Set up

Connect Jobber 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 Jobber.

    OAuth 2.0, authorization code. You register your own OAuth app with Jobber, 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, Jobber needs an OAuth app of your own, registered in its developer portal. actionlake has no Jobber 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_idJobber app Client ID (Developer Center > your app > App settings)
    • client_secretJobber app Client Secret
    account { op: "connections.requirements", service: "jobber" }
    # 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: "jobber.invoices.list" }# list jobber invoices · read · 1 upstream callcheck { action: "jobber.invoices.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Jobber at a glance

Sign-in
OAuth 2.0, authorization code. You register your own OAuth app with Jobber, 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
Limits we pace to
2,500 calls per 5 minutes, per connection
API covered
Jobber API 2026-09-25api.getjobber.com
Built from
Jobber's documentation, read 22 October 2026developer.getjobber.comapi.getjobber.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
91 of 91 reads, for up to an hour; a write clears what it affects
Shared entities
7, so ask can line Jobber up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Jobber.

251 actions in 1 area. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 91readlook, never change
  • 124writecreate and update
  • 36destructivewait for a confirmation
  1. Field service

    251

    91 read · 124 write · 36 destructive

    List Jobber invoices · List Jobber quotes · List Jobber expenses · List Jobber users

Top actions

The Jobber API, shaped for agents.

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

ActionWhat it doesEffectSame name in
jobber.invoices.listList Jobber invoicesList of 100 recently updated invoices satisfying a filter, belonging to the account of the authenticated in Service Providerreadfinance.invoice.list101 connectors
jobber.quotes.listList Jobber quotesList of 100 recently updated quotes satisfying a filter, belonging to the account of the authenticated in Service Providerreadfinance.quote.list52 connectors
jobber.expenses.listList Jobber expensesConnection of expenses belonging to the account of the authenticated Service Providerreadfinance.expense.list40 connectors
jobber.users.listList Jobber usersList of 10,000 users satisfying a filter, belonging to the account of the authenticated Service Providerreadidentity.user.list474 connectors
jobber.jobs.listList Jobber jobs100 recently updated jobs of the logged in account.readwork.project.list109 connectors
jobber.time_sheet_entries.listList Jobber time sheet entriesAll timesheet entries for users on a given dayreadwork.time_entry.list59 connectors
jobber.invoices.createJobber invoices: createCreate a new invoicewritefinance.invoice.create74 connectors
jobber.quotes.createJobber quotes: createCreate a new Quotewritefinance.quote.create52 connectors
jobber.expenses.createJobber expenses: createCreate a new expensewritefinance.expense.create36 connectors
jobber.jobs.createJobber jobs: createCreate a jobwritework.project.create102 connectors
jobber.invoices.deleteJobber invoices: deleteDelete an Invoicedestructivefinance.invoice.delete56 connectors
jobber.time_sheet_entries.createJobber time sheet entries: createCreate a Timesheet entrywritework.time_entry.create56 connectors

Try it

Prompts to paste into Claude.

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

  1. Readread

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

    callsjobber.invoices.list

  2. Writewrite

    Jobber invoices: create in Jobber. Show me exactly what you will send before you save it.

    callsjobber.invoices.create

  3. Across systemsread

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

    callsjobber.invoices.listconnectwise_manage.tickets.list

Across your systems

Jobber, joined to the rest of your business.

One ask fetches from Jobber 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 Jobber and how many tickets in ConnectWise PSA?

    jobber.invoices.list + connectwise_manage.tickets.list, on crm.company · ConnectWise PSA

  • For each customer, how many invoices are in Jobber and how many tickets in HubSpot CRM?

    jobber.invoices.list + hubspot_crm.tickets.list, on crm.company · HubSpot CRM

Also mapped by other connectorsidentity.user 517crm.company 227work.project 116finance.invoice 91finance.quote 45work.time_entry 40finance.expense 26
ask
ask {  intent: "for each customer, how many invoices are in Jobber and how many tickets in ConnectWise PSA",  steps: [    { action: "jobber.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.

Governance for Jobber

Destructive actions wait for a yes.

36 Jobber actions are destructive. The first 10:

  • Jobber invoices: deletejobber.invoices.delete
  • Jobber quotes: deletejobber.quotes.delete
  • Jobber expenses: deletejobber.expenses.delete
  • Jobber jobs: deletejobber.jobs.delete
  • Jobber time sheet entries: deletejobber.time_sheet_entries.delete
  • Jobber clients: deletejobber.clients.delete
  • Jobber payment records: deletejobber.payment_records.delete
  • Jobber tasks: deletejobber.tasks.delete
  • Jobber invoice line items: deletejobber.invoice_line_items.delete
  • Jobber quote line items: deletejobber.quote_line_items.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.

dojobber.invoices.deleteconfirm_policy: human

Jobber invoices: delete?

intent: the user asked me to jobber invoices: delete

run suspended · waiting for a named person · key jobber-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "jobber-agent",  allowed_actions: ["jobber.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "jobber.invoices.delete", approver: "[email protected]" },    { match: "jobber.quotes.delete", approver: "[email protected]" },    { match: "jobber.expenses.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Jobber only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Jobber costs on actionlake.

Every Jobber action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Jobber 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 251 Jobber actions
  • 51actions pageeach page of a long list is one call
  • 91reads 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 Jobber action.

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

Field service251
  • jobber.account.getGet accountread
  • jobber.app.disconnectJobber app connection: disconnectdestructive
  • jobber.app.set_last_sync_dateJobber app connection: set last sync datewrite
  • jobber.app_alerts.listList Jobber app alertsread
  • jobber.app_alerts.updateJobber app alerts: updatewrite
  • jobber.apps.listList Jobber appsread
  • jobber.assessment_form_submissions.getGet a Jobber assessment form submissionread
  • jobber.assessments.completeJobber assessments: completewrite
  • jobber.assessments.createJobber assessments: createwrite
  • jobber.assessments.deleteJobber assessments: deletedestructive
  • jobber.assessments.getGet a Jobber assessmentread
  • jobber.assessments.uncompleteJobber assessments: uncompletewrite
  • jobber.assessments.updateJobber assessments: updatewrite
  • jobber.capital_loans.listList Jobber capital loansread
  • jobber.client_contacts.getGet a Jobber client contactread
  • jobber.client_emails.listList Jobber client emailsread
  • jobber.client_notes.createJobber client notes: createwrite
  • jobber.client_notes.deleteJobber client notes: deletedestructive
  • jobber.client_notes.updateJobber client notes: updatewrite
  • jobber.client_phones.listList Jobber client phonesread
  • jobber.client_tags.listList Jobber client tagsread
  • jobber.clients.archiveJobber clients: archivewrite
  • jobber.clients.createJobber clients: createwrite
  • jobber.clients.deleteJobber clients: deletedestructive
  • jobber.clients.edit_tagsJobber clients: edit tagswrite
  • jobber.clients.find_similarJobber clients: find similarread
  • jobber.clients.getGet a Jobber clientread
  • jobber.clients.listList Jobber clientsread
  • jobber.clients.mergeJobber clients: mergewrite
  • jobber.clients.metadataGet Jobber clients metadataread
  • jobber.clients.unarchiveJobber clients: unarchivewrite
  • jobber.clients.updateJobber clients: updatewrite
  • jobber.conversations.getGet a Jobber conversationread
  • jobber.conversations.listList Jobber conversationsread
  • jobber.crews.add_membersJobber crews: add memberswrite
  • jobber.crews.createJobber crews: createwrite
  • jobber.crews.deleteJobber crews: deletedestructive
  • jobber.crews.listList Jobber crewsread
  • jobber.crews.move_membersJobber crews: move memberswrite
  • jobber.crews.remove_membersJobber crews: remove memberswrite
  • jobber.crews.renameJobber crews: renamewrite
  • jobber.custom_field_configurations.archiveJobber custom field configurations: archivewrite
  • jobber.custom_field_configurations.create_areaJobber custom field configurations: create areawrite
  • jobber.custom_field_configurations.create_dropdownJobber custom field configurations: create dropdownwrite
  • jobber.custom_field_configurations.create_linkJobber custom field configurations: create linkwrite
  • jobber.custom_field_configurations.create_numericJobber custom field configurations: create numericwrite
  • jobber.custom_field_configurations.create_textJobber custom field configurations: create textwrite
  • jobber.custom_field_configurations.create_true_falseJobber custom field configurations: create true falsewrite
  • jobber.custom_field_configurations.listList Jobber custom field configurationsread
  • jobber.custom_field_configurations.unarchiveJobber custom field configurations: unarchivewrite
  • jobber.custom_field_configurations.updateJobber custom field configurations: updatewrite
  • jobber.events.createJobber events: createwrite
  • jobber.events.deleteJobber events: deletedestructive
  • jobber.events.getGet a Jobber eventread
  • jobber.events.updateJobber events: updatewrite
  • jobber.expenses.createJobber expenses: createwrite
  • jobber.expenses.deleteJobber expenses: deletedestructive
  • jobber.expenses.getGet a Jobber expenseread
  • jobber.expenses.listList Jobber expensesread
  • jobber.expenses.metadataGet Jobber expenses metadataread
  • jobber.expenses.updateJobber expenses: updatewrite
  • jobber.imports.getGet a Jobber importread
  • jobber.imports.listList Jobber importsread
  • jobber.invoice_line_items.createJobber invoice line items: createwrite
  • jobber.invoice_line_items.deleteJobber invoice line items: deletedestructive
  • jobber.invoice_line_items.updateJobber invoice line items: updatewrite
  • jobber.invoice_notes.createJobber invoice notes: createwrite
  • jobber.invoice_notes.deleteJobber invoice notes: deletedestructive
  • jobber.invoice_notes.updateJobber invoice notes: updatewrite
  • jobber.invoice_reminders.createJobber invoice reminders: createwrite
  • jobber.invoice_reminders.deleteJobber invoice reminders: deletedestructive
  • jobber.invoice_reminders.getGet a Jobber invoice reminderread
  • jobber.invoice_reminders.updateJobber invoice reminders: updatewrite
  • jobber.invoices.closeJobber invoices: closewrite
  • jobber.invoices.createJobber invoices: createwrite
  • jobber.invoices.create_from_jobJobber invoices: create from jobwrite
  • jobber.invoices.create_from_quoteJobber invoices: create from quotewrite
  • jobber.invoices.create_from_visitsJobber invoices: create from visitswrite
  • jobber.invoices.deleteJobber invoices: deletedestructive
  • jobber.invoices.getGet a Jobber invoiceread
  • jobber.invoices.listList Jobber invoicesread
  • jobber.invoices.mark_sentJobber invoices: mark sentwrite
  • jobber.invoices.metadataGet Jobber invoices metadataread
  • jobber.invoices.remove_tax_rateJobber invoices: remove tax ratewrite
  • jobber.invoices.reopenJobber invoices: reopenwrite
  • jobber.invoices.updateJobber invoices: updatewrite
  • jobber.invoices.update_totalsJobber invoices: update totalswrite
  • jobber.job_forms.createJobber job forms: createwrite
  • jobber.job_forms.deleteJobber job forms: deletedestructive
  • jobber.job_forms.getGet a Jobber job formread
  • jobber.job_forms.listList Jobber job formsread
  • jobber.job_forms.updateJobber job forms: updatewrite
  • jobber.job_line_items.createJobber job line items: createwrite
  • jobber.job_line_items.deleteJobber job line items: deletedestructive
  • jobber.job_line_items.reorderJobber job line items: reorderwrite
  • jobber.job_line_items.updateJobber job line items: updatewrite
  • jobber.job_notes.createJobber job notes: createwrite
  • jobber.job_notes.deleteJobber job notes: deletedestructive
  • jobber.job_notes.updateJobber job notes: updatewrite
  • jobber.jobs.closeJobber jobs: closewrite
  • jobber.jobs.createJobber jobs: createwrite
  • jobber.jobs.create_from_quoteJobber jobs: create from quotewrite
  • jobber.jobs.deleteJobber jobs: deletedestructive
  • jobber.jobs.expiringGet Jobber jobs expiringread
  • jobber.jobs.getGet a Jobber jobread
  • jobber.jobs.listList Jobber jobsread
  • jobber.jobs.metadataGet Jobber jobs metadataread
  • jobber.jobs.remove_tax_rateJobber jobs: remove tax ratewrite
  • jobber.jobs.reopenJobber jobs: reopenwrite
  • jobber.jobs.updateJobber jobs: updatewrite
  • jobber.lead_sources.createJobber lead sources: createwrite
  • jobber.lead_sources.deleteJobber lead sources: deletedestructive
  • jobber.lead_sources.listList Jobber lead sourcesread
  • jobber.lead_sources.updateJobber lead sources: updatewrite
  • jobber.messages.send_emailJobber messages: send emailwrite
  • jobber.messages.send_smsJobber messages: send smswrite
  • jobber.payment_disputes.getGet a Jobber payment disputeread
  • jobber.payment_disputes.listList Jobber payment disputesread
  • jobber.payment_methods.listList Jobber payment methodsread
  • jobber.payment_records.createJobber payment records: createwrite
  • jobber.payment_records.deleteJobber payment records: deletedestructive
  • jobber.payment_records.getGet a Jobber payment recordread
  • jobber.payment_records.listList Jobber payment recordsread
  • jobber.payment_records.refundJobber payment records: refunddestructive
  • jobber.payment_records.updateJobber payment records: updatewrite
  • jobber.payment_terms.createJobber payment terms: createwrite
  • jobber.payment_terms.deleteJobber payment terms: deletedestructive
  • jobber.payment_terms.updateJobber payment terms: updatewrite
  • jobber.payments.listList Jobber paymentsread
  • jobber.payout_records.getGet a Jobber payout recordread
  • jobber.payout_records.listList Jobber payout recordsread
  • jobber.payroll_periods.listList Jobber payroll periodsread
  • jobber.pipeline_stages.listList Jobber pipeline stagesread
  • jobber.pipelines.listList Jobber pipelinesread
  • jobber.pricebook_items.listList Jobber pricebook itemsread
  • jobber.product_notes.createJobber product notes: createwrite
  • jobber.product_notes.deleteJobber product notes: deletedestructive
  • jobber.product_notes.updateJobber product notes: updatewrite
  • jobber.products.createJobber products: createwrite
  • jobber.products.deleteJobber products: deletedestructive
  • jobber.products.getGet a Jobber productread
  • jobber.products.listList Jobber productsread
  • jobber.products.updateJobber products: updatewrite
  • jobber.properties.createJobber properties: createwrite
  • jobber.properties.deleteJobber properties: deletedestructive
  • jobber.properties.getGet a Jobber propertieread
  • jobber.properties.listList Jobber propertiesread
  • jobber.properties.mergeJobber properties: mergewrite
  • jobber.properties.updateJobber properties: updatewrite
  • jobber.quote_line_items.createJobber quote line items: createwrite
  • jobber.quote_line_items.create_textJobber quote line items: create textwrite
  • jobber.quote_line_items.deleteJobber quote line items: deletedestructive
  • jobber.quote_line_items.updateJobber quote line items: updatewrite
  • jobber.quote_notes.createJobber quote notes: createwrite
  • jobber.quote_notes.deleteJobber quote notes: deletedestructive
  • jobber.quote_notes.updateJobber quote notes: updatewrite
  • jobber.quote_reminders.completeJobber quote reminders: completewrite
  • jobber.quote_reminders.deleteJobber quote reminders: deletedestructive
  • jobber.quote_reminders.getGet a Jobber quote reminderread
  • jobber.quote_reminders.uncompleteJobber quote reminders: uncompletewrite
  • jobber.quote_reminders.updateJobber quote reminders: updatewrite
  • jobber.quote_templates.createJobber quote templates: createwrite
  • jobber.quote_templates.deleteJobber quote templates: deletedestructive
  • jobber.quote_templates.getGet a Jobber quote templateread
  • jobber.quote_templates.listList Jobber quote templatesread
  • jobber.quote_templates.updateJobber quote templates: updatewrite
  • jobber.quotes.approveJobber quotes: approvewrite
  • jobber.quotes.archiveJobber quotes: archivewrite
  • jobber.quotes.archive_manyJobber quotes: archive manywrite
  • jobber.quotes.createJobber quotes: createwrite
  • jobber.quotes.deleteJobber quotes: deletedestructive
  • jobber.quotes.delete_manyJobber quotes: delete manydestructive
  • jobber.quotes.getGet a Jobber quoteread
  • jobber.quotes.listList Jobber quotesread
  • jobber.quotes.mark_awaiting_responseJobber quotes: mark awaiting responsewrite
  • jobber.quotes.metadataGet Jobber quotes metadataread
  • jobber.quotes.remove_tax_rateJobber quotes: remove tax ratewrite
  • jobber.quotes.unarchive_manyJobber quotes: unarchive manywrite
  • jobber.quotes.updateJobber quotes: updatewrite
  • jobber.quotes.update_lost_reasonJobber quotes: update lost reasonwrite
  • jobber.quotes.update_totalsJobber quotes: update totalswrite
  • jobber.reports.client_balance_overviewGet Jobber reports client balance overviewread
  • jobber.reports.client_balancesJobber reports: client balancesread
  • jobber.reports.invoicesJobber reports: invoicesread
  • jobber.reports.lead_source_summaryJobber reports: lead source summaryread
  • jobber.reports.lead_sourcesJobber reports: lead sourcesread
  • jobber.reports.one_off_jobsJobber reports: one off jobsread
  • jobber.reports.quotesJobber reports: quotesread
  • jobber.reports.recurring_jobsJobber reports: recurring jobsread
  • jobber.reports.requestsJobber reports: requestsread
  • jobber.reports.salespeopleJobber reports: salespeopleread
  • jobber.reports.team_productivityJobber reports: team productivityread
  • jobber.reports.visitsJobber reports: visitsread
  • jobber.request_line_items.createJobber request line items: createwrite
  • jobber.request_line_items.deleteJobber request line items: deletedestructive
  • jobber.request_line_items.updateJobber request line items: updatewrite
  • jobber.request_notes.createJobber request notes: createwrite
  • jobber.request_notes.deleteJobber request notes: deletedestructive
  • jobber.request_notes.updateJobber request notes: updatewrite
  • jobber.request_settings.getGet a Jobber request settingread
  • jobber.request_settings.listList Jobber request settingsread
  • jobber.requests.archiveJobber requests: archivewrite
  • jobber.requests.createJobber requests: createwrite
  • jobber.requests.deleteJobber requests: deletedestructive
  • jobber.requests.getGet a Jobber requestread
  • jobber.requests.listList Jobber requestsread
  • jobber.requests.metadataGet Jobber requests metadataread
  • jobber.requests.unarchiveJobber requests: unarchivewrite
  • jobber.requests.updateJobber requests: updatewrite
  • jobber.requests.update_lost_reasonJobber requests: update lost reasonwrite
  • jobber.routes.dailyGet Jobber routes dailyread
  • jobber.routes.listList Jobber routesread
  • jobber.scheduled_items.listList Jobber scheduled itemsread
  • jobber.search.queryJobber search: queryread
  • jobber.tasks.createJobber tasks: createwrite
  • jobber.tasks.deleteJobber tasks: deletedestructive
  • jobber.tasks.getGet a Jobber taskread
  • jobber.tasks.listList Jobber tasksread
  • jobber.tasks.set_completedJobber tasks: set completedwrite
  • jobber.tasks.updateJobber tasks: updatewrite
  • jobber.tax_rates.createJobber tax rates: createwrite
  • jobber.tax_rates.create_groupJobber tax rates: create groupwrite
  • jobber.tax_rates.listList Jobber tax ratesread
  • jobber.time_sheet_entries.createJobber time sheet entries: createwrite
  • jobber.time_sheet_entries.deleteJobber time sheet entries: deletedestructive
  • jobber.time_sheet_entries.getGet a Jobber time sheet entrieread
  • jobber.time_sheet_entries.listList Jobber time sheet entriesread
  • jobber.time_sheet_entries.start_timerJobber time sheet entries: start timerwrite
  • jobber.time_sheet_entries.stop_timerJobber time sheet entries: stop timerwrite
  • jobber.time_sheet_entries.updateJobber time sheet entries: updatewrite
  • jobber.time_sheet_users.listList Jobber time sheet usersread
  • jobber.users.getGet a Jobber userread
  • jobber.users.listList Jobber usersread
  • jobber.vehicles.createJobber vehicles: createwrite
  • jobber.vehicles.deleteJobber vehicles: deletedestructive
  • jobber.vehicles.getGet a Jobber vehicleread
  • jobber.vehicles.listList Jobber vehiclesread
  • jobber.vehicles.update_manyJobber vehicles: update manywrite
  • jobber.visit_form_submissions.getGet a Jobber visit form submissionread
  • jobber.visit_line_items.createJobber visit line items: createwrite
  • jobber.visit_line_items.deleteJobber visit line items: deletedestructive
  • jobber.visit_line_items.updateJobber visit line items: updatewrite
  • jobber.visits.assign_usersJobber visits: assign userswrite
  • jobber.visits.completeJobber visits: completewrite
  • jobber.visits.createJobber visits: createwrite
  • jobber.visits.deleteJobber visits: deletedestructive
  • jobber.visits.getGet a Jobber visitread
  • jobber.visits.listList Jobber visitsread
  • jobber.visits.rescheduleJobber visits: reschedulewrite
  • jobber.visits.uncompleteJobber visits: uncompletewrite
  • jobber.visits.updateJobber visits: updatewrite

Questions

The Jobber MCP server, answered.

Is there a Jobber MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 251 Jobber actions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Jobber.

What do I need to connect Jobber?

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

Can an AI agent delete or change things in Jobber?

Only if its key allows it, and only with an explicit confirmation. 36 Jobber actions are destructive, including jobber invoices: delete, jobber quotes: delete and jobber expenses: delete. 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 Jobber API limit?

actionlake paces every call to the limits in the Jobber service file: 2,500 calls per 5 minutes per connection. Repeated reads are answered from cache (91 Jobber actions can be), which never reaches Jobber.

What does a Jobber action cost?

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

The Jobber API 2026-09-25 at api.getjobber.com. It is built from Jobber's documentation as read on 22 October 2026. 251 actions in 1 area, each one in the signed service file (version 1.0.0).

Can I combine Jobber with my other systems?

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

Does actionlake keep my Jobber 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 Jobber 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 Jobber today.

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