Quote Templates
BlueSuite MCP tools for quote templates
See connection and authentication and workflow rules before calling these tools.
Related REST API and behavior.
List quote templates. Templates are reusable starting points for creating new quotes with pre-filled line items, pricing, and messages.
| Field | Type / accepted values | Required | Details |
|---|
page | integer | No | Page number (default: 1) |
per_page | integer | No | Results per page (default: 25) minimum: 1. maximum: 100. |
search | string | No | Search by template name |
sort_by | "id", "template_name", "total", "created_at", "modified_at" | No | Field to sort by. Unknown values fall back to the default sort. |
sort_direction | "asc", "desc" | No | Sort direction |
| Field | Type / accepted values | Required | Details |
|---|
data | array of object | Yes | The matching records for this page. |
pagination | object | No | How many more pages of results exist. Absent when the API returned an unpaged result. |
pagination.page | integer | When parent supplied | Current page number, 1-based. |
pagination.per_page | integer | When parent supplied | Number of results per page. |
pagination.total_pages | integer | When parent supplied | Total number of pages available. |
Create a new quote template. Templates store line items, pricing, discounts, deposits, tax rates, and messages that can be reused when creating new quotes.
| Field | Type / accepted values | Required | Details |
|---|
template_name | string | Yes | Template name (internal label) |
name | string | No | Default quote name/title when using this template |
description | string | No | Template description |
message | string | No | Default message to client |
line_items | array of object or object | No | Array of line item objects. Two shapes are accepted: a regular priced row ({ name, quantity, unit_price }) or an inline image row ({ _type: "image", image_path, image_id, description }). For image rows: first call upload_file with module_type="workspace", category="line_item", is_public=true to upload the image, then pass the returned path as image_path and id as image_id. |
line_items[]._type | "lineItem" | No | For lineItem rows. Defaults to lineItem when omitted. |
line_items[].name | string | For this variant | For lineItem rows. Item name |
line_items[].description | string | No | For lineItem rows. Plain text description for this line item. Omit when not needed. Default: "". |
line_items[].quantity | number | No | For lineItem rows. Quantity Default: 1. |
line_items[].unit_price | number | For this variant | For lineItem rows. Price per unit |
line_items[].taxable | boolean | No | For lineItem rows. Whether the item is taxable |
line_items[].optional | boolean | No | For lineItem rows. Whether the item is optional |
line_items[]._type | "image" | For this variant | For image rows. |
line_items[].image_path | string | For this variant | For image rows. Storage path returned by a prior upload_file call. Upload with module_type="workspace", category="line_item", is_public=true to get a usable path. minLength: 1. |
line_items[].image_id | integer | No | For image rows. Upload link ID (id) returned by the same upload_file call. |
line_items[].description | string | No | For image rows. Caption shown beneath the image in the line items list. |
discount | number | No | Discount amount (default: 0) |
discount_unit | "percent", "amount" | No | How the discount is expressed. One of: 'percent' (a percentage of the subtotal) or 'amount' (a fixed currency amount). Default: 'percent'. |
deposit | number | No | Deposit amount (default: 0) |
deposit_unit | JSON value | No | How the deposit is expressed. One of: 'percent' or 'amount'. Default: 'percent'. |
tax_rate | number | No | Tax rate percentage (default: 0) |
tax_rate_id | integer | No | Tax rate preset ID |
total | number | No | Template total |
| Field | Type / accepted values | Required | Details |
|---|
data | object or null | Yes | The affected record, or the result of the operation. Null when nothing matched. |
Get a single quote template by ID with expanded details (tax rate, line items, creator)
| Field | Type / accepted values | Required | Details |
|---|
id | integer | Yes | Quote template ID |
| Field | Type / accepted values | Required | Details |
|---|
data | object or null | Yes | The affected record, or the result of the operation. Null when nothing matched. |
Update an existing quote template. Modifying a quote template will not affect existing quotes that use it.
| Field | Type / accepted values | Required | Details |
|---|
id | integer | Yes | Quote template ID |
template_name | string | No | Template name (internal label) |
name | string | No | Default quote name/title |
description | string | No | Template description |
message | string | No | Default message to client |
line_items | array of object or object | No | Array of line item objects. Two shapes are accepted: a regular priced row ({ name, quantity, unit_price }) or an inline image row ({ _type: "image", image_path, image_id, description }). For image rows: first call upload_file with module_type="workspace", category="line_item", is_public=true to upload the image, then pass the returned path as image_path and id as image_id. |
line_items[]._type | "lineItem" | No | For lineItem rows. Defaults to lineItem when omitted. |
line_items[].name | string | For this variant | For lineItem rows. Item name |
line_items[].description | string | No | For lineItem rows. Plain text description for this line item. Omit when not needed. Default: "". |
line_items[].quantity | number | No | For lineItem rows. Quantity Default: 1. |
line_items[].unit_price | number | For this variant | For lineItem rows. Price per unit |
line_items[].taxable | boolean | No | For lineItem rows. Whether the item is taxable |
line_items[].optional | boolean | No | For lineItem rows. Whether the item is optional |
line_items[]._type | "image" | For this variant | For image rows. |
line_items[].image_path | string | For this variant | For image rows. Storage path returned by a prior upload_file call. Upload with module_type="workspace", category="line_item", is_public=true to get a usable path. minLength: 1. |
line_items[].image_id | integer | No | For image rows. Upload link ID (id) returned by the same upload_file call. |
line_items[].description | string | No | For image rows. Caption shown beneath the image in the line items list. |
discount | number | No | Discount amount |
discount_unit | "percent", "amount" | No | How the discount is expressed. One of: 'percent' (a percentage of the subtotal) or 'amount' (a fixed currency amount). |
deposit | number | No | Deposit amount |
deposit_unit | JSON value | No | How the deposit is expressed. One of: 'percent' or 'amount'. |
tax_rate | number | No | Tax rate percentage |
tax_rate_id | JSON value | No | Tax rate preset ID |
total | number | No | Template total |
| Field | Type / accepted values | Required | Details |
|---|
data | object or null | Yes | The affected record, or the result of the operation. Null when nothing matched. |
Create a new draft quote from an existing quote template. The new quote inherits the template's line items, pricing, discounts, deposits, tax rate, message, and payment instructions. Requires the quotes:write scope.
| Field | Type / accepted values | Required | Details |
|---|
template_id | integer | Yes | Quote template ID to create the quote from |
contact_id | JSON value | No | Client to attach the new quote to. A template carries pricing but no client, so without this the quote arrives unaddressed. |
property_id | JSON value | No | Property the work is for. |
name | string | No | Override the quote name copied from the template. |
salesperson_id | string | No | UUID of the salesperson. Use list_users to resolve names. Format: uuid. |
expire_on | string or string | No | Expiry date (YYYY-MM-DD). |
| Field | Type / accepted values | Required | Details |
|---|
data | object or null | Yes | The affected record, or the result of the operation. Null when nothing matched. |
Delete a quote template by ID. Deleting a quote template will not affect existing quotes that use it.
| Field | Type / accepted values | Required | Details |
|---|
id | integer | Yes | Quote template ID |
| Field | Type / accepted values | Required | Details |
|---|
data | object or null | Yes | The affected record, or the result of the operation. Null when nothing matched. |
The downloadable tool schemas include the full input and output contracts. Tables describe schema-level required fields; cross-field rules still apply.