Create estimate
Create a draft estimate for a customer with a first option and its line items.
MCP tool housecall_pro_write → create_estimate
write Confirm
Saves a draft estimate for a customer and address with a first option and its lines; use add_estimate_option for further tiers. The estimate is not sent. If you schedule it, the customer is notified as their profile settings say unless notify_customer is false. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
| address_id string | string | Service address from list_customers. Default: the first address. |
| option_name string | string | Name of the first option, for example 'Good'. |
| line_items object[] required | object[] | Lines to add: name, quantity and unit_price, or price_book_id from list_price_book. A line that names a price book item uses its price unless you set unit_price. |
| customer_can_approve enum | enum | one or several options. Default: one. |
| scheduled_start datetime | datetime | Schedule the estimate visit. |
| notify_customer boolean | boolean | Default: the customer profile's notification settings. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "housecall_pro_write",
"arguments": {
"operation": "create_estimate",
"arguments": {
"customer_id": "customer_8c41d2",
"line_items": [
"line items"
]
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"estimate_id": "est_8e41c2",
"status": "draft",
"options": [
{
"option_id": "opt_1",
"name": "40-gallon tank",
"total": 2400
}
],
"customer_can_approve": "one"
},
"isError": false
}