# Jobber MCP connector

The Jobber connector brings your Jobber clients, work requests and jobs into Claude, ChatGPT, Cursor and any MCP client, so your office team can look up, create and update records in plain language while every action stays within their own Jobber access.

Source: https://elaichi.ai/connectors/jobber/

## Facts

| | |
| --- | --- |
| Application | Jobber |
| Category | CRM |
| AI tools | 15 |
| Authentication | Connects over OAuth |
| Needs your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | Yes |

## What you can ask once Jobber is connected

- Which Jobber requests came in this week and from whom?
- Create a Jobber client for the Harlow Street property.
- How many open Jobber jobs sit with each team?

## Connect Jobber in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Jobber.
2. Optionally set Share with, then press Connect.
3. Supply your own Jobber app, then approve. Jobber needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Jobber tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Jobber to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Jobber to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Jobber to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Jobber to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Jobber tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Jobber through Elaichi

### Catch a client record up after a call

Office. A customer rings to change their phone number or add a gate code, and the office manager asks the agent to update the Jobber client on the spot instead of switching windows mid-conversation.

### See what jobs are on today

Dispatch. Ask which Jobber jobs are scheduled, who they are for and where, and get a plain answer before the first truck leaves the yard.

### Log a new work request from a phone call

Sales. When a homeowner calls asking for a quote on a fence repair, the salesperson describes the job and the agent creates the Jobber request and the new client in one go.

### Follow up on open requests

Sales. Pull every Jobber request that has been sitting untouched for a week, then update each one with notes from the follow-up call.

### Check a job before heading out

Operations. A crew lead asks for the details of one Jobber job, the client attached to it and any notes on the request that started it, all in one answer.

### Tidy up the client list

Owner. Count how many Jobber clients are on the books, find the ones who have not had a job in years, and archive them so the list reflects the customers you actually serve.

## Frequently asked questions

### How do I connect Jobber to Claude?

Connect Jobber in Elaichi first. Jobber requires an OAuth application registered inside your own Jobber account, so one person creates that once and enters its client ID and secret into Elaichi; after that, everyone signs in to Jobber through the normal Jobber login screen and nobody handles those values again. Then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. Claude asks you to sign in, and Jobber is ready.

### Does Jobber work with ChatGPT and Cursor as well as Claude?

Yes. Once Jobber is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi agent. You connect Jobber once and use it from whichever client you happen to be working in.

### What can an AI agent actually do with my Jobber data?

With Jobber connected, an agent can look up a client, create a new one, update their details or archive them when they are no longer a customer. It can list and count work requests, create a new request from a phone call and update an existing one, and it can list your jobs and pull up the details of any single job. It can also answer questions about your Jobber account itself.

### Does connecting Jobber give the AI access to every client and job in my account?

No. Every request to Jobber runs as the person who signed in, so the agent sees exactly the clients, requests and jobs that person can already see in Jobber, and nothing more. Elaichi can narrow that further, for example to read-only, but it can never grant access that Jobber itself has not given the user.

### Can my team share one Jobber connection?

Yes. One person connects Jobber in Elaichi and shares the connection with a team, and nobody else on the team ever handles a client ID, secret or password. Each teammate still signs in as themselves, so when someone updates a Jobber client or creates a request, the audit log records their name, not the name of whoever set up the connection.

### Can I stop an agent from deleting or changing things in Jobber?

Yes. Restrictions in Elaichi work per action, so you can allow reading Jobber clients, requests and jobs while blocking creating, updating or archiving them. A blocked action is never shown to Claude, ChatGPT or any other client at all, so no prompt, however worded, can reach it.

### What happens to a Jobber connection when someone leaves?

Offboarding a person in Elaichi ends their access to Jobber through every client at once, including Claude, ChatGPT and Cursor. If they were using a shared Jobber connection, it keeps working for everyone else on the team. If you want to remove Jobber entirely, disconnecting it once in Elaichi takes it out of every client at the same time.

## All 15 Jobber tools

Every tool below is callable through https://api.elaichi.ai/mcp once Jobber is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Jobber account** (List). Get information about the authorized Jobber account. Returns: id, name, countryCode, phone. No required parameters — the account is determined by the access token.
- **List all Jobber clients** (List). List Jobber clients. Returns: id, name, isLead, leadSource, email, phone, balance, tags, billingAddress, and totalCount rollups for jobs, requests, quotes and invoices. Filter with the filter param, e.g. {"isLead": true} for leads only. A client whose jobs.totalCount is 0 has never had work booked.
- **Get single Jobber client by ID** (Get). Get a single Jobber client by id. Returns: id, name, isLead, leadSource, email, phone, balance, tags, billingAddress, and jobs/requests/quotes/invoices totalCount. Required: id.
- **Jobber clients count** (Action). Count Jobber clients matching a filter, without fetching the records. Returns: totalCount. Use filter {"isLead": true} to count how many leads have come through, optionally narrowed by createdAt.
- **Create a Jobber client** (Create). Create a Jobber client, e.g. to lodge a qualifying lead. Returns the created client; new clients start with isLead true. Accepts scalar fields only — to set emails, phones, addresses or custom fields, use the graphql tool with the clientCreate mutation.
- **Update a Jobber client by ID** (Update). Update a Jobber client's scalar details. Returns the updated client. Required: id. Status tags (tagsToAdd / tagsToDelete) are not settable here — use the graphql tool with the clientEdit mutation. isLead is managed by Jobber and cannot be set at all.
- **Jobber clients archive** (Archive). Archive a Jobber client. Required: client_id. Jobber refuses while the client has open jobs or work requests, returning a userErrors message.
- **List all Jobber requests** (List). List Jobber requests (incoming work enquiries). Returns: id, title, requestStatus, contactName, companyName, email, phone, source, client, salesperson, and jobs/quotes totalCount. Filter with e.g. {"status": "new"}.
- **Get single Jobber request by ID** (Get). Get a single Jobber request by id. Returns: id, title, requestStatus, contact details, source, client, salesperson, and jobs/quotes totalCount. Required: id.
- **Jobber requests count** (Action). Count Jobber requests matching a filter, without fetching the records. Returns: totalCount. Use filter {"status": "new"} to count new leads awaiting action.
- **Create a Jobber request** (Create). Create a Jobber request (work enquiry) against an existing client. Returns the created request with requestStatus "new". Required in body: client_id. Accepts scalar fields only — for requestDetails, lineItems or formIds use the graphql tool with the requestCreate mutation.
- **Update a Jobber request by ID** (Update). Update a Jobber request. Returns the updated request. Required: id. Only title, property, salesperson and referring client are editable — requestStatus is driven by Jobber workflow, not set directly.
- **List all Jobber jobs** (List). List Jobber jobs (booked work). Returns: id, jobNumber, title, jobStatus, jobType, total, scheduling timestamps, client and property. Use this to see which customers have actually had services delivered.
- **Get single Jobber job by ID** (Get). Get a single Jobber job by id. Returns: id, jobNumber, title, jobStatus, jobType, total, scheduling timestamps, client and property. Required: id.
- **Create a Jobber graphql** (Create). Send an arbitrary GraphQL query or mutation to Jobber. Body: {query, variables}. Use this for anything the typed tools cannot express — setting client emails/phones/addresses, adding or removing status tags, or any mutation with a nested input object. Returns Jobber's raw response including data, errors and userErrors.
