FieldDraft MCP
FieldDraft is a quoting application for trades and home-service contractors that drafts itemized quotes priced from the user's own price book. The MCP server allows agents to draft quotes from voice notes, text, or photos, manage pricing options, and push finalized quotes to integrations like Jobber and QuickBooks Online.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://fielddraftapp.com/mcpWhat you can do with it
- Draft itemized quotes from voice notes or photos
- Push quotes to Jobber or QuickBooks Online
- Manage contractor-specific price books
- Generate customer-facing quote links
Source and maintenance
Protocol and capabilities
- Server
- fielddraft 0.1.1
- MCP protocol
- 2025-06-18
- Tools
- 8 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
8 advertised
draft_quote — Draft a quote
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jobDescription"
],
"properties": {
"photoUrls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"maxItems": 6,
"description": "Public image URLs of the job site, only if the user shared them; they are fetched for the AI model"
},
"clientName": {
"type": "string",
"description": "Customer name if mentioned"
},
"jobDescription": {
"type": "string",
"minLength": 10,
"description": "The contractor's description of the job in their own words, including quantities and site conditions"
}
}
}{
"title": "Draft a quote",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}open_quotes — FieldDraft quotes
Show the contractor's 10 most recent FieldDraft quotes with title, client, status, total and a link to each. Read-only; changes nothing.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "FieldDraft quotes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_quote — Get a quote
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quoteId"
],
"properties": {
"quoteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}{
"title": "Get a quote",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_quotes — List quotes
List the contractor's recent FieldDraft quotes, newest first, with title, status, total and id (default 10, up to 50). Read-only; changes nothing.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
}
}
}{
"title": "List quotes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}update_quote_lines — Update quote line items
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quoteId",
"lineItems"
],
"properties": {
"quoteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"lineItems": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"quantity",
"unitPriceCents"
],
"properties": {
"name": {
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
},
"taxable": {
"type": "boolean",
"default": true
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0
},
"description": {
"type": [
"string",
"null"
]
},
"unitPriceCents": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"priceBookItemId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
}
}
},
"minItems": 1
}
}
}{
"title": "Update quote line items",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}push_quote_to_jobber — Push quote to Jobber
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quoteId"
],
"properties": {
"quoteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"clientName": {
"type": "string",
"minLength": 1,
"description": "Customer name, if not already on the quote"
},
"clientEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"clientPhone": {
"type": "string"
},
"siteAddress": {
"type": "string",
"description": "The customer's job site street address for the Jobber property, if not already on the quote"
}
}
}{
"title": "Push quote to Jobber",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}sync_price_book — Sync price book from Jobber
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "Sync price book from Jobber",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}search_price_book — Search price book
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string",
"minLength": 1
}
}
}{
"title": "Search price book",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 515 ms
- 95th percentile latency
- 515 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 515 ms · metadata changed · 8 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http fielddraft-mcp https://fielddraftapp.com/mcpCodex
codex mcp add fielddraft-mcp --url https://fielddraftapp.com/mcpCursor
{
"mcpServers": {
"fielddraft-mcp": {
"url": "https://fielddraftapp.com/mcp"
}
}
}Cline
{
"mcpServers": {
"fielddraft-mcp": {
"type": "streamableHttp",
"url": "https://fielddraftapp.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"fielddraft-mcp": {
"type": "http",
"url": "https://fielddraftapp.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http fielddraft-mcp https://fielddraftapp.com/mcpClaude Desktop
{
"mcpServers": {
"fielddraft-mcp": {
"url": "https://fielddraftapp.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"fielddraft-mcp": {
"serverUrl": "https://fielddraftapp.com/mcp"
}
}
}Let your agent find its tools
Find servers like FieldDraft MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run FieldDraft MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.