Kaseya Quote Manager MCP Tools & API Patterns
Overview
The Kaseya Quote Manager MCP server exposes quoting, sales-order,
procurement, catalog, CRM, and org data from Kaseya Quote Manager
(formerly Datto Commerce). The entire tool surface is READ-ONLY —
every tool is a _list or _get; there are no write tools.
Tool names follow kqm_<entity>_list and kqm_<entity>_get across
five domains:
- sales:
quote, quote_section, quote_line, sales_order, sales_order_line, sales_order_payment
- procurement:
purchase_order, purchase_order_line, purchase_order_cost, supplier, product_supplier
- catalog:
product, product_image (list only), category, brand
- crm:
customer, customer_address, contact
- org:
employee, warehouse
Anti-triggers
- Any other Kaseya product — BMS, VSA, and Datto RMM share the vendor name
but not this API, this key, or these tools.
- Entity fields and the quote/sales-order hierarchy — use
kaseya-quote-manager-quotes or kaseya-quote-manager-purchasing.
- Write scopes or permissions — there is no write surface to authenticate
for; every tool is a
_list or _get.
Connection & Authentication
Kaseya Quote Manager uses a single API key. Against the upstream API the
key is sent in the apiKey HTTP header:
| Header |
Value |
apiKey |
The raw Quote Manager API key |
Generate the key in Quote Manager under Settings → API.
When used through the WYRE MCP gateway, the gateway maps the environment
variable X_KQM_APIKEY onto an X-Kqm-Api-Key header, and the MCP server
translates that into the upstream apiKey header automatically. You do not
need to construct headers by hand — set the credential and the server
handles upstream auth translation.
export X_KQM_APIKEY="your-quote-manager-api-key"
Base URL
https://api.kaseyaquotemanager.com/v1/
Pagination
List endpoints use page-based pagination:
| Parameter |
Type |
Default |
Max |
Description |
| page |
number |
1 |
- |
1-based page number |
| pageSize |
number |
- |
100 |
Results per page |
| modifiedAfter |
datetime |
- |
- |
Only return records changed after this timestamp |
Use modifiedAfter for incremental syncs rather than re-walking the full
collection. Always check whether more pages exist (a full page of pageSize
results usually means there is another page) before claiming a result set is
complete.
Rate Limiting
- 60 requests per minute
- 20,000 requests per day
- Strategy: batch with the largest
pageSize (100) to minimize calls;
use modifiedAfter for incremental pulls.
- Backoff: on
429, wait and retry with exponential backoff.
Error Handling
| Status Code |
Meaning |
Resolution |
| 400 |
Bad Request |
Check query parameters |
| 401 |
Unauthorized |
Verify the API key is correct |
| 403 |
Forbidden |
Check API key permissions |
| 404 |
Not Found |
Resource doesn't exist |
| 429 |
Rate Limited |
Wait and retry with backoff |
| 500 |
Server Error |
Retry after a delay |
API Documentation
1---2name: kaseya-quote-manager-api-patterns3description: Kaseya Quote Manager (Datto Commerce) API fundamentals: API-key auth and the gateway's header translation, the read-only `kqm_<entity>_list`/`_get` tool surface across the sales, procurement, catalog, CRM, and org domains, page/pageSize/modifiedAfter pagination, rate limits, and error codes.4---56# Kaseya Quote Manager MCP Tools & API Patterns78## Overview910The Kaseya Quote Manager MCP server exposes quoting, sales-order,11procurement, catalog, CRM, and org data from Kaseya Quote Manager12(formerly Datto Commerce). The entire tool surface is **READ-ONLY** —13every tool is a `_list` or `_get`; there are no write tools.1415Tool names follow `kqm_<entity>_list` and `kqm_<entity>_get` across16five domains:1718- **sales**: `quote`, `quote_section`, `quote_line`, `sales_order`, `sales_order_line`, `sales_order_payment`19- **procurement**: `purchase_order`, `purchase_order_line`, `purchase_order_cost`, `supplier`, `product_supplier`20- **catalog**: `product`, `product_image` (list only), `category`, `brand`21- **crm**: `customer`, `customer_address`, `contact`22- **org**: `employee`, `warehouse`2324## Anti-triggers2526- **Any other Kaseya product** — BMS, VSA, and Datto RMM share the vendor name27 but not this API, this key, or these tools.28- **Entity fields and the quote/sales-order hierarchy** — use29 `kaseya-quote-manager-quotes` or `kaseya-quote-manager-purchasing`.30- **Write scopes or permissions** — there is no write surface to authenticate31 for; every tool is a `_list` or `_get`.3233## Connection & Authentication3435Kaseya Quote Manager uses a single API key. Against the upstream API the36key is sent in the `apiKey` HTTP header:3738| Header | Value |39|--------|-------|40| `apiKey` | The raw Quote Manager API key |4142Generate the key in Quote Manager under **Settings → API**.4344When used through the WYRE MCP gateway, the gateway maps the environment45variable `X_KQM_APIKEY` onto an `X-Kqm-Api-Key` header, and the MCP server46translates that into the upstream `apiKey` header automatically. You do not47need to construct headers by hand — set the credential and the server48handles upstream auth translation.4950```bash51export X_KQM_APIKEY="your-quote-manager-api-key"52```5354## Base URL5556```57https://api.kaseyaquotemanager.com/v1/58```5960## Pagination6162List endpoints use page-based pagination:6364| Parameter | Type | Default | Max | Description |65|-----------|------|---------|-----|-------------|66| page | number | 1 | - | 1-based page number |67| pageSize | number | - | 100 | Results per page |68| modifiedAfter | datetime | - | - | Only return records changed after this timestamp |6970Use `modifiedAfter` for incremental syncs rather than re-walking the full71collection. Always check whether more pages exist (a full page of `pageSize`72results usually means there is another page) before claiming a result set is73complete.7475## Rate Limiting7677- **60 requests per minute**78- **20,000 requests per day**79- **Strategy:** batch with the largest `pageSize` (100) to minimize calls;80 use `modifiedAfter` for incremental pulls.81- **Backoff:** on `429`, wait and retry with exponential backoff.8283## Error Handling8485| Status Code | Meaning | Resolution |86|-------------|---------|------------|87| 400 | Bad Request | Check query parameters |88| 401 | Unauthorized | Verify the API key is correct |89| 403 | Forbidden | Check API key permissions |90| 404 | Not Found | Resource doesn't exist |91| 429 | Rate Limited | Wait and retry with backoff |92| 500 | Server Error | Retry after a delay |9394## API Documentation9596- [Kaseya Quote Manager API](https://help.quotemanager.kaseya.com/help/Content/2-integrate/api.htm)