Jobber MCP Connector
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Jobber MCP ConnectorList all unpaid invoices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Jobber MCP Connector
A Model Context Protocol (MCP) server that connects Claude to Jobber — the field service management platform. Manage clients, jobs, invoices, quotes, and scheduling through natural language.
Built by Total Property Solutions Pro.
What You Can Do
Once connected, you can ask Claude things like:
"Show me all active jobs this week"
"Create a client for John Smith at 123 Main St"
"What's on the schedule for tomorrow?"
"Create a quote for roof cleaning at $350 for the Johnsons"
"Mark job #142 as completed"
"List all unpaid invoices"
"Create an invoice for job #142 due in 30 days"
Related MCP server: ServiceTitan MCP Server
Tools Available
Tool | Description |
| List clients with name, email, phone, address |
| Create a new client |
| List jobs filtered by status |
| Create a new job/work order |
| Move a job through workflow stages |
| List invoices filtered by status |
| Create an invoice for a client or job |
| List quotes filtered by status |
| Create a new quote with line items |
| Get today's, tomorrow's, or this week's schedule |
Prerequisites
Node.js v18 or later
A Jobber account
A Jobber Developer App (free — see setup below)
Claude Desktop or another MCP-compatible client
Installation
git clone https://github.com/totalproperty/jobber-mcp-connector.git
cd jobber-mcp-connector
npm installConfiguration
Step 1 — Create a Jobber Developer App
Go to developer.getjobber.com and sign in
Click Create App
Set the Redirect URI to
http://localhost:3100/callbackCopy your Client ID and Client Secret
Step 2 — Set Up Environment Variables
cp .env.example .envEdit .env with your credentials:
JOBBER_CLIENT_ID=your_client_id_here
JOBBER_CLIENT_SECRET=your_client_secret_hereStep 3 — Authorize via OAuth2
Run the included helper to get your access and refresh tokens:
JOBBER_CLIENT_ID=your_id JOBBER_CLIENT_SECRET=your_secret node src/oauth-helper.jsThis will:
Print an authorization URL — open it in your browser
After you approve the app in Jobber, it captures the callback automatically
Print your
JOBBER_ACCESS_TOKENandJOBBER_REFRESH_TOKEN
Add both tokens to your .env file.
Step 4 — Configure Claude Desktop
Add this to your Claude Desktop MCP config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"jobber": {
"command": "node",
"args": ["/absolute/path/to/jobber-mcp-connector/src/index.js"],
"env": {
"JOBBER_CLIENT_ID": "your_client_id",
"JOBBER_CLIENT_SECRET": "your_client_secret",
"JOBBER_ACCESS_TOKEN": "your_access_token",
"JOBBER_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}Restart Claude Desktop. The Jobber tools will appear automatically.
Usage Examples
List today's schedule
"What's on my schedule today?"
Create a client
"Add a new client: Sarah Johnson, sarah@email.com, (555) 867-5309, 456 Oak Ave, Tampa FL 33601"
Create a quote
"Create a quote for Sarah Johnson for pressure washing her driveway — 2 hours at $95/hr"
Check unpaid invoices
"Show me all invoices that haven't been paid yet"
Update job status
"Mark job #204 as completed"
Token Refresh
Access tokens expire periodically. The connector automatically refreshes them using your JOBBER_REFRESH_TOKEN. If you see authentication errors, re-run the OAuth helper to get fresh tokens.
Development
# Run with auto-reload on file changes
npm run dev
# Run normally
npm startProject Structure
jobber-mcp-connector/
├── src/
│ ├── index.js # MCP server entry point
│ ├── jobber-client.js # GraphQL API client + OAuth2
│ ├── queries.js # All GraphQL queries and mutations
│ ├── tools.js # Tool definitions and handlers
│ └── oauth-helper.js # One-time OAuth2 authorization helper
├── .env.example # Environment variable template
├── package.json
└── README.mdLicense
MIT — Built by Total Property Solutions Pro
Available Tools
10 toolsjobber_create_clientA
Create a new client in Jobber. Returns the created client with their ID.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Billing city | |
| No | Primary email address | ||
| phone | No | Primary phone number | |
| street | No | Billing street address | |
| country | No | Country (default: US) | |
| lastName | Yes | Client's last name | |
| province | No | State or province | |
| firstName | Yes | Client's first name | |
| postalCode | No | ZIP or postal code | |
| companyName | No | Company name (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It does disclose the core side effect: a new client is created and the created client is returned with an ID. However, it omits other relevant behaviors such as duplicate handling, idempotency, permission requirements, or failure behavior. This is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no filler. The primary action is front-loaded, and the return behavior is stated efficiently. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with no annotations and no output schema, the description is reasonably complete: it states the action and the core return value. However, it could be more complete by noting required fields behavior, potential duplicate-client risks, or any external constraints. The 100% schema coverage mitigates but does not fully eliminate this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 10 parameters with descriptions, so the baseline is 3. The tool description adds no additional parameter-level meaning, but none is needed because the schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create'), the target resource ('a new client'), and the platform ('Jobber'). It also specifies the return value, which unambiguously distinguishes it from sibling tools like jobber_list_clients and jobber_create_job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. For example, it does not suggest checking existing clients with jobber_list_clients before creating, nor does it mention when a client should be created vs. updated. The usage context is only implied by the tool name and basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_create_invoiceB
Create an invoice in Jobber for a client or job. Supports custom line items, due dates, and optional deposit.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | No | Optional: Jobber job ID to link this invoice to a job | |
| dueDate | No | Payment due date in YYYY-MM-DD format | |
| message | No | Message to the client on the invoice | |
| subject | No | Invoice subject line | |
| clientId | Yes | Jobber client ID | |
| lineItems | No | Line items for the invoice | |
| issuedDate | No | Issue date in YYYY-MM-DD format (defaults to today) | |
| depositAmount | No | Deposit amount required upfront |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the creation action and some invoice features, but does not disclose possible side effects (e.g., sending the invoice to the client), required permissions, behavior on failure, or idempotency. Significant behavioral ambiguity remains for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the action and key capabilities with no filler. Every clause carries information, making it efficiently scannable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 8 parameters, no output schema, and no annotations, the description is too sparse. It does not mention what the tool returns (e.g., invoice ID), prerequisites beyond clientId, or behavior on error conditions. An agent would need more context to reliably handle invocation outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some meaning by calling out 'custom line items, due dates, and optional deposit', but these directly mirror the schema properties lineItems, dueDate, and depositAmount. It does not clarify format, relationships, or constraints beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create an invoice in Jobber'. It also scopes the target to 'a client or job' and lists supported features. This clearly differentiates it from sibling tools like jobber_list_invoices or jobber_create_quote, even without explicitly naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case: when you need to create an invoice for a client or job. It does not provide explicit when-not-to-use guidance or mention alternatives such as jobber_create_quote for quotes. The context is clear but no exclusions or sibling comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_create_jobB
Create a new job/work order in Jobber for a client. Include line items for services or materials.
| Name | Required | Description | Default |
|---|---|---|---|
| endAt | No | Job end date/time in ISO 8601 format | |
| title | Yes | Job title or description | |
| startAt | No | Job start date/time in ISO 8601 format (e.g., 2024-03-15T09:00:00) | |
| clientId | Yes | Jobber client ID (get from jobber_list_clients) | |
| lineItems | No | List of services or materials for this job | |
| instructions | No | Internal notes or instructions for the job |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure, but it only says a job is created. It does not describe side effects, whether scheduling is involved, response behavior, required permissions, or any confirmation/error semantics. The line-items note is the only extra behavioral context beyond the verb 'Create'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. Core purpose is front-loaded, and the line-items instruction is a useful, economical addition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation with no annotations and no output schema, the description is minimal. It gives no return expectations, no guidance on required fields beyond what the schema already shows, and no notes about clientId sourcing. The schema compensates for parameter details, making it minimally viable, but the agent must infer broader context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for all six parameters, so the baseline is 3. The description adds no new parameter meaning: 'Include line items for services or materials' restates the schema's lineItems description without providing formats, defaults, or interdependencies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') and resource ('new job/work order in Jobber for a client'), making it clearly distinct from sibling tools like jobber_create_client and jobber_create_invoice. The client relationship and line items hint further prevent ambiguity with jobber_create_quote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites such as obtaining clientId via jobber_list_clients (that hint lives only in the schema) or contrast with quote/invoice creation. The phrase 'for a client' weakly implies a prerequisite but is not actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_create_quoteB
Create a new quote in Jobber for a client. Include a title, line items, and optional message.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Quote title | |
| message | No | Message to the client on the quote | |
| clientId | Yes | Jobber client ID | |
| lineItems | No | Services or materials included in the quote | |
| depositAmount | No | Deposit amount if required |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the operation creates a quote, but says nothing about whether the quote is saved as a draft, sent to the client, requires special permissions, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core purpose in one clear sentence. The second sentence adds a little parameter guidance, though it partly duplicates schema information and omits deposit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with fully documented parameters, this is minimally viable. However, with no output schema and no annotations, the description leaves out the behavior after creation, error cases, and whether existing client IDs are required prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds modest value by singling out title, line items, and the optional message, but it does not explain relationships, valid formats, or the deposit parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Create a new quote in Jobber for a client.' This distinguishes it from sibling tools like jobber_create_job and jobber_list_quotes by naming the exact resource being created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when creating a quote for a client, and the 'for a client' phrasing suggests a client must exist. However, it does not explicitly discuss when to prefer this over alternatives like creating a job or invoice, nor does it state any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_get_scheduleA
Get the schedule of upcoming visits/appointments from Jobber. Defaults to today. Use period "today", "tomorrow", "this_week", or "next_week", or provide explicit startAt/endAt dates.
| Name | Required | Description | Default |
|---|---|---|---|
| endAt | No | Custom end date/time in ISO 8601 format | |
| period | No | Convenience period selector (default: "today") | |
| startAt | No | Custom start date/time in ISO 8601 format (overrides period) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral detail beyond the schema: the default range is today, period strings are convenience selectors, and explicit dates are an alternative. However, with no annotations, it leaves gaps such as timezone handling, whether startAt/endAt must be supplied together, pagination, and return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the primary action front-loaded. It covers the default, the named period options, and the explicit-date alternative without filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with 3 optional parameters and no output schema, the description provides the core invocation knowledge: what the tool returns conceptually, the default behavior, and the two filtering modes. It leaves a few edge-case clarifications unstated, but nothing that would prevent correct basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters, so the baseline is 3. The description restates the period values and the default and positions startAt/endAt as a custom range, but adds little beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific operation ('Get the schedule'), the resource ('upcoming visits/appointments'), and the source system ('from Jobber'). The note about defaulting to today and the period options further define scope, and no sibling tool covers schedule retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete selection guidance: use one of the named period values or supply explicit startAt/endAt dates, with today as the default. It does not explicitly name alternative sibling tools or exclusions, but the schedule resource is unique among the siblings, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_list_clientsA
List clients from Jobber. Returns name, email, phone, and billing address. Supports optional search by name or company.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor for fetching the next page | |
| limit | No | Number of clients to return (default: 25, max: 100) | |
| search | No | Optional search term to filter clients by name or company |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does disclose the returned fields and search filtering, which is useful. However, it omits pagination behavior, continuation semantics, and any caveats about result completeness or ordering. 'List' implies a read-only operation, but side-effect and safety traits are not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core action is front-loaded, followed by return-field details and search behavior. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list tool with fully documented optional parameters, the description provides the key return fields and search behavior. It lacks an explicit mention of pagination continuation, but the 'after' parameter schema already covers that. No output schema exists, so the stated return fields help fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description repeats the search-by-name-or-company semantics already present in the schema and adds no meaning for the 'limit' or 'after' parameters. It provides no extra value beyond the structured parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List clients from Jobber.' It also states the returned fields (name, email, phone, billing address) and the optional search capability. This clearly distinguishes it from sibling tools focused on jobs, invoices, quotes, or schedule operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent should call this when it needs client records. However, the description gives no explicit guidance about when to prefer this tool over siblings, nor does it mention any exclusions or alternative tools. The resource name makes the use case fairly obvious, but routing guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_list_invoicesA
List invoices from Jobber with amount, payment status, and client info. Can filter by status (draft, sent, viewed, paid, bad_debt, voided).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor for fetching the next page | |
| limit | No | Number of invoices to return (default: 25, max: 100) | |
| status | No | Filter invoices by status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility for behavior. It discloses the output fields and that filtering is possible, but it does not mention pagination behavior, the meaning of the `after` cursor, or any rate limits, leaving an agent to infer how the returned list is delivered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loading the core 'list invoices' purpose and important output fields before the optional filter detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple optional-filter list tool, the description provides the essential purpose and visible output fields, while the schema covers parameter details. The absence of an output schema and any mention of pagination in the description leaves a small gap, but the tool is still callable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: all three parameters are already fully described in the schema. The description only restates the status filter and its enum values, adding no new semantic detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource ('List invoices from Jobber') and enumerates the returned fields (amount, payment status, client info), making its purpose unmistakable and clearly distinct from sibling list tools like jobber_list_clients or jobber_list_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this is the tool for retrieving invoice data and optionally narrowing by status, and the sibling list makes resource separation obvious. However, it does not explicitly state when to choose this over alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_list_jobsA
List jobs/work orders from Jobber with status, client, schedule, and totals. Can filter by status (draft, active, completed, invoiced, archived, cancelled).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor for fetching the next page | |
| limit | No | Number of jobs to return (default: 25, max: 100) | |
| status | No | Filter jobs by status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. It correctly implies a read-only retrieval operation and mentions the returned data fields, but it does not describe pagination behavior, default status handling, or output structure beyond the listed fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core action and resource, then adds the filter capability with the exact allowed values. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with three optional parameters and no output schema, the description is adequately complete: it identifies the resource, returned fields, and filter options. Minor gaps like default pagination and implicit behavior when no status is supplied are secondary and largely covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the schema, so schema coverage is 100%. The description adds little beyond restating that status filtering is possible, but it does not need to compensate for any missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('jobs/work orders from Jobber'), and the included fields (status, client, schedule, totals), making it easy to distinguish from sibling tools that operate on clients, invoices, quotes, or that create/update jobs. The status filter list further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool to list Jobber jobs/work orders, optionally filtered by status. It does not explicitly name alternatives or state when not to use it, but the resource specificity makes the primary use case obvious among the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_list_quotesA
List quotes from Jobber with totals, status, and client info. Can filter by status (draft, sent, viewed, approved, archived, converted_to_job, changes_requested).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor for fetching the next page | |
| limit | No | Number of quotes to return (default: 25, max: 100) | |
| status | No | Filter quotes by status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'List' implies a read-only operation and the mention of returned fields adds context, but it does not explicitly state that no data is modified, nor does it describe pagination behavior, ordering, or scoping beyond the schema parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero wasted words. It front-loads the core purpose and return value, then adds filter detail, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with 100% schema coverage, the description is nearly complete: it names the output fields and filter options. However, it omits an explicit read-only confirmation and any detail about default pagination or ordering, which an agent might need given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (after, limit, status) already documented. The description only reiterates the status filter and its allowed values, adding no new meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with the resource 'quotes from Jobber' and specifies returned details ('totals, status, and client info'). It clearly differentiates from sibling list tools like jobber_list_jobs and jobber_list_invoices by naming the exact resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving/filtering quotes but does not explicitly state when to use this tool over alternatives or exclude other cases. No alternative tools or when-not-to-use conditions are mentioned, so the agent must infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobber_update_job_statusA
Update the status of a Jobber job. Move jobs through the workflow: draft → active → completed → invoiced → archived.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Jobber job ID (get from jobber_list_jobs) | |
| status | Yes | New status for the job |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it only conveys that 'update' mutates state. It does not disclose whether status changes are reversible, whether transitions can skip stages or move backward, whether validation enforces the workflow order, or what the response looks like. The inclusion of 'cancelled' in the enum but not in the described workflow is unexplained, leaving a genuine ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences totaling ~22 words. The core action is front-loaded ('Update the status of a Jobber job'), followed by a compact workflow arrow. No filler, no repetition of schema field descriptions — every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with 100% schema coverage this is mostly adequate, but the description leaves a meaningful gap: it does not clarify whether the workflow permits skipped or backward transitions, and it fails to address the 'cancelled' enum value that sits outside the documented progression. An agent told to move a job to 'cancelled' would find no support in the description. No output schema exists to help fill the return-value gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds real value on top: the workflow chain gives ordering semantics to the status enum that the schema's flat enum list does not convey, telling the agent which statuses are meant to be used in sequence. The omission of 'cancelled' from the chain is a minor gap, but the added ordering meaning justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Update the status of a Jobber job.' This clearly distinguishes it from all siblings, which are list/create tools for other entities (clients, jobs, invoices, quotes) — none of which mutate job status. The workflow chain 'draft → active → completed → invoiced → archived' adds further specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The workflow sequence 'draft → active → completed → invoiced → archived' provides clear context that this tool is for advancing jobs through lifecycle stages. No explicit exclusions or alternative tools are named, but no sibling offers status updates, so the usage context is unambiguous enough. It stops short of stating transition rules (e.g., whether skipping stages is allowed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.0.0- First observed
jobber_create_client - First observed
jobber_create_invoice - First observed
jobber_create_job - First observed
jobber_create_quote - First observed
jobber_get_schedule - First observed
jobber_list_clients - First observed
jobber_list_invoices - First observed
jobber_list_jobs - First observed
jobber_list_quotes - First observed
jobber_update_job_status
TDQS
Scored across 10 tools
Each tool targets a distinct resource-action pair: clients, jobs, invoices, quotes, and schedule each have clear list/create or update/get operations. No two tools appear to perform the same function.
All tools follow a consistent jobber_<verb>_<noun> pattern, such as list_clients, create_job, update_job_status, and get_schedule. The naming is uniform and predictable.
Ten tools is well-scoped for a Jobber connector, covering the main CRM and work-order entities without unnecessary bloat. Each tool earns its place in the set.
The set covers list/create for clients, jobs, invoices, and quotes, plus job status updates and schedule retrieval. However, there are no update or delete operations for clients, invoices, or quotes, and quote/invoice statuses cannot be advanced, leaving notable lifecycle gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Your professional network in Claude — search contacts, log notes, and send warm intros.
AI-native scheduler that lives in Claude. Describe meetings in plain English; Heldly does the rest.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to access and manage Jobber field-service data including clients, jobs, invoices, and quotes through natural language interactions.633MIT
- FlicenseCqualityDmaintenanceConnects Claude to ServiceTitan via API, providing 60 tools across CRM, Jobs, Accounting, and more for business management.601-
- AlicenseNot gradedqualityDmaintenanceConnects Claude Code with GoHighLevel CRM to manage contacts, pipelines, calendars, conversations, workflows, funnels, and forms via natural language.MIT
- FlicenseBqualityBmaintenanceConnects Claude to your JobNimbus account via API, enabling management of contacts, jobs, notes, and other CRM entities through natural language.19-