CRM · Beta
JobNimbus
API integration
Ship CRM features without building the integration. Full JobNimbus API access via Proxy and 30+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with JobNimbus
Common scenarios for SaaS companies building JobNimbus integrations for their customers.
Embed JobNimbus as a native CRM for contractor-focused SaaS
If your product serves roofing, siding, solar, or specialty contractors, JobNimbus is likely their source of truth. Offering a native integration via Truto lets your users sync activities, conversations, and financial records without exporting CSVs or using Zapier.
Pipe AI voice and SMS intake into the contractor's CRM inbox
AI receptionist and conversational SaaS products can create conversations and messages directly inside JobNimbus so after-hours customer interactions appear in the same inbox the sales team already uses, with unread flags preserved.
Sync field sales and canvassing activity in bulk
Door-to-door and field sales platforms can batch-push knocked doors, calls, and meetings as JobNimbus activities attached to the right contact or job record, eliminating double data entry for reps.
Push billing adjustments from payment and financing tools
Payments, financing, and accounting SaaS can create and void credit memos against jobs so the contractor's back office always sees the accurate balance inside JobNimbus.
Serve franchise and multi-location contractor networks
Platforms selling into multi-brand or franchise contractors can use the company switch endpoint to route data to the correct business entity under a single authenticated connection.
What You Can Build
Ship these features with Truto + JobNimbus
Concrete product features your team can ship faster by leveraging Truto’s JobNimbus integration instead of building from scratch.
Two-way SMS inbox sync
Create conversations and messages in JobNimbus, update their read state, and keep an external messaging product in lockstep with the native JobNimbus inbox.
Scheduled outbound messaging
Queue review requests, appointment reminders, or follow-ups by creating messages with a scheduled send time directly on the contractor's JobNimbus phone number.
Bulk activity logging for field reps
Use bulk activity creation to sync a full day of offline canvassing or call activity to the correct primary records in a single API call.
Automated credit memo issuance
Generate credit memos with line items against a job when a dispute, refund, or promotional adjustment is triggered in your billing product, with idempotency keys to prevent duplicates.
Activity type-aware timeline embeds
Fetch the contractor's configured activity types and render a timeline inside your product that mirrors how notes, tasks, and events are categorized in JobNimbus.
Multi-company routing for franchise accounts
Expose a company picker in your UI that uses the JobNimbus auth switch endpoint so a single connection can read and write across every entity a user has access to.
SuperAI
JobNimbus AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_job_nimbus_activities
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_job_nimbus_activity_by_id
Get a single JobNimbus activity by id. Returns: id, content, activityTypeId, activityAction, isPrivate, primaryRecord, relatedRecords, createdAt. Required: id.
update_a_job_nimbus_activity_by_id
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_job_nimbus_activity_by_id
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_job_nimbus_activity
Create a JobNimbus activity attached to a primary record. Returns the created activity: id, content, activityTypeId, primaryRecord, createdAt. Required: content, activityTypeId, activityAction, primaryRecord.
job_nimbus_activities_bulk_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_job_nimbus_activity_types
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_job_nimbus_companies
List the jobnimbus companies the authenticated user belongs to. Returns a collection of company records, each including its id. Requires no parameters.
job_nimbus_auth_switch_company
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_job_nimbus_phone_numbers
List the sending phone numbers configured for text messaging in jobnimbus. Returns the collection of phone number records, each including its id.
list_all_job_nimbus_conversations
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).
job_nimbus_conversations_counts
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_job_nimbus_conversation_by_id
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.
job_nimbus_conversations_bulk_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_job_nimbus_conversation_by_id
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_job_nimbus_conversation
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.
job_nimbus_conversations_set_read_state_bulk
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.
job_nimbus_conversations_set_read_state
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_job_nimbus_messages
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_job_nimbus_message
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_job_nimbus_message_by_id
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_job_nimbus_message_by_id
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_job_nimbus_message_by_id
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_job_nimbus_credit_memos
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_job_nimbus_credit_memo_by_id
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_job_nimbus_credit_memo
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.
job_nimbus_credit_memos_bulk_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_job_nimbus_credit_memo_by_id
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_job_nimbus_credit_memo_by_id
Delete a credit memo in jobnimbus by id. Returns an empty 204 response on success. Required: id.
job_nimbus_credit_memos_void
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.
Why Truto
Why use Truto’s MCP server for JobNimbus
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with JobNimbus in under an hour. No boilerplate, no maintenance burden.
Link your customer’s JobNimbus account
Use Truto’s frontend SDK to connect your customer’s JobNimbus account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call JobNimbus
Truto’s Proxy API is a 1-to-1 mapping of the JobNimbus API. You call us, we call JobNimbus, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate JobNimbus’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about JobNimbus on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How do end users authenticate their JobNimbus account?
Truto handles the JobNimbus authentication flow for you. Your users connect through a Truto-managed link or embedded flow, and your backend receives a connection ID to make API calls — no need to store or rotate credentials yourself.
Can a single connection access multiple JobNimbus companies?
Yes. JobNimbus supports multi-company contexts, and the auth switch company endpoint lets you route API calls to a specific company entity under the same authenticated session — useful for franchise networks or parent organizations.
What JobNimbus objects can I read and write today?
The current tool set covers activities (list, get, create, bulk create, update, delete), activity types (list), companies (list), phone numbers (list), conversations (list, get, create, update, bulk update, read state, counts), messages (list, get, create, update, delete), and credit memos (list, get, create, bulk create, update, delete, void).
Does the integration support bulk operations?
Yes. You can bulk create activities, bulk create credit memos, bulk update conversations, and set read state on conversations in bulk — which is important for high-volume contractor workflows like end-of-day field activity sync.
How do I avoid duplicate credit memos from retries?
JobNimbus credit memo endpoints accept idempotency keys. Pass a stable key per logical operation so network retries or at-least-once delivery from your worker queue won't create duplicate entries against a job.
Can I schedule outbound SMS messages through the API?
Yes. The create message endpoint supports a scheduledFor parameter, so you can queue messages to be sent later from the contractor's JobNimbus phone number, with replies landing in the native JobNimbus inbox.
Is there a unified CRM API I can use instead of the native JobNimbus tools?
Not yet for this integration — JobNimbus is currently available through its native tools in Truto. If you need a unified CRM schema across multiple contractor CRMs, reach out and we can prioritize mapping JobNimbus into a unified model.
JobNimbus
Get JobNimbus integrated into your app
Our team understands what it takes to make a JobNimbus integration successful. A short, crisp 30 minute call with folks who understand the problem.