Kaseya Quote Manager API Patterns
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
Install
npx skills add https://github.com/WYRE-AI/msp-claude-plugins/tree/main/msp-claude-plugins/kaseya-quote-manager/kaseya-quote-manager/skills/api-patterns
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install wyre-ai-msp-claude-plugins@llmmart
git clone https://github.com/WYRE-AI/msp-claude-plugins.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole wyre-ai/msp-claude-plugins collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
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-quotesorkaseya-quote-manager-purchasing. - Write scopes or permissions — there is no write surface to authenticate
for; every tool is a
_listor_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; usemodifiedAfterfor 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
Files (msp-claude-plugins)
-
SKILL.md 3.9 KB
--- name: "Kaseya Quote Manager API Patterns" description: > 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. when_to_use: >- When working with Kaseya Quote Manager authentication, pagination, rate limits, or error handling for the Kaseya Quote Manager MCP server. Use when: kaseya quote manager api, kqm authentication, kqm pagination, kqm rate limit, quote manager api, or datto commerce api. --- # 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. ```bash 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 - [Kaseya Quote Manager API](https://help.quotemanager.kaseya.com/help/Content/2-integrate/api.htm)
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.