BumblebeeBumblebee

Kaseya Quote Manager

Overview

Kaseya Quote Manager (KQM), formerly Datto Commerce, is a quoting, purchasing, and sales-order platform for MSPs. The Bumblebee integration exposes the full KQM REST catalogue through a single send_request tool — the agent chooses the endpoint (e.g. /v1/customer, /v1/product, /v1/quote) and query parameters based on the request.

The public API is read-only today, so Bumblebee can list and retrieve data but cannot create or modify KQM records.

Prerequisites & Setup

Before setting up the Kaseya Quote Manager integration, you need:

  • A Kaseya Quote Manager tenant (formerly Datto Commerce)
  • Portal access with permission to manage API keys
  • An API key generated from the portal's API Keys section

Create an API Key in Kaseya Quote Manager

  1. Sign in to your Kaseya Quote Manager tenant
  2. Click your account menu in the lower-left corner
  3. Select API Keys (sometimes labelled Developer API)
  4. Click New API Key, give it a descriptive name (e.g. Bumblebee)
  5. Copy the key immediately — it is only shown once

Vendor documentation:

Configure in Bumblebee

  1. Go to the Integrations page in Bumblebee
  2. Select Kaseya Quote Manager
  3. Paste your API Key
  4. Save the configuration
  5. Run a test request (e.g. list customers) from the validation card

API Limits

  • 60 requests per minute
  • 10,000 requests per day
  • pageSize caps at 100 records per page

Bumblebee handles 429 responses with exponential backoff and retry.

Available Tools

Core (1 tool)

  • send_request — Thin wrapper around the Kaseya Quote Manager REST API. Required: endpoint (str, e.g. "/v1/customer" or "/v1/customer/42"). Optional: method (str, default "GET"), params (object, query string), data (object, request body — reserved for future write endpoints).

The agent selects the KQM endpoint and parameters based on the workflow. Supported resources include:

ResourceList endpointGet-by-id endpointNotable filters
Brand/v1/brand/v1/brand/{id}modifiedAfter
Category/v1/category/v1/category/{id}
Contact/v1/contact/v1/contact/{id}customerID, modifiedAfter
Customer/v1/customer/v1/customer/{id}modifiedAfter
Customer address/v1/customeraddress/v1/customeraddress/{id}customerID, modifiedAfter
Employee/v1/employee/v1/employee/{id}
Product/v1/product/v1/product/{id}manufacturerPartNumber, modifiedAfter
Product image/v1/productimageproductID
Product supplier/v1/productsupplier/v1/productsupplier/{id}productID, modifiedAfter
Purchase order/v1/purchaseorder/v1/purchaseorder/{id}orderNumber, modifiedAfter
Purchase order cost/v1/purchaseordercost/v1/purchaseordercost/{id}purchaseOrderID, modifiedAfter
Purchase order line/v1/purchaseorderline/v1/purchaseorderline/{id}purchaseOrderID, modifiedAfter
Quote/v1/quote/v1/quote/{id}quoteNumber, modifiedAfter
Quote line/v1/quoteline/v1/quoteline/{id}quoteSectionID
Quote section/v1/quotesection/v1/quotesection/{id}quoteID
Sales order/v1/salesorder/v1/salesorder/{id}orderNumber, modifiedAfter
Sales order line/v1/salesorderline/v1/salesorderline/{id}salesOrderID, modifiedAfter
Sales order payment/v1/salesorderpayment/v1/salesorderpayment/{id}salesOrderID, modifiedAfter
Supplier/v1/supplier/v1/supplier/{id}modifiedAfter
Warehouse/v1/warehouse/v1/warehouse/{id}modifiedAfter

All list endpoints accept page and pageSize (default 100, max 100).

Example calls

# First page of customers
send_request(endpoint="/v1/customer", params={"page": 1, "pageSize": 100})

# Single product
send_request(endpoint="/v1/product/123")

# Quote lines for a specific quote section
send_request(endpoint="/v1/quoteline", params={"quoteSectionID": 17})

# Sales orders modified after a date
send_request(endpoint="/v1/salesorder", params={"modifiedAfter": "2024-01-01T00:00:00"})