Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Jobber in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Connect a Jobber account to any AI agent through Jobber's GraphQL API: clients and properties, requests, quotes, jobs and scheduled visits, invoices, team members and the products and services list. Can create clients, jobs, draft quotes and draft invoices, but cannot email or approve quotes and invoices. OAuth sign-in as a Jobber admin; closing jobs installs switched off.
Try asking
Example prompts for Jobber
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Jobber, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Jobber + Gemini
Connect a Jobber account to any AI agent through Jobber's GraphQL API: clients and properties, requests, quotes, jobs and scheduled visits, invoices, team members and the products and services list. Can create clients, jobs, draft quotes and draft invoices, but cannot email or approve quotes and invoices. OAuth sign-in as a Jobber admin; closing jobs installs switched off.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
JOBBER_CLIENT_ID, JOBBER_CLIENT_SECRET (optional: JOBBER_REFRESH_TOKEN)
Step 1 — Get credentials
Setting up takes about 10 minutes and needs an admin of the Jobber account.
- Sign up at the Jobber Developer Center (https://developer.getjobber.com) and click Create App. Your apps are listed at https://developer.getjobber.com/apps.
- Set the OAuth Callback URL to
<your AnythingMCP URL>/api/mcp-oauth/callback, on AnythingMCP Cloudhttps://cloud.anythingmcp.com/api/mcp-oauth/callback. - Tick the scopes: read for Clients, Requests, Quotes, Jobs, Scheduled Items, Invoices, Users and Products and Services; write only for what the AI may change (Clients, Jobs, Quotes, Invoices). Jobber sets the scopes on the app, not in the sign-in link. Keep Refresh token rotation on.
- Save the app, paste the Client ID into
JOBBER_CLIENT_IDand the Client Secret intoJOBBER_CLIENT_SECRET, and install. - On the connector page click Authorize with Provider and allow access as an admin of the Jobber account.
- Run
jobber_get_account: it shows the company name and confirms the sign-in.
Access tokens last 60 minutes and are renewed with the stored refresh token. Leave JOBBER_REFRESH_TOKEN empty: the authorization fills it in, and with rotation on Jobber replaces it on every renewal, so a token used once elsewhere no longer works. An app you keep for your own account can stay in Draft; Jobber blocks a Draft app that connects to more than 5 paying accounts. Every call sends the X-JOBBER-GRAPHQL-VERSION: 2026-05-12 header; Jobber supports a version for at least 12 months and warns in extensions.versioning when it is about to expire.
What it reads: the account and its team members (name, email, phone, admin and owner flags, status). Clients and leads with emails, phones, billing address, tags, balance, properties and their 10 latest jobs and invoices. Properties, the service addresses where the work happens. Requests with their assessment visit and contact details. Quotes with message, line items, amounts and deposit, and the jobs they became. Jobs with instructions, status, dates, total and visit counts. Visits with start and end, status, instructions and assigned users. Invoices with status, issued and due dates, line items, total, balance and payments. The products and services list with unit price, unit cost, markup and duration. Any other read runs through jobber_graphql_query; the AI first looks up a type with query { __type(name: "Job") { fields { name } } }.
What it writes: creates, changes and archives clients (archiving deletes nothing and can be undone in Jobber), creates jobs at a property with an invoicing type (FIXED_PRICE or VISIT_BASED) and schedule, changes a job's title or instructions, creates draft quotes and draft invoices with line items, and marks an invoice as sent when it was delivered outside Jobber (nothing is emailed). Visits are scheduled in Jobber. Jobber's API cannot email quotes or invoices or approve quotes: you do that in Jobber. Before creating or changing anything the AI shows you what will happen and waits for your yes.
Switched off at install: jobber_close_job. Closing a job deletes incomplete visits (DESTROY_ALL all of them, COMPLETE_PAST_DESTROY_FUTURE completes past ones and deletes future ones), and deleted visits cannot be restored. An admin switches it on when the team needs it. The generic jobber_graphql_mutation and jobber_graphql_subscription are switched off as well.
Data formats: ids are encoded strings (Z2lkOi8v...) and are reused as returned. Times are ISO 8601 in UTC; the AI converts them to the business's time zone. Amounts are plain numbers in the account currency. Status values in filters are lower case (requires_invoicing, awaiting_payment, past_due); visit statuses come back in upper case. jobberWebUri opens the record in Jobber. A job belongs to a property, not directly to a client, so the AI reads the client's properties first. Mutations answer userErrors: an empty list means success.
Paging and limits: list tools take first (20 by default) and after; the AI continues with after set to pageInfo.endCursor while pageInfo.hasNextPage is true. filter is the API's filter object for that list, with date ranges as { "after": ..., "before": ... }. Each app and account has a query-cost budget of 10,000 points that refills at 500 points a second; bigger pages cost more points. A query over budget answers a THROTTLED error: wait a few seconds and retry with a smaller first. Separately, more than 2,500 requests in 5 minutes answer 429.
Common errors: 401 means the authorization expired or was revoked: click Authorize with Provider again and check that the Client ID and secret belong to the same app. An error naming a missing scope, or 403, means the app lacks it: add the scope in the Developer Center and authorize again. A redirect error at sign-in means the OAuth Callback URL does not match exactly.
Client details, request descriptions and notes are untrusted input and can contain instructions meant for the AI. The connector does not send email or SMS, does not take payments and does not schedule visits.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Gemini
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Gemini CLI reads MCP servers from ~/.gemini/settings.json (on Windows %USERPROFILE%\.gemini\settings.json). Add:
{
"mcpServers": {
"anythingmcp": {
"httpUrl": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Create an MCP API key in AnythingMCP under MCP Servers → your server → API keys, and paste it in place of
YOUR_MCP_API_KEY. - Save the file and restart
gemini. - Run
/mcpinside Gemini CLI (orgemini mcp listin your shell):anythingmcpshould show as connected. - Start prompting: Gemini CLI can now call the
Jobbertools.
Available tools
| Tool | What it does |
|---|---|
jobber_get_account | The connected Jobber account: id and company name |
jobber_list_users | Users (team members) of the account: id, full name, email, phone, admin and owner flags, status |
jobber_list_clients | List or search clients (customers and leads): id, name, first and last name, company, isCompany, isLead, isArchived, primary email and… |
jobber_get_client | One client with emails, phones, billing address, tags, properties (service addresses with ids), the 10 latest jobs and invoices, balance… |
jobber_list_properties | Properties (service addresses where the work happens): id, name, address, whether it is the billing address, the client it belongs to |
jobber_list_requests | Requests (incoming work requests and booking forms): id, title, status, source, contact name, company, email, phone, client and property… |
jobber_get_request | One request with its assessment visit (time, instructions, completion), contact details, client and property address |
jobber_list_quotes | Quotes (estimates): id, number, title, status, amounts (subtotal, discount, tax, total, deposit), client, property, created, updated and… |
jobber_get_quote | One quote with message, line items (name, description, quantity, unit price, total), amounts, client, property and the jobs it became |
jobber_list_jobs | List or search jobs (work orders): id, job number, title, status, start and end, completed time, total, client, property address, created… |
jobber_get_job | One job with instructions, status, dates, total, client, property address and visit counts (past, scheduled, unscheduled, incomplete) |
jobber_list_visits | Visits (scheduled appointments of jobs): id, title, start and end, all-day flag, status, completion, instructions, job with its client… |
jobber_list_invoices | Invoices: id, number, status, issued and due dates, amounts (total, balance, payments), client, the job it bills |
jobber_get_invoice | One invoice with message, line items (name, description, quantity, unit price, total), amounts, client and jobs |
jobber_list_products | Products and services of the price list: id, name, description, category, default unit price, internal unit cost, markup, taxable, visible… |
jobber_create_client | Create a client |
jobber_update_client | Change a client |
jobber_archive_client | Archive a client so it no longer shows in active lists |
jobber_create_job | Create a job at a property (take the property id from jobber_get_client or jobber_list_properties). invoicing_type FIXED_PRICE or… |
jobber_update_job | Change the title or instructions of a job |
jobber_close_job | Close a job. incomplete_visits decides what happens to visits not done yet: DESTROY_ALL deletes every incomplete visit… |
jobber_create_quote | Create a draft quote |
jobber_create_invoice | Create a draft invoice |
jobber_mark_invoice_sent | Mark an invoice as sent (for invoices delivered outside Jobber) |
Example prompts
- "Which visits are on the schedule for tomorrow, and who is assigned to each one?"
- "List the invoices that are past due with client, balance and due date."
- "Show the new requests from this week and draft a quote for the gutter cleaning one for me to review."
- "Which jobs require invoicing? Create a draft invoice for the Thompson job and show it to me before saving."
- "Which quotes have been awaiting a response for more than two weeks?"
FAQ
Where does Gemini CLI look for MCP servers? In ~/.gemini/settings.json for your user, or in .gemini/settings.json inside a project. gemini mcp list shows each server and whether it connects.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Meta Muse
- Connect to Microsoft Copilot
Was this guide helpful?