# JobNimbus MCP connector

The JobNimbus connector brings activities, conversations, text messages and credit memos into Claude, ChatGPT, Cursor and the Elaichi Agent, so your team can log, read and update them by asking, inside each person's own JobNimbus access.

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

## Facts

| | |
| --- | --- |
| Application | JobNimbus |
| Category | CRM |
| AI tools | 30 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once JobNimbus is connected

- Log a call with the Henderson roof estimate as a JobNimbus activity
- Which conversations are still unread from this morning?
- List credit memos issued this month over 500 dollars

## Connect JobNimbus in Elaichi

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

1. Open Connections, choose Add connection, and pick JobNimbus.
2. Optionally set Share with, then press Connect.
3. Paste a JobNimbus API key. One person generates a token in JobNimbus and pastes it once. Everyone else works through Share with, and never sees it.

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

## JobNimbus MCP connector for 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.

## JobNimbus MCP connector for 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.

## JobNimbus MCP connector for 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 JobNimbus 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 JobNimbus 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 JobNimbus through Elaichi

### Log the call before leaving the driveway

Sales. After an estimate visit, tell the agent what happened and it creates the activity in JobNimbus with the right activity type, so the follow-up is on the record before you reach the next stop.

### Clear the morning's unread text conversations

Office. Ask which JobNimbus conversations are still unread, get a summary of what each homeowner wrote, and mark the ones you have handled as read in one pass.

### Text the crew schedule to the homeowner

Production. Draft and send the message in the existing JobNimbus conversation, then log an activity noting the confirmed install date.

### Review credit memos before month end

Finance. Pull the list of JobNimbus credit memos issued this month and ask for the ones over a set amount or tied to a particular company.

### Catch up on a homeowner's full message history

Customer service. Before returning a call, ask for every message in that JobNimbus conversation and get a short summary of what was promised and when.

### Bulk-load activities from a canvassing day

Management. Hand the agent the list of doors knocked and it creates the activities in JobNimbus in one batch, each with the right type, instead of someone typing them in one by one.

## Elaichi vs Zapier MCP vs Composio for JobNimbus

All three can connect JobNimbus to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over JobNimbus tools | Allow or restrict single JobNimbus tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per JobNimbus call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect JobNimbus to Claude?

Connect JobNimbus in Elaichi first, then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. JobNimbus connects with an API key, so the sign-in step is pasting the key from your JobNimbus account settings into Elaichi. There is no OAuth application to register and no client ID or secret to generate, and the whole thing takes a few minutes.

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

Yes. Once JobNimbus 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 JobNimbus once and every client you use picks it up.

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

It can read and create JobNimbus activities, open text conversations and the messages in them, send a reply, mark conversations read or unread, and list credit memos and the companies in your account. In practice that means logging a call after a visit, summarizing what a homeowner texted, or pulling this month's credit memos by asking. Short concrete asks, like "log a call on the Henderson job", work better than long sentences.

### Does connecting JobNimbus give the AI everything in my account?

No. Every call runs inside the access of the person who signed in, so the AI sees the JobNimbus activities, conversations and credit memos that person can already see, and nothing more. Elaichi can narrow that further with restrictions, and it can never widen it beyond what JobNimbus already allows.

### Can my team share one JobNimbus connection?

Yes. One person connects JobNimbus with their API key and shares the connection with a team in Elaichi, and nobody else ever handles the key. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who sent a message or logged an activity, not the connection owner.

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

Yes. Restrictions in Elaichi work per action, so you can allow reading and creating JobNimbus activities while blocking deleting activities or messages. A restricted action is never advertised to Claude, ChatGPT or Cursor at all, so no prompt, however worded, can reach it.

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

Offboarding someone in Elaichi ends their access to JobNimbus through every AI client at once. If they had shared a JobNimbus connection, it keeps working for everyone else on the team. Disconnecting JobNimbus once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client together.

### Does the JobNimbus MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. JobNimbus is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for JobNimbus?

Yes. Both let Claude, ChatGPT or Cursor use JobNimbus. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every JobNimbus call.

### How is Elaichi different from Composio for JobNimbus?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to JobNimbus: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 30 JobNimbus tools

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

- **List all JobNimbus activities** (List). List JobNimbus activities attached to a record or created by a user. Returns: id, content, activityTypeId, activityAction, isPrivate, primaryRecord, relatedRecords, createdAt. The API rejects requests that filter by neither primaryRecordId nor createdById. pageSize max 200, defaults to 100.
- **Get single JobNimbus activity by ID** (Get). Get a single JobNimbus activity by id. Returns: id, content, activityTypeId, activityAction, isPrivate, primaryRecord, relatedRecords, createdAt. Required: id.
- **Update a JobNimbus activity by ID** (Update). Update a JobNimbus activity by id with a JSON Patch document. Returns the updated activity: id, content, activityTypeId, primaryRecord, createdAt. Required: id. Activities created by a system integration or with a read-only activity type cannot be patched.
- **Delete a JobNimbus activity by ID** (Delete). Delete a JobNimbus activity by id. Returns an empty 204 response on success. Required: id. Activities created by a system integration or with a read-only activity type cannot be deleted.
- **Create a JobNimbus activity** (Create). Create a JobNimbus activity attached to a primary record. Returns the created activity: id, content, activityTypeId, primaryRecord, createdAt. Required: content, activityTypeId, activityAction, primaryRecord.
- **JobNimbus activities bulk create** (Create). Create multiple JobNimbus activities in one all-or-nothing batch. Each element of items is an activity payload with content, activityTypeId, activityAction, primaryRecord, and relatedRecords. Returns the created activities with id, activityTypeId, primaryRecord, relatedRecords, and createdById. Required: items.
- **List all JobNimbus activity types** (List). List activity types available for activities in jobnimbus. Returns each activity type with its integer id plus additional fields under attributes; the exact field set is defined upstream. No request parameters.
- **List all JobNimbus companies** (List). List the jobnimbus companies the authenticated user belongs to. Returns a collection of company records, each including its id. Requires no parameters.
- **JobNimbus auth switch company** (Action). Switch the active company context for a JobNimbus integration by supplying the target companyId and a refreshToken. Returns a 200 JSON response whose body fields are not documented in the JobNimbus API reference. Required: companyId, refreshToken.
- **List all JobNimbus phone numbers** (List). List the sending phone numbers configured for text messaging in jobnimbus. Returns the collection of phone number records, each including its id.
- **List all JobNimbus conversations** (List). List text-messaging conversations in JobNimbus, filterable by assigned user, archived state, linked contact or job, contact or agent phone number, and free text. Returns conversation records with id, contactDisplayName, contactPhoneNumber, agentPhoneNumber, contactId, primaryRecord, assignedUserId, tabs, unreadCount, lastReadAt, lastMessageAt, preview, messageCount, archivedAt, createdAt, updatedAt. Paginates with cursor and pageSize (max 200).

- **JobNimbus conversations counts** (Action). Get conversation counts per inbox tab in JobNimbus: active, mine, unassigned, others and archived, each with its total and unread counts. Returns: tabs. Takes no parameters.

- **Get single JobNimbus conversation by ID** (Get). Get a single JobNimbus text-messaging conversation by id. Returns: id, contactDisplayName, contactPhoneNumber, agentPhoneNumber, contactId, primaryRecord, assignedUserId, tabs, unreadCount, lastReadAt, lastMessageAt, preview, messageCount, archivedAt, createdAt, updatedAt. Required: id.

- **JobNimbus conversations bulk update** (Update). Update several JobNimbus text-messaging conversations in one call: each item carries a conversation id and a JSON Patch document (replace operations on /assignedUserId, /archived or /primaryRecord). Returns a 207 multi-status list with one result per item: id, status, data (the updated conversation) or error. Required: items.

- **Update a JobNimbus conversation by ID** (Update). Update a JobNimbus text-messaging conversation by id using a JSON Patch document with replace operations on /assignedUserId (assign or unassign), /archived (archive or restore) or /primaryRecord (link to a contact or job). Returns the updated conversation with id, contactDisplayName, contactPhoneNumber, agentPhoneNumber, contactId, primaryRecord, assignedUserId, tabs, unreadCount, lastReadAt, lastMessageAt, preview, messageCount, archivedAt, createdAt, updatedAt. Required: id and a JSON Patch array body.

- **Create a JobNimbus conversation** (Create). Find or create a JobNimbus text-messaging conversation between a contact phone number and one of your sending (agent) phone numbers, optionally attaching it to a primary CRM record (contact or job). Returns the existing or newly created conversation with id, contactDisplayName, contactPhoneNumber, agentPhoneNumber, contactId, primaryRecord, assignedUserId, tabs, unreadCount, lastReadAt, lastMessageAt, preview, messageCount, archivedAt, createdAt, updatedAt. Required: contactPhoneNumber, agentPhoneNumber.

- **JobNimbus conversations set read state bulk** (Set). Mark several JobNimbus text-messaging conversations as read or unread in one call. Returns a 207 multi-status list with one result per conversation: id, status, data (unreadCount, lastReadAt) or error. Required: conversationIds, read.

- **JobNimbus conversations set read state** (Set). Mark a JobNimbus text-messaging conversation as read or unread, optionally up to a specific message (lastReadMessageId). Returns: unreadCount, lastReadAt. Required: conversation_id.

- **List all JobNimbus messages** (List). List the message history of a jobnimbus conversation. Returns message records including id, body, mediaIds, and scheduledFor. Required: conversation_id. Max 200 per page.
- **Create a JobNimbus message** (Create). Send a message in a jobnimbus conversation, optionally scheduling it for later delivery and attaching media. Returns the created message including id, body, mediaIds, and scheduledFor. Required: conversation_id.
- **Get single JobNimbus message by ID** (Get). Get a single message in a jobnimbus conversation by id. Returns the message record including id, body, mediaIds, and scheduledFor. Required: id and conversation_id.
- **Update a JobNimbus message by ID** (Update). Edit a scheduled message in a jobnimbus conversation by id. Returns the updated message including id, body, mediaIds, and scheduledFor. Fails with 409 Conflict if the message was already sent. Required: id and conversation_id.
- **Delete a JobNimbus message by ID** (Delete). Delete a scheduled message from a jobnimbus conversation by id. Fails with 409 Conflict if the message was already sent. Returns an empty 204 response on success. Required: id and conversation_id.
- **List all JobNimbus credit memos** (List). List jobnimbus credit memos filed against a record, optionally filtered by status or archive state. Returns: id, status, isArchived. Required: primaryRecordId, primaryRecordType, sort. Max 100 per page.
- **Get single JobNimbus credit memo by ID** (Get). Get a single jobnimbus credit memo by id. Returns: id, status, isArchived. Required: id. A memo the caller may not see is reported the same way as one that does not exist (404).
- **Create a JobNimbus credit memo** (Create). Create a jobnimbus credit memo filed against a primary record. Returns the created memo with id, status, and isArchived. Requires lineItems (at least one), primaryRecord, and idempotency_key.
- **JobNimbus credit memos bulk create** (Create). Create 1-200 jobnimbus credit memos in a single all-or-nothing batch. Returns the created memos with id, status, and isArchived. Requires items (1-200) and idempotency_key.
- **Update a JobNimbus credit memo by ID** (Update). Update a jobnimbus credit memo by id using a JSON Patch document. Returns the updated memo with id, status, and isArchived. Required: id and at least one patch operation. Returns 409 when the credit memo is voided.
- **Delete a JobNimbus credit memo by ID** (Delete). Delete a credit memo in jobnimbus by id. Returns an empty 204 response on success. Required: id.
- **JobNimbus credit memos void** (Action). Void a credit memo in jobnimbus, marking it void so it can no longer be modified. Returns the credit memo with its id and status. Required: credit_memo_id. Fails with 409 if the credit memo is already voided.
