Forum Discussion

TurfT's avatar
TurfT
Verified Community Coach
4 months ago

Anyone else built a direct MCP connection between Claude AI and Jobber?

I set up a direct MCP integration between Jobber and Claude AI — meaning Claude can query my Jobber account in real time and pull live data like client counts, job status, and invoices on demand. Took some work to get running but it's live.

Current limitation is it's read-only. Jobber's MCP tools are still limited on the write side, which is where it would get really powerful — imagine AI-assisted job creation, status updates, or dispatching without touching the app.

Curious if anyone else has built this connection, and more importantly, if anyone has figured out how to get write access working.

19 Replies

  • jjd921's avatar
    jjd921
    Contributor 2

    If you're running per-client Jobber credentials, the thing that bites isn't the writes - it's refresh token rotation.

    Jobber issues a new refresh token on every refresh and invalidates the old one. If the new one isn't persisted before the retried call goes out, nothing appears to break: the access token you just got keeps working for the rest of its hour. Then the next refresh fails with invalid_grant and that client is silently disconnected, hours after the actual bug, with nothing in the logs pointing at it.

    Two things worth doing. Serialise the refresh per account, so two concurrent requests can't both spend the same single-use token - the second one fails and takes the account with it. And log whether the token actually rotated rather than assuming it did.

    The part I'd flag: a refresh succeeding proves nothing. I only convinced myself mine was right by forcing two refreshes an hour apart and confirming the second still worked, because that's the one that has to use the token the first one wrote.

    matt_kaleafirm - on guardrails, agreed that reliability is the whole game. The failure mode I'd add to your list is the silent one: not a bad write, but a connection that quietly stops working and nobody notices until a customer asks why nothing synced.

  • Brad-B's avatar
    Brad-B
    Contributor 2

    Yes! I've been building something like this since September 29, and I'm not a coder. I run a home services company, and I built the whole thing by talking to Claude Code. I call it Bailey Boys OS: a private web app that sits between Claude and my business apps, connected to Claude as a custom MCP connector. (Before this I also built our end-of-day reporting app the same way.)

     

    To answer your write access question: yes, it can be done. I made my own Jobber API apps, one read-only and one with write access, instead of using Jobber's MCP tools. Claude never writes anything on its own, though. Every send or create is saved as a proposal first and only happens after I approve it.

     

    Here's what it can do right now:

     

    JOBBER

    - Read: find clients by name, phone, email or address

    - Read: a client's properties and custom fields

    - Read: a client's jobs, visits, requests and invoice summaries

    - Read: price history (what we invoiced and what we quoted before)

    - Read: the team calendar / tech schedule

    - Read: open estimate time slots on the estimator's calendar

    - Read: new requests still waiting on a reply

    - Read: check whether clients are archived

    - Write: create a new client (with texting turned on and a lead note)

    - Write: create a draft quote

    - Draft only: write a text for me to paste into Jobber's texting by hand (more on that below)

     

    GOHIGHLEVEL

    - Read: search contacts and conversations, read message history

    - Read: who's waiting on a reply

    - Write: send an SMS reply (after my approval, and it checks opt-outs first)

     

    RINGCENTRAL (our office texting line)

    - Read: text conversations and recent calls, including calls from one number

    - Read: texting / opt-out status

    - Write: send a text reply (after my approval)

     

    GOOGLE

    - Read: check a service address before it goes into Jobber

     

    SCREENSHOT INTAKE

    - Read: I drop in a screenshot of a lead (from a form, a text, anywhere), and it pulls out the details and checks whether the person is already in Jobber

    - Write: then it creates the client in Jobber, or adds a note to the existing one

     

    THE OS ITSELF

    - Our business rules and price list live in the OS, and Claude reads them live

    - Every text and every Jobber create needs my approval in Claude chat

    - On/off switches for each kind of write, so I can shut any of them off instantly

    - An activity log of everything it did in Jobber, GHL and RingCentral

    - Claude can only reach it during set business hours

    - When I fix a draft, the OS logs the correction so it learns how we actually talk to customers

     

    THE ONE MISSING PIECE: Jobber texting.

    The text conversations that happen inside Jobber (on our Jobber texting number) are the only thing I can't get to. As far as I can tell, the public API doesn't expose them, and there are no webhooks or Zapier triggers for them either. So Claude can see a customer's GHL texts and RingCentral texts, but not the conversation they're having with us in Jobber, and that's often the most important one. Right now I work around it with screenshots and copy/paste. I've emailed Jobber API support about it and I'm waiting to hear back.

     

    If anyone has found a way to read Jobber text conversations through the API, or has heard anything about it being on the roadmap, I'd love to compare notes. I'm also happy to share what I learned getting write access working.