From kaseya-autotask
References Autotask PSA product catalog: products, services, bundles, price lists, inventory, pricing models, and billing codes. For searching items, checking costs, and MSP quoting/procurement.
npx claudepluginhub wyre-technology/msp-claude-plugins --plugin autotaskThis skill uses the workspace's default tool permissions.
The Autotask product catalog manages three types of sellable items: **Products** (one-time purchases like hardware and software licenses), **Services** (recurring offerings used in contracts), and **Service Bundles** (grouped services sold together). Each type has associated pricing through **Price Lists** that control unit prices, markup, and billing codes.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
The Autotask product catalog manages three types of sellable items: Products (one-time purchases like hardware and software licenses), Services (recurring offerings used in contracts), and Service Bundles (grouped services sold together). Each type has associated pricing through Price Lists that control unit prices, markup, and billing codes.
This skill covers product catalog operations for MSP technicians, sales engineers, and managers who need to look up products, verify pricing, check inventory levels, or audit cost-vs-billing rates.
| Type | Description | Use Case | Recurring |
|---|---|---|---|
| Product | Physical or digital item | Hardware, licenses, one-time purchases | No |
| Service | Recurring offering | Managed services, monthly monitoring | Yes |
| Service Bundle | Grouped services | All-in-one MSP packages | Yes |
| Inventory Item | Tracked stock | Warehouse items with serial numbers | No |
| Field | Type | Description |
|---|---|---|
| id | number | Unique product identifier |
| name | string | Product display name |
| sku | string | Stock keeping unit code |
| description | string | Product description |
| isActive | boolean | Whether product is currently available |
| unitCost | number | Internal cost per unit |
| unitPrice | number | Default selling price per unit |
| msrp | number | Manufacturer's suggested retail price |
| productCategory | number | Category ID (picklist) |
| vendorProductNumber | string | Vendor's product number |
| manufacturerName | string | Manufacturer name |
| isSerialTracked | boolean | Whether serial numbers are tracked |
| priceCostMethod | number | How pricing is calculated |
| defaultVendorID | number | Default vendor/supplier |
Price lists control what customers actually pay. They can override default product pricing per currency:
| Field | Type | Description |
|---|---|---|
| productID / serviceID | number | The item being priced |
| currencyCode | string | Currency (e.g., USD, GBP) |
| unitPrice | number | Price in this price list |
| usesInternalCurrencyPrice | boolean | Whether to use internal currency |
Search products by name, SKU, or category:
Tool: autotask_search_products
Args: { searchTerm: "firewall", isActive: true }
Tool: autotask_search_products
Args: { productCategory: 5, pageSize: 50 }
Retrieve full product information by ID:
Tool: autotask_get_product
Args: { productId: 12345 }
Find recurring service offerings:
Tool: autotask_search_services
Args: { searchTerm: "managed", isActive: true }
Look up inventory levels for a product:
Tool: autotask_search_inventory_items
Args: { productID: 12345 }
Filter by location:
Tool: autotask_search_inventory_items
Args: { inventoryLocationID: 1 }
Get pricing for a specific product:
Tool: autotask_search_price_list_products
Args: { productID: 12345 }
Get pricing for a service:
Tool: autotask_search_price_list_services
Args: { serviceID: 678 }
Verify that a product's quote price matches the price list:
autotask_search_products { searchTerm: "product name" }autotask_get_product { productId: <id> }autotask_search_price_list_products { productID: <id> }(priceListPrice - unitCost) / priceListPrice * 100Analyze margins across products:
autotask_search_products { isActive: true, pageSize: 100 }unitCost vs unitPriceBefore quoting hardware, verify stock:
autotask_search_products { searchTerm: "laptop" }autotask_search_inventory_items { productID: <id> }quantityOnHand vs quantityMinimumReview recurring service pricing for contract renewals:
autotask_search_services { isActive: true }autotask_search_price_list_services { serviceID: <id> }| Error | Cause | Resolution |
|---|---|---|
| Product not found | Invalid product ID | Verify ID with search first |
| Empty results | No matching products | Broaden search term, check isActive filter |
| Price list empty | No pricing configured | Product may use default unitPrice |
| Permission denied | API user lacks access | Check API integration security level |
isActive when searching for products to avoid quoting discontinued itemsunitPrice (which is the default)isSerialTracked: true require serial number assignment on deliveryunitPrice