FieldDraft
Server Details
Draft contractor quotes priced only from your own price book; find, edit and push them to Jobber.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Most tools have distinct roles (draft_quote, get_quote, update_quote_lines, push_quote_to_jobber, search_price_book, sync_price_book), but list_quotes and open_quotes both return the contractor's most recent quotes with overlapping fields and default limits of 10. An agent must read carefully to know which listing call to make, and there is no clear rule distinguishing them.
All names are snake_case with a verb-first pattern (draft_quote, get_quote, list_quotes, push_quote_to_jobber, search_price_book, sync_price_book, update_quote_lines). Minor deviations: open_quotes uses a vague verb that overlaps semantically with list, and draft_quote reads more like a noun phrase than an action.
Eight tools is well within a comfortable range, and each maps to a concrete step in the quote lifecycle: draft, read, list, edit lines, push to Jobber, and look up or refresh prices. The only redundancy is the extra listing tool, which does not push the count out of scope.
The surface covers the core draft-to-Jobber workflow (create, read, list, edit lines, push, price lookup and sync) with clear side-effect and retry semantics. Gaps exist around lifecycle hygiene: no delete/archive/duplicate for drafts, no status change or option management, and no direct way to send a quote to a customer outside Jobber.
Available Tools
8 toolsdraft_quoteDraft a quoteAInspect
Use this when a contractor describes a job (what they saw on site, what needs doing, quantities) and wants an itemized quote. Builds the draft only from the contractor's own price book; lines with no match are flagged and left unpriced, never guessed. Side effects: saves a new draft quote in the contractor's FieldDraft account each time it is called (calling again creates another draft) and counts toward the account's monthly draft allowance. The description and any photo links are sent to FieldDraft's AI provider to produce the draft. Nothing is sent to the customer or to Jobber. Do not use for general pricing questions or for jobs the user has not described.
| Name | Required | Description | Default |
|---|---|---|---|
| photoUrls | No | Public image URLs of the job site, only if the user shared them; they are fetched for the AI model | |
| clientName | No | Customer name if mentioned | |
| jobDescription | Yes | The contractor's description of the job in their own words, including quantities and site conditions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, it discloses critical side effects: each call saves a new draft and counts toward the monthly allowance; description and photo links are sent to the AI provider; nothing is sent to the customer or Jobber; unmatched lines are flagged and never guessed. This is rich behavioral context that annotations alone do not provide.
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 definition is front-loaded with usage guidance, followed by essential side effects and data-sharing details. Every sentence earns its place with no 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 write tool with no output schema, it covers side effects, data handling, and exclusions thoroughly. It does not explicitly describe the return value or what the draft object looks like, which is a minor gap given the absence of an 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%, so all parameters are documented in the schema. The description adds context about price-book matching and flagging, but does not provide parameter-specific syntax or examples 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+resource: 'Draft a quote' and 'builds the draft only from the contractor's own price book.' It clearly scopes the tool to jobs the contractor describes, distinguishing it from general pricing tools.
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?
It explicitly says when to use ('Use this when a contractor describes a job ... wants an itemized quote') and when not to use ('Do not use for general pricing questions or for jobs the user has not described'). However, it does not name specific alternative sibling tools like search_price_book for pricing questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteGet a quoteARead-onlyIdempotentInspect
Fetch one of the contractor's FieldDraft quotes by its id (from draft_quote or list_quotes), with line items, options and totals. Read-only; changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| quoteId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Read-only; changes nothing' largely restates structured data. The genuinely additive part is the disclosure of what comes back (line items, options, totals), but error behavior and access constraints are not covered.
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?
One sentence, front-loaded with the verb and resource, followed by the id source and the returned content. No filler and nothing structurally out of order.
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?
With no output schema, the description carries the return-value burden and does so by enumerating line items, options and totals. Combined with annotations covering safety, an agent has everything needed to call this correctly.
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 coverage is 0% and the schema only shows a UUID format/pattern with no prose. The description compensates by explaining provenance of the id, which is the piece an agent most needs; the UUID requirement itself is left to the schema.
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 (fetch), resource (a FieldDraft quote), scope (one, by id) and payload (line items, options, totals). It clearly distinguishes itself from list_quotes and draft_quote by naming them as the id sources rather than alternatives.
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?
Tells the agent where the required quoteId comes from (draft_quote or list_quotes), which is exactly the precondition needed before calling. It doesn't explicitly say when not to use it, but for a single-record fetch the surrounding context makes the boundary clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_quotesList quotesARead-onlyIdempotentInspect
List the contractor's recent FieldDraft quotes, newest first, with title, status, total and id (default 10, up to 50). Read-only; changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context beyond that: newest-first ordering, default and maximum result counts, and the fields returned. It does not define the 'recent' time window or permission requirements, but it is substantially informative.
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 tight sentence that front-loads the action and resource. Every clause contributes scope, ordering, return fields, limits, or safety context without unnecessary preamble.
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 one-parameter list tool with no output schema, the description gives enough to call it correctly: ordering, result cap, returned fields, and read-only status. It could be slightly more complete by defining 'recent' or clarifying pagination beyond the 50-item cap.
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 0%, so the description must carry parameter meaning. It adds the default of 10 and reinforces the maximum of 50, but the schema already states minimum 1 and maximum 50, and the description does not explicitly name or fully explain the limit 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 states a specific verb and resource: 'List the contractor's recent FieldDraft quotes.' It also specifies ordering and returned fields, making the purpose clear. However, it does not explicitly distinguish itself from siblings like get_quote or open_quotes.
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 does not explain when to use this tool instead of alternatives such as get_quote, open_quotes, or draft_quote. 'Recent' indicates scope but not selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_quotesFieldDraft quotesARead-onlyIdempotentInspect
Show the contractor's 10 most recent FieldDraft quotes with title, client, status, total and a link to each. Read-only; changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'Read-only; changes nothing' largely restates structured data. What the description does add is the hard cap of 10 results (a truncation behavior the schema doesn't reveal) and the shape of each result, which is genuinely useful.
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 short sentences, front-loaded with the resource and scope, with no filler. Every clause ('10 most recent', the field list, read-only) carries information.
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?
With no parameters and no output schema, the description carries the burden of explaining return values and does so by enumerating title, client, status, total and link. Minor gaps remain: it doesn't say what orders 'most recent' (created vs. modified) or what happens when fewer than 10 quotes exist.
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 tool takes zero parameters, so there are no parameter semantics to explain and the baseline is 4. The description correctly spends no words on parameters and instead documents the output fields.
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 and resource ('Show the contractor's ... FieldDraft quotes') plus an explicit scope ('10 most recent') and the fields returned, so the agent knows exactly what comes back. It does not name or contrast with the sibling `list_quotes`, which is the obvious alternative and is left for the agent to infer.
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 only implied: the fixed '10 most recent' framing suggests a quick glance rather than a paginated enumeration, but there is no explicit when-to-use or when-not clause, and `list_quotes` is never mentioned as the alternative. The 'Read-only; changes nothing' line signals safety, not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_quote_to_jobberPush quote to JobberAIdempotentInspect
Create the quote in the contractor's connected Jobber account, as a draft they review and send from Jobber. Only call after the contractor explicitly confirms the draft. Requires a client name; ask for it (plus email and job site address if known) when missing. Side effects: creates a new quote in Jobber, and a new client and property there when no existing client matches; it never edits or deletes existing Jobber records. Safe to retry: a quote that was already pushed returns the existing Jobber quote. Fails if Jobber is not connected or any line has no price.
| Name | Required | Description | Default |
|---|---|---|---|
| quoteId | Yes | ||
| clientName | No | Customer name, if not already on the quote | |
| clientEmail | No | ||
| clientPhone | No | ||
| siteAddress | No | The customer's job site street address for the Jobber property, if not already on the quote |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing concrete side effects: a new client and property are created when no existing client matches, existing Jobber records are never edited or deleted, and retries return the already-pushed quote. It also names failure conditions (Jobber not connected, unpriced line), which the openWorldHint alone could not convey.
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?
Four short sentences, each doing distinct work: action, precondition, side effects, retry/failure behavior. The most critical constraint (wait for confirmation) is placed early, and there is no filler.
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 cross-system write with no output schema, it covers everything an agent needs: destination, draft status, confirmation gate, required inputs, created entities, non-destructive guarantee, idempotent retry semantics, and failure modes.
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?
With only 40% schema description coverage, the description carries real weight: it clarifies client name is required conditionally ('if not already on the quote') and that email and job site address are optional enrichments. It leaves clientPhone and quoteId unaddressed, so it does not fully compensate for the coverage gap.
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?
Specific verb, resource and destination: 'Create the quote in the contractor's connected Jobber account, as a draft they review and send from Jobber.' This immediately distinguishes it from siblings like draft_quote (local) and get_quote/list_quotes (read-only) by naming the external system and the draft-stage handoff.
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?
Explicit precondition ('Only call after the contractor explicitly confirms the draft') and an explicit next step handled elsewhere ('draft they review and send from Jobber'), plus an instruction on gathering missing client data. This tells the agent both when to call and where its responsibility ends.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_price_bookSearch price bookARead-onlyIdempotentInspect
Find items in the contractor's own price book by name or description, to answer 'what do I charge for X' or to fix an unmatched line. Returns up to 25 items. Read-only; changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so 'Read-only; changes nothing' largely restates structured data. The added value is the result cap ('Returns up to 25 items'), which tells the agent to expect truncation, but no pagination or ranking behavior is described.
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 short sentences, purpose and use cases front-loaded, with the result cap and safety note appended. No filler.
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 two-parameter read tool with full annotations and no output schema, coverage is adequate on purpose and safety, but the limit parameter semantics and what a result record contains are left unaddressed.
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?
With 0% schema description coverage, the description must carry the burden. It explains that the query matches on name or description, which is genuinely useful, but never mentions the limit parameter; the 'up to 25' line hints at the cap without clarifying how limit controls it.
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 and resource ('Find items in the contractor's own price book by name or description'), scoped to the contractor's own book rather than a global catalog. This clearly distinguishes it from sibling operations like sync_price_book or update_quote_lines.
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?
Gives concrete use cases: answering 'what do I charge for X' and fixing an unmatched line. It conveys context well but names no explicit alternative or when-not-to-use condition, leaving routing to siblings implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_price_bookSync price book from JobberADestructiveIdempotentInspect
Re-import the contractor's products & services from their connected Jobber account so drafts use current prices. Use when the contractor says they changed prices in Jobber or the price book looks out of date. Side effects: overwrites FieldDraft's stored names, prices and details with Jobber's and deactivates items deleted in Jobber; nothing is changed in Jobber. Fails if Jobber is not connected.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: exactly what gets overwritten (names, prices, details), that items deleted in Jobber get deactivated, that nothing changes on the Jobber side, and the failure condition when Jobber isn't connected. This is precisely the destructive-behavior detail an agent needs.
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?
Four tight sentences: purpose, trigger, side effects, failure mode. Each sentence carries distinct, decision-relevant information with no repetition.
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 parameterless, destructive, open-world sync with no output schema, the description covers purpose, trigger, mutation scope, and failure mode. Nothing an agent needs to decide whether and how to call it is missing.
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 tool takes zero parameters, so the baseline is 4. There is no parameter semantics to add, and the description correctly focuses on effects instead.
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 and resource ('Re-import the contractor's products & services from their connected Jobber account') and the downstream purpose ('so drafts use current prices'). Clearly distinguishable from siblings like search_price_book, which only reads.
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?
Gives concrete triggers: the contractor says prices changed in Jobber, or the price book looks stale. It doesn't explicitly name alternatives (e.g., search_price_book for inspection only) or state when not to use it, 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.
update_quote_linesUpdate quote line itemsADestructiveIdempotentInspect
Replace ALL line items on a draft quote with the supplied list, after the contractor asks for changes (quantities, prices, adding or removing lines). Overwrites the existing lines, so pass every line that should remain, not just the changed one; discount lines are kept automatically. Prices must come from the contractor or their price book; confirm before changing a price. Only changes the quote in FieldDraft, not in Jobber.
| Name | Required | Description | Default |
|---|---|---|---|
| quoteId | Yes | ||
| lineItems | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/idempotentHint annotations by spelling out the overwrite contract: you must pass every line that should remain, not just the changed one, and discount lines are preserved automatically. This is exactly the behavioral detail an agent needs to avoid data loss that annotations alone cannot convey.
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?
Three tight sentences, front-loaded with the core destructive semantics, followed by the price-sourcing constraint and the scope boundary. No filler.
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 destructive, no-output-schema mutation with only two parameters, it covers the essential contract: full overwrite, discount preservation, price provenance, and draft-only scope. Only the return shape and draft-status preconditions are left implicit.
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 coverage is 0%, so the description has to carry the load. It explains the semantics of lineItems as a full replacement list and ties prices to the contractor or price book (unitPriceCents/priceBookItemId), but never mentions quoteId or the per-item fields (name, quantity, unit, taxable) that the schema documents only structurally.
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 and resource ("Replace ALL line items on a draft quote with the supplied list") and makes the destructive full-replace scope unmistakable. It also draws the boundary against push_quote_to_jobber by noting it only changes the quote in FieldDraft.
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?
Gives the trigger condition ("after the contractor asks for changes") and an explicit constraint on price sourcing with a confirm-before-changing rule. It doesn't name sibling tools like get_quote or push_quote_to_jobber directly, so the agent must infer the read-before-write sequence.
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.
8 tool updates
- First observed
draft_quote - First observed
get_quote - First observed
list_quotes - First observed
open_quotes - First observed
push_quote_to_jobber - First observed
search_price_book - First observed
sync_price_book - First observed
update_quote_lines
Related MCP Connectors
Quotes, jobs and invoices for HVAC, plumbing and electrical shops. Drafts good-better-best quotes.
1Generate branded contractor quotes: hosted approval page, PDF, QR code, and Stripe payment link.
Search customers, manage quotes, work orders, action items, and calendar events for your business
Branded job estimates and client approvals for independent contractors.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to access and manage Jobber field-service data including clients, jobs, invoices, and quotes through natural language interactions.618 npmMIT
- AlicenseAqualityDmaintenanceCustomer-hosted, read-only MCP server for Jobber operations workflows. It helps owners query Jobber for action lists, overdue invoices, stale requests, estimate/job follow-up, and safe read-only GraphQL validation.625 npm1MIT
- FlicenseNot gradedqualityCmaintenanceEnables searching and retrieving 126 Canadian contractor forms with verified regulatory citations, determining needed forms from plain-language situations, and estimating 2026 provincial trades taxes, required hourly rates, and HST quick method comparisons.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants like Claude, ChatGPT, and Copilot to query live Jobber data—clients, jobs, quotes, invoices, revenue, and schedule—using natural language, with read-only access and careful API budget management.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.