Give your AI agent a trade.
The Estimatic MCP server turns your agent into a senior estimator. One config block — Claude, Cursor, ChatGPT, or your in-house bot can scope, price, refine, and push real contractor estimates as tool calls.
Endpoint
Server URL & transport
Streamable HTTP transport per the MCP spec. Authenticate with the same Bearer key as the REST API. Multi-org partners pass X-Estimatic-Org.
https://api.estimatic.ai/mcpAccept: application/json, text/event-stream. Without it the server returns 406. SDKs handle this automatically.Same engine
REST or MCP — your call
Every MCP tool maps 1:1 to a REST endpoint at https://api.estimatic.ai/v1. Same auth, same data, same webhooks. Use REST when you control the code path. Use MCP when an LLM does.
Tool catalog
16 tools your agent can call right now.
Each tool's input schema mirrors the REST endpoint of the same name. Full schemas in the API reference.
create_estimateGenerate a fully-priced estimate from a natural-language scope.
inputs: prompt, trade?, project_zip?, file_ids?, options?
list_estimatesList the org's estimates, newest first, with optional filters.
inputs: status?, client_id?, limit?, cursor?
get_estimateRetrieve a single estimate with all groups, items, and tiers.
inputs: estimate_id
refine_estimateApply a natural-language change and re-price.
inputs: estimate_id, message
patch_estimateProgrammatic edits — update qty, add/remove lines, rename groups.
inputs: estimate_id, ops[]
send_estimateEmail or SMS the customer a signable share link.
inputs: estimate_id, channel, to?, message?
duplicate_estimateClone an existing estimate as a fresh draft.
inputs: estimate_id, title?, client_id?
push_estimateSend a finished estimate to a connected CRM or accounting tool.
inputs: estimate_id, integration, target?
archive_estimateSoft-delete an estimate (restorable for 30 days).
inputs: estimate_id
create_contactCapture a new lead with source/UTM and scope notes.
inputs: name, email?, phone?, source?, scope_summary?
convert_contactPromote a contact to a client and optionally generate an estimate.
inputs: contact_id, create_estimate?
create_clientCreate a customer record.
inputs: name, email?, phone?, address?
list_clientsSearch and list clients.
inputs: q?, limit?, cursor?
list_integrationsList connected CRM/accounting tools available for push.
inputs: —
list_pricing_profilesList pricing profiles (markups, supplier prefs, rounding).
inputs: —
upload_fileUpload a plan, photo, LiDAR scan, or report. Returns a file_id.
inputs: file (binary), kind
Setup
Connect in under a minute.
{
"mcpServers": {
"estimatic": {
"url": "https://api.estimatic.ai/mcp",
"headers": {
"Authorization": "Bearer sk_live_..."
}
}
}
}Try these prompts
Paste into your agent. Watch it work.
Scope a bath remodel
"Use estimatic.create_estimate to draft a master bath gut remodel for ZIP 30303 — 60 sqft, replace tub with curbless tile shower, double vanity, heated floors. Include good/better/best."
Refine, then push
"Use estimatic.refine_estimate on est_01JXYZ to add a city of Atlanta permit line. Then estimatic.push_estimate into ServiceTitan."
Triage a fresh lead
"Use estimatic.create_contact for Marcus Webb (marcus@example.com, source=google_lsa) interested in a kitchen remodel. Then estimatic.convert_contact and generate the estimate."
Troubleshooting
The three things that trip people up.
HTTP 406 from the server
Your client isn't sending Accept: application/json, text/event-stream. The Streamable HTTP spec requires it. Claude Desktop, Cursor, and the official SDKs handle it; raw fetch() calls usually don't.
Tools don't appear in the agent
Make sure the Authorization header is being forwarded. Some clients strip custom headers from MCP servers. Test with our /tools/list raw HTTP example above — if that works, the server is healthy and the issue is in your MCP client config.
Wrong organization in responses
Your key is scoped to a single org by default. If you hold a partner key spanning multiple orgs, set X-Estimatic-Org: org_01HX... on the MCP transport headers — without it, the request is rejected with permission_denied.
Ship an estimating agent this afternoon.
Free to start. Production keys when you're ready.