{"openapi":"3.1.0","info":{"title":"Contractorquote API","version":"0.1.0","description":"A fully local contractor-estimate/quote-structure toolkit: a labor/materials/overhead/profit breakdown calculator with markup-vs-margin math, a markup/margin converter, a change-order-process explainer, payment-schedule templates, a red-flags-of-a-bad-quote checklist, and a glossary. General trades reference, not legal advice.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://contractorquote.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/contractorquote/docs"},"termsOfService":"https://connectorbay.com/contractorquote/terms"},"servers":[{"url":"https://contractorquote.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/contractorquote/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/estimate_breakdown_calculator":{"post":{"operationId":"estimate_breakdown_calculator","summary":"Builds a labor/materials/overhead/profit breakdown and computes the total price by markup or margin,","description":"Builds a labor/materials/overhead/profit breakdown and computes the total price by markup or margin,\n    reporting the equivalent value in the other convention. Use for \"break down this estimate: $3,000\n    labor, $2,000 materials, 10% overhead, targeting a 20% margin\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"labor_cost":{"description":"Total labor cost.","minimum":0,"title":"Labor Cost","type":"number"},"materials_cost":{"description":"Total materials cost.","minimum":0,"title":"Materials Cost","type":"number"},"overhead_percent":{"description":"Overhead as a percent of labor+materials subtotal.","minimum":0,"title":"Overhead Percent","type":"number"},"target_percent":{"description":"The desired markup or margin percent (see target_type).","minimum":0,"title":"Target Percent","type":"number"},"target_type":{"default":"margin","description":"'margin' (profit as % of selling price) or 'markup' (profit as % of cost).","title":"Target Type","type":"string"}},"required":["labor_cost","materials_cost","overhead_percent","target_percent"],"title":"estimate_breakdown_calculatorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/markup_margin_converter":{"post":{"operationId":"markup_margin_converter","summary":"Converts a markup percentage to its equivalent margin, or vice versa, using margin=markup/(1+markup)","description":"Converts a markup percentage to its equivalent margin, or vice versa, using margin=markup/(1+markup)\n    and markup=margin/(1-markup). Use for \"what's a 25% markup in margin terms\", \"what markup gives me a\n    20% margin\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"rate_percent":{"description":"The markup or margin percent to convert.","minimum":0,"title":"Rate Percent","type":"number"},"from_type":{"description":"'markup' or 'margin' — what rate_percent currently represents.","title":"From Type","type":"string"}},"required":["rate_percent","from_type"],"title":"markup_margin_converterArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/change_order_process_explainer":{"post":{"operationId":"change_order_process_explainer","summary":"The general steps for handling a contractor change order: identify the trigger, document it in","description":"The general steps for handling a contractor change order: identify the trigger, document it in\n    writing, price the cost/schedule impact, get written approval BEFORE proceeding, update the running\n    contract total. Use for \"how does a contractor change order work\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"change_order_process_explainerArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/payment_schedule_template":{"post":{"operationId":"payment_schedule_template","summary":"A general contracting payment-schedule pattern by project size, with dollar amounts if you supply a","description":"A general contracting payment-schedule pattern by project size, with dollar amounts if you supply a\n    total price. Use for \"what's a normal payment schedule for a $20,000 remodel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"schedule_type":{"default":"standard_project","description":"small_project | standard_project | large_remodel","title":"Schedule Type","type":"string"},"total_price":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Optional total contract price to compute dollar amounts per milestone.","title":"Total Price"}},"title":"payment_schedule_templateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/red_flags_checklist":{"post":{"operationId":"red_flags_checklist","summary":"A consumer-facing checklist of red flags in a contractor quote or bidding process. Use for \"how do I","description":"A consumer-facing checklist of red flags in a contractor quote or bidding process. Use for \"how do I\n    spot a bad contractor quote\", \"what should worry me about this bid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"red_flags_checklistArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/estimate_glossary":{"post":{"operationId":"estimate_glossary","summary":"Definitions of common contractor-estimate/quote terms: change order, punch list, retainage, scope of","description":"Definitions of common contractor-estimate/quote terms: change order, punch list, retainage, scope of\n    work, markup, margin, lien waiver, mechanic's lien, substantial completion, allowance. Use for \"what\n    does retainage mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A term to define, or omit for the full glossary.","title":"Term"}},"title":"estimate_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}