Best for
- Use this CLI when an agent or operator needs Kaseya BMS PSA data or actions from the terminal: triaging service-desk queues, checking contract hours before authorizing work, reviewing unbilled time, walking the sales pi…
Servosity/msp-skills/skills/kaseya-bms/SKILL.md
The first dedicated CLI and MCP server for Kaseya BMS - the full PSA surface plus offline sync, full-text search, and the queue, contract-burn, and unbilled-revenue analytics the web grid can't compute. Trigger phrases: `check the BMS queue`, `stale tickets in Kaseya BMS`, `how many contract hours are left`, `unbilled time in BMS`, `BMS sales pipeline`, `use kaseya-bms`, `run kaseya-bms`.
Decision brief
The first dedicated CLI and MCP server for Kaseya BMS - the full PSA surface plus offline sync, full-text search, and the queue, contract-burn, and unbilled-revenue analytics the web grid can't compute. Trigger phrases: `check the BMS queue`, `stale tickets in Kaseya BMS`, `how many contract hours are left`, `unbilled time in BMS`, `BMS sales pipeline`, `us…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/Servosity/msp-skills --skill "skills/kaseya-bms"Inspect the Agent Skill "kaseya-bms" from https://github.com/Servosity/msp-skills/blob/30e109db0872897de0b88adb38d81d4c292da3ae/skills/kaseya-bms/SKILL.md at commit 30e109db0872897de0b88adb38d81d4c292da3ae. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
BMS uses short-lived JWTs. Set KASEYABMSUSERNAME, KASEYABMSPASSWORD, and KASEYABMSTENANT (your company name from My Settings in BMS), then run kaseya-bms-cli auth login to exchange them for a token - it is stored locally and sent as a Bearer header on every call. If you already…
This skill drives the kaseya-bms-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
Use this CLI when an agent or operator needs Kaseya BMS PSA data or actions from the terminal: triaging service-desk queues, checking contract hours before authorizing work, reviewing unbilled time, walking the sales pipeline, or creating and updating tickets. The local SQLite m…
Do not use this CLI for: - Kaseya VSA / RMM agent operations (endpoints, patches, scripts) - this CLI only covers the BMS PSA - Datto Autotask PSA workflows - different product, use an Autotask tool - IT Glue documentation management - BMS only exposes the integration link, not…
These capabilities aren't available in any other tool for this API.
Permission review
The documentation asks the agent to run terminal commands or scripts.
npx -y @mvanhorn/printing-press-library install kaseya-bms --cli-onlyThe documentation asks the agent to run terminal commands or scripts.
go install github.com/mvanhorn/printing-press-library/library/project-management/kaseya-bms/cmd/kaseya-bms-cli@latestThe documentation includes network, browsing, or remote request actions.
_Reach for this when asked how the service desk looks right now - it answers in one local query instead of paging the tickets endpoint._The documentation includes sending, uploading, or posting data to a remote service.
`kaseya-bms-cli admin post-webhook-configuration` - Post webhook configurationThe documentation includes network, browsing, or remote request actions.
`kaseya-bms-cli admin post-webhook-configuration` - Post webhook configurationThe documentation includes sending, uploading, or posting data to a remote service.
`kaseya-bms-cli admin post-webhook-delivery-logs-redelivery` - Post webhook delivery logs redeliveryEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 83/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 15 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
This skill drives the kaseya-bms-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:
npx -y @mvanhorn/printing-press-library install kaseya-bms --cli-only
kaseya-bms-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.4 or newer). This installs into $GOPATH/bin (default $HOME/go/bin), so add that directory to $PATH instead:
go install github.com/mvanhorn/printing-press-library/library/project-management/kaseya-bms/cmd/kaseya-bms-cli@latest
If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
Kaseya BMS has a 433-operation official API and zero CLI ecosystem. This binary covers the whole surface - tickets, CRM, contracts, finance, projects - and mirrors core entities into local SQLite so dispatch questions like 'queue-health', 'stale-tickets', and 'contract-burn' answer instantly without burning the 1500/hour/endpoint rate limit.
Use this CLI when an agent or operator needs Kaseya BMS PSA data or actions from the terminal: triaging service-desk queues, checking contract hours before authorizing work, reviewing unbilled time, walking the sales pipeline, or creating and updating tickets. The local SQLite mirror makes it the right choice for repeated analytical questions that would otherwise hammer the rate-limited API.
Do not use this CLI for:
These capabilities aren't available in any other tool for this API.
queue-health - See open ticket volume by queue, priority, and status in one shot, with stale counts flagged before the morning standup.
Reach for this when asked how the service desk looks right now - it answers in one local query instead of paging the tickets endpoint.
kaseya-bms-cli queue-health --agent
stale-tickets - List open tickets that have not been touched in N days, oldest first, with account and assignee so nothing rots in the queue.
Use this for SLA-risk and aging-ticket questions instead of listing all tickets and filtering by hand.
kaseya-bms-cli stale-tickets --days 7 --agent
workload - Open and in-progress ticket load per assignee, flagging who is overloaded and who has slack before you dispatch the next ticket.
Pick this when deciding who should take a ticket; it is one command instead of one query per technician.
kaseya-bms-cli workload --agent
contract-burn - Per-contract burn picture: hours consumed, open tickets, and how much of the contract period has elapsed - at-risk agreements surface first.
Use this before authorizing work on an account - it answers whether the contract still has hours left, fleet-wide, in one call.
kaseya-bms-cli contract-burn --agent --select items.account,items.contract,items.hours_consumed
unbilled - Billable, approved, not-yet-billed time grouped by account, in hours - the month-end ready-to-bill review without the Excel export.
Reach for this for any what-is-ready-to-bill question; the answer is local, grouped, and JSON-shaped.
kaseya-bms-cli unbilled --agent
pipeline - Open opportunities grouped by stage with counts, total and weighted value, and slipped-close flags for the Monday sales call.
Use this for pipeline and forecast questions instead of paging the opportunities endpoint and aggregating by hand.
kaseya-bms-cli pipeline --agent
admin - Manage admin
kaseya-bms-cli admin clone-workflow - Clone workflowkaseya-bms-cli admin delete-k1-access-control-mapping - Delete k1 access control mappingkaseya-bms-cli admin delete-service - Delete servicekaseya-bms-cli admin delete-services - Delete serviceskaseya-bms-cli admin delete-teams-channel - Delete teams channelkaseya-bms-cli admin delete-teams-channels - Delete teams channelskaseya-bms-cli admin delete-webhook-configuration - Delete webhook configurationkaseya-bms-cli admin delete-webhooks - Delete webhookskaseya-bms-cli admin delete-workflow - Delete workflowkaseya-bms-cli admin get-account-codes-lookup - Get account codes lookupkaseya-bms-cli admin get-agent-procedure-logs - Get agent procedure logskaseya-bms-cli admin get-chart-of-account-types - Get chart of account typeskaseya-bms-cli admin get-chart-of-account-types-look-up - Get chart of account types look upkaseya-bms-cli admin get-chart-of-accounts - Get chart of accountskaseya-bms-cli admin get-chart-of-accounts-lookup - Get chart of accounts lookupkaseya-bms-cli admin get-company-settings - Get company settingskaseya-bms-cli admin get-copilot-configurations - Get copilot configurationskaseya-bms-cli admin get-custom-field-operators - Get custom field operatorskaseya-bms-cli admin get-departments-lookup - Get departments lookupkaseya-bms-cli admin get-job-titles-lookup - Get job titles lookupkaseya-bms-cli admin get-k1-access-control-access-groups - Get k1 access control access groupskaseya-bms-cli admin get-k1-access-control-mappings - Get k1 access control mappingskaseya-bms-cli admin get-k1-access-control-settings - Get k1 access control settingskaseya-bms-cli admin get-k1-launcher-url - Get k1 launcher urlkaseya-bms-cli admin get-k1-product-organization-mappings - Get k1 product organization mappingskaseya-bms-cli admin get-k1-ssomodules - Get k1 ssomoduleskaseya-bms-cli admin get-k1-status - Get k1 statuskaseya-bms-cli admin get-related-services-list - Get related services listkaseya-bms-cli admin get-satisfaction-score-options-lookup - Get satisfaction score options lookupkaseya-bms-cli admin get-security-roles-lookup - Get security roles lookupkaseya-bms-cli admin get-service - Get servicekaseya-bms-cli admin get-service-categories-lookup - Get service categories lookupkaseya-bms-cli admin get-service-in-progress-job - Get service in progress jobkaseya-bms-cli admin get-service-sub-categories-lookup - Get service sub categories lookupkaseya-bms-cli admin get-service-type-options-lookup - Get service type options lookupkaseya-bms-cli admin get-services-list - Get services listkaseya-bms-cli admin get-services-lookup - Get services lookupkaseya-bms-cli admin get-teams-channel - Get teams channelkaseya-bms-cli admin get-teams-channel-lookup - Get teams channel lookupkaseya-bms-cli admin get-teams-channel-status - Get teams channel statuskaseya-bms-cli admin get-teams-channels-activity-logs-list - Get teams channels activity logs listkaseya-bms-cli admin get-teams-channels-list - Get teams channels listkaseya-bms-cli admin get-webhook-configuration - Get webhook configurationkaseya-bms-cli admin get-webhook-configurations-list - Get webhook configurations listkaseya-bms-cli admin get-webhook-delivery-log - Get webhook delivery logkaseya-bms-cli admin get-webhook-delivery-logs-list - Get webhook delivery logs listkaseya-bms-cli admin get-webhook-events-lookup - Get webhook events lookupkaseya-bms-cli admin get-workflow - Get workflowkaseya-bms-cli admin get-workflow-time-zone-and-working-hours - Get workflow time zone and working hourskaseya-bms-cli admin get-workflows-list - Get workflows listkaseya-bms-cli admin get-workforce-planner-logs-list - Get workforce planner logs listkaseya-bms-cli admin patch-services - Patch serviceskaseya-bms-cli admin patch-teams-channel - Patch teams channelkaseya-bms-cli admin patch-webhooks - Patch webhookskaseya-bms-cli admin patch-workflow - Patch workflowkaseya-bms-cli admin post-copilot-configuration - Post copilot configurationkaseya-bms-cli admin post-k1-access-control-mapping - Post k1 access control mappingkaseya-bms-cli admin post-k1-access-control-settings - Post k1 access control settingskaseya-bms-cli admin post-k1-product-organization-mappings - Post k1 product organization mappingskaseya-bms-cli admin post-service - Post servicekaseya-bms-cli admin post-teams-channel - Post teams channelkaseya-bms-cli admin post-webhook-configuration - Post webhook configurationkaseya-bms-cli admin post-webhook-delivery-logs-redelivery - Post webhook delivery logs redeliverykaseya-bms-cli admin post-workflow - Post workflowkaseya-bms-cli admin put-copilot-configuration - Put copilot configurationkaseya-bms-cli admin put-k1-access-control-mapping - Put k1 access control mappingkaseya-bms-cli admin put-k1-access-control-settings - Put k1 access control settingskaseya-bms-cli admin put-service - Put servicekaseya-bms-cli admin put-teams-channel - Put teams channelkaseya-bms-cli admin put-webhook-configuration - Put webhook configurationkaseya-bms-cli admin put-workflow - Put workflowkaseya-bms-cli admin search-k1-product-organization-mappings - Search k1 product organization mappingskaseya-bms-cli admin update - Updatekaseya-bms-cli admin update-related-services-list - Update related services listcalendar - Manage calendar
kaseya-bms-cli calendar dismiss-workforce-planner-period-warning - Dismiss workforce planner period warningkaseya-bms-cli calendar get-workforce-planner - Get workforce plannerkaseya-bms-cli calendar put-workforce-planner-period - Put workforce planner periodkaseya-bms-cli calendar split-workforce-planner-period - Split workforce planner periodclientportal - Manage clientportal
kaseya-bms-cli clientportal get-client-portal-ticket-activities - Get client portal ticket activitieskaseya-bms-cli clientportal get-client-portal-ticket-by-id - Get client portal ticket by idkaseya-bms-cli clientportal post-client-portal-ticket - Post client portal ticketkaseya-bms-cli clientportal post-client-portal-ticket-note - Post client portal ticket notekaseya-bms-cli clientportal search-client-portal-my-tickets - Search client portal my ticketskaseya-bms-cli clientportal search-client-portal-tickets - Search client portal ticketscrm - Manage crm
kaseya-bms-cli crm delete-contact - Delete contactkaseya-bms-cli crm get-account-alert - Get account alertkaseya-bms-cli crm get-account-contact-summary-info - Get account contact summary infokaseya-bms-cli crm get-account-contacts - Get account contactskaseya-bms-cli crm get-account-location - Get account locationkaseya-bms-cli crm get-account-locations - Get account locationskaseya-bms-cli crm get-account-summary - Get account summarykaseya-bms-cli crm get-accounts - Get accountskaseya-bms-cli crm get-accounts-list-summary - Get accounts list summarykaseya-bms-cli crm get-activities-due - Get activities duekaseya-bms-cli crm get-all-opportunities - Get all opportunitieskaseya-bms-cli crm get-contact-summary - Get contact summarykaseya-bms-cli crm get-contacts-list-summary - Get contacts list summarykaseya-bms-cli crm get-contacts-search - Get contacts searchkaseya-bms-cli crm get-dashboard-quotations-summary - Get dashboard quotations summarykaseya-bms-cli crm get-line-item - Get line itemkaseya-bms-cli crm get-next-opportunities - Get next opportunitieskaseya-bms-cli crm get-open-pipelines - Get open pipelineskaseya-bms-cli crm get-opportunity - Get opportunitykaseya-bms-cli crm get-opportunity-notes - Get opportunity noteskaseya-bms-cli crm get-opportunity-status-lookups - Get opportunity status lookupskaseya-bms-cli crm get-pipeline-totals - Get pipeline totalskaseya-bms-cli crm get-product-quotation - Get product quotationkaseya-bms-cli crm get-product-quotations-list-summary - Get product quotations list summarykaseya-bms-cli crm get-quotation - Get quotationkaseya-bms-cli crm get-quotations-list-summary - Get quotations list summarykaseya-bms-cli crm get-recurring-services-performance - Get recurring services performancekaseya-bms-cli crm get-recurring-services-performance-totals - Get recurring services performance totalskaseya-bms-cli crm get-sales-accelerator-data - Get sales accelerator datakaseya-bms-cli crm get-sales-accelerator-summary - Get sales accelerator summarykaseya-bms-cli crm get-sales-leaderboard - Get sales leaderboardkaseya-bms-cli crm get-top-opportunities - Get top opportunitieskaseya-bms-cli crm patch-account - Patch accountkaseya-bms-cli crm patch-contact - Patch contactkaseya-bms-cli crm post-account - Post accountkaseya-bms-cli crm post-contact-summary-info - Post contact summary infokaseya-bms-cli crm post-opportunity - Post opportunitykaseya-bms-cli crm post-opportunity-note - Post opportunity notekaseya-bms-cli crm post-quotation-line-item - Post quotation line itemkaseya-bms-cli crm put-account - Put accountkaseya-bms-cli crm put-contact - Put contactkaseya-bms-cli crm put-opportunity - Put opportunitykaseya-bms-cli crm put-opportunity-note - Put opportunity notekaseya-bms-cli crm put-quotation-line-item - Put quotation line itemfinance - Manage finance
kaseya-bms-cli finance activate-contract - Activate contractkaseya-bms-cli finance deactivate-contract - Deactivate contractkaseya-bms-cli finance get-contract-lookups - Get contract lookupskaseya-bms-cli finance get-contracts-summary - Get contracts summarykaseya-bms-cli finance get-invoice - Get invoicekaseya-bms-cli finance get-invoice-details-list - Get invoice details listkaseya-bms-cli finance get-invoice-discounts-list - Get invoice discounts listkaseya-bms-cli finance get-invoices-summary-list - Get invoices summary listkaseya-bms-cli finance mark-invoices-as-sent - Mark invoices as sentkaseya-bms-cli finance post-recurring-service-contract - Post recurring service contractkaseya-bms-cli finance post-recurring-services - Post recurring serviceskaseya-bms-cli finance put-recurring-service-contract - Put recurring service contracthr - Manage hr
kaseya-bms-cli hr get-assignee-lookups - Get assignee lookupskaseya-bms-cli hr get-assignees - Get assigneeskaseya-bms-cli hr get-assignees-count - Get assignees countkaseya-bms-cli hr get-employee-role-lookups - Get employee role lookupskaseya-bms-cli hr get-employees-list-search-select - Get employees list search selectkaseya-bms-cli hr get-employees-lookup - Get employees lookupintegration - Manage integration
kaseya-bms-cli integration get-account-codes - Get account codeskaseya-bms-cli integration get-account-codes-by-ids - Get account codes by idskaseya-bms-cli integration get-bill-details - Get bill detailskaseya-bms-cli integration get-bills - Get billskaseya-bms-cli integration get-class-lists - Get class listskaseya-bms-cli integration get-class-lists-by-ids - Get class lists by idskaseya-bms-cli integration get-client-by-ids - Get client by idskaseya-bms-cli integration get-clients - Get clientskaseya-bms-cli integration get-discounts - Get discountskaseya-bms-cli integration get-discounts-by-ids - Get discounts by idskaseya-bms-cli integration get-expenses - Get expenseskaseya-bms-cli integration get-expenses-by-ids - Get expenses by idskaseya-bms-cli integration get-invoice-details - Get invoice detailskaseya-bms-cli integration get-invoices - Get invoiceskaseya-bms-cli integration get-job-info - Get job infokaseya-bms-cli integration get-products - Get productskaseya-bms-cli integration get-products-by-ids - Get products by idskaseya-bms-cli integration get-reimbursement-details - Get reimbursement detailskaseya-bms-cli integration get-reimbursements - Get reimbursementskaseya-bms-cli integration get-sales-tax-items - Get sales tax itemskaseya-bms-cli integration get-sales-tax-items-by-ids - Get sales tax items by idskaseya-bms-cli integration get-services - Get serviceskaseya-bms-cli integration get-services-by-ids - Get services by idskaseya-bms-cli integration get-vendors - Get vendorskaseya-bms-cli integration get-vendors-by-ids - Get vendors by idskaseya-bms-cli integration get-work-types - Get work typeskaseya-bms-cli integration get-work-types-by-ids - Get work types by idskaseya-bms-cli integration import-account-codes - Import account codeskaseya-bms-cli integration import-class-lists - Import class listskaseya-bms-cli integration import-clients - Import clientskaseya-bms-cli integration import-discounts - Import discountskaseya-bms-cli integration import-expenses - Import expenseskaseya-bms-cli integration import-payments - Import paymentskaseya-bms-cli integration import-products - Import productskaseya-bms-cli integration import-services - Import serviceskaseya-bms-cli integration import-vendors - Import vendorskaseya-bms-cli integration import-work-types - Import work typeskaseya-bms-cli integration post-entity-mappings - Post entity mappingskaseya-bms-cli integration update-bill-qb-reference - Update bill qb referencekaseya-bms-cli integration update-invoice-qb-reference - Update invoice qb referencekaseya-bms-cli integration update-reimbursement-qb-reference - Update reimbursement qb referenceintegrations - Manage integrations
kaseya-bms-cli integrations get-distributors-pricing - Get distributors pricingkaseya-bms-cli integrations get-distributors-status - Get distributors statuskaseya-bms-cli integrations get-etilize-product - Get etilize productkaseya-bms-cli integrations get-itg-account-lookup - Get itg account lookupkaseya-bms-cli integrations get-itg-asset-lookup - Get itg asset lookupkaseya-bms-cli integrations get-itg-checklist-tasks - Get itg checklist taskskaseya-bms-cli integrations get-itg-checklists - Get itg checklistskaseya-bms-cli integrations get-itg-contact-lookup - Get itg contact lookupkaseya-bms-cli integrations get-itg-contact-notes - Get itg contact noteskaseya-bms-cli integrations get-itg-location-lookup - Get itg location lookupkaseya-bms-cli integrations get-itg-organization-notes - Get itg organization noteskaseya-bms-cli integrations get-itg-status - Get itg statuskaseya-bms-cli integrations get-itgaccess-info - Get itgaccess infokaseya-bms-cli integrations get-itgpassword-value - Get itgpassword valuekaseya-bms-cli integrations get-itgsuggested-resources - Get itgsuggested resourceskaseya-bms-cli integrations get-itgsuggested-resources-count - Get itgsuggested resources countkaseya-bms-cli integrations get-survey-settings - Get survey settingskaseya-bms-cli integrations get-ticket-global-search - Get ticket global searchkaseya-bms-cli integrations get-ticket-sync - Get ticket synckaseya-bms-cli integrations get-tickets-sync - Get tickets synckaseya-bms-cli integrations get-vsa-access-info - Get vsa access infokaseya-bms-cli integrations put-itgcontact-notes - Put itgcontact noteskaseya-bms-cli integrations put-itgorganization-notes - Put itgorganization noteskaseya-bms-cli integrations search-products - Search productsinventory - Manage inventory
kaseya-bms-cli inventory get-polookups - Get polookupskaseya-bms-cli inventory get-pricing-levels - Get pricing levelskaseya-bms-cli inventory get-product-categories-lookup - Get product categories lookupkaseya-bms-cli inventory get-product-default-cost - Get product default costkaseya-bms-cli inventory get-product-weighted-cost - Get product weighted costkaseya-bms-cli inventory get-products-in-stock - Get products in stockkaseya-bms-cli inventory get-products-list-search-select - Get products list search selectkaseya-bms-cli inventory get-supplier-lookups - Get supplier lookupskaseya-bms-cli inventory get-warehouse-lookups - Get warehouse lookupskaseya-bms-cli inventory post-product-categories - Post product categorieskaseya-one - Manage kaseya one
kaseya-bms-cli kaseya-one get-k1-resource-lookup - Get k1 resource lookupkaseya-bms-cli kaseya-one get-k1-resources-lookup - Get k1 resources lookupkaseya-bms-cli kaseya-one get-k1-role-lookup - Get k1 role lookupkaseya-bms-cli kaseya-one get-k1-roles-lookup - Get k1 roles lookupkaseya-bms-cli kaseya-one get-k1-ticket-statuses-lookup - Get k1 ticket statuses lookupkaseya-bms-cli kaseya-one get-k1-ticket-statuses-lookup-kaseyaone - Get k1 ticket statuses lookup kaseyaonekaseya-bms-cli kaseya-one get-work-type-lookup - Get work type lookupkaseya-bms-cli kaseya-one get-work-types-lookup - Get work types lookupkaseya-bms-cli kaseya-one k1-get-users-list - K1 get users listkaseya-bms-cli kaseya-one post-k1-centralized-configurations - Post k1 centralized configurationskaseya-bms-cli kaseya-one post-k1-gorgon-provisioning-notifications - Post k1 gorgon provisioning notificationskaseya-bms-cli kaseya-one post-k1-ticket-action-notifications - Post k1 ticket action notificationskaseya-bms-cli kaseya-one post-k1-user-deprovisioning-notifications - Post k1 user deprovisioning notificationslisting - Manage listing
kaseya-bms-cli listing get-columns - Get columnskaseya-bms-cli listing get-search-columns - Get search columnskaseya-bms-cli listing get-search-combo-items - Get search combo itemsmy - Manage my
kaseya-bms-cli my get-expense-sheets-lookups - Get expense sheets lookupskaseya-bms-cli my post-expense-sheet - Post expense sheetproject - Manage project
kaseya-bms-cli project delete-status - Delete statuskaseya-bms-cli project get - Getkaseya-bms-cli project get-list-summary - Get list summarykaseya-bms-cli project get-lookup - Get lookupkaseya-bms-cli project get-status - Get statuskaseya-bms-cli project get-statuses-list - Get statuses listkaseya-bms-cli project get-statuses-lookup - Get statuses lookupkaseya-bms-cli project get-task-related-items - Get task related itemskaseya-bms-cli project get-tasks-list - Get tasks listkaseya-bms-cli project post-status - Post statuskaseya-bms-cli project put-status - Put statuskaseya-bms-cli project put-status-order - Put status orderkaseya-bms-cli project search-and-select-task-list - Search and select task listrmm - Manage rmm
kaseya-bms-cli rmm create - Createkaseya-bms-cli rmm get - Getkaseya-bms-cli rmm get-rmmsettings - Get rmmsettingskaseya-bms-cli rmm post-alert - Post alertkaseya-bms-cli rmm update - Updatekaseya-bms-cli rmm update-integrationtype - Update integrationtypesecurity - Manage security
kaseya-bms-cli security authenticate - Authenticatekaseya-bms-cli security refresh-token - Refresh tokenkaseya-bms-cli security sso-status - Sso statuskaseya-bms-cli security user-info - User infoservicedesk - Manage servicedesk
kaseya-bms-cli servicedesk add-related-tickets - Add related ticketskaseya-bms-cli servicedesk add-ticket-tasks - Add ticket taskskaseya-bms-cli servicedesk assign-ticket - Assign ticketkaseya-bms-cli servicedesk create - Createkaseya-bms-cli servicedesk create-tickets - Create ticketskaseya-bms-cli servicedesk create-tickets-2 - Create tickets 2kaseya-bms-cli servicedesk create-tickets-3 - Create tickets 3kaseya-bms-cli servicedesk create-tickets-4 - Create tickets 4kaseya-bms-cli servicedesk delete-hardware-asset - Delete hardware assetkaseya-bms-cli servicedesk delete-related-ticket - Delete related ticketkaseya-bms-cli servicedesk delete-service-call - Delete service callkaseya-bms-cli servicedesk delete-service-calls-and-to-dos - Delete service calls and to doskaseya-bms-cli servicedesk delete-ticket - Delete ticketkaseya-bms-cli servicedesk delete-ticket-charge - Delete ticket chargekaseya-bms-cli servicedesk delete-ticket-checklist-item - Delete ticket checklist itemkaseya-bms-cli servicedesk delete-ticket-checklist-items - Delete ticket checklist itemskaseya-bms-cli servicedesk delete-ticket-expense - Delete ticket expensekaseya-bms-cli servicedesk delete-ticket-note - Delete ticket notekaseya-bms-cli servicedesk delete-ticket-tasks - Delete ticket taskskaseya-bms-cli servicedesk delete-ticket-time-entry - Delete ticket time entrykaseya-bms-cli servicedesk delete-tickets - Delete ticketskaseya-bms-cli servicedesk delete-to-do - Delete to dokaseya-bms-cli servicedesk get - Getkaseya-bms-cli servicedesk get-agent-procedure-audits - Get agent procedure auditskaseya-bms-cli servicedesk get-batch-action-logs - Get batch action logskaseya-bms-cli servicedesk get-ccs - Get ccskaseya-bms-cli servicedesk get-device-status - Get device statuskaseya-bms-cli servicedesk get-hardware-asset - Get hardware assetkaseya-bms-cli servicedesk get-hardware-asset-tickets - Get hardware asset ticketskaseya-bms-cli servicedesk get-hardware-assets-list-search-select - Get hardware assets list search selectkaseya-bms-cli servicedesk get-my-tickets - Get my ticketskaseya-bms-cli servicedesk get-product-charge-delivery-history-by-charge-id - Get product charge delivery history by charge idkaseya-bms-cli servicedesk get-queue-tickets - Get queue ticketskaseya-bms-cli servicedesk get-related-alerts - Get related alertskaseya-bms-cli servicedesk get-related-tickets - Get related ticketskaseya-bms-cli servicedesk get-related-tickets-count - Get related tickets countkaseya-bms-cli servicedesk get-service-call - Get service callkaseya-bms-cli servicedesk get-service-calls - Get service callskaseya-bms-cli servicedesk get-software-assets-list-search-select - Get software assets list search selectkaseya-bms-cli servicedesk get-ticket - Get ticketkaseya-bms-cli servicedesk get-ticket-activities - Get ticket activitieskaseya-bms-cli servicedesk get-ticket-charge - Get ticket chargekaseya-bms-cli servicedesk get-ticket-charge-product-summary - Get ticket charge product summarykaseya-bms-cli servicedesk get-ticket-checklist-items-by-ticket-id - Get ticket checklist items by ticket idkaseya-bms-cli servicedesk get-ticket-expense - Get ticket expensekaseya-bms-cli servicedesk get-ticket-expenses-charges - Get ticket expenses chargeskaseya-bms-cli servicedesk get-ticket-logs - Get ticket logskaseya-bms-cli servicedesk get-ticket-note - Get ticket notekaseya-bms-cli servicedesk get-ticket-note-template-details-by-ticket-id - Get ticket note template details by ticket idkaseya-bms-cli servicedesk get-ticket-note-template-lookups - Get ticket note template lookupskaseya-bms-cli servicedesk get-ticket-notes - Get ticket noteskaseya-bms-cli servicedesk get-ticket-product-charge-assets-by-charge-id - Get ticket product charge assets by charge idkaseya-bms-cli servicedesk get-ticket-service-calls-to-dos - Get ticket service calls to doskaseya-bms-cli servicedesk get-ticket-slainfo - Get ticket slainfokaseya-bms-cli servicedesk get-ticket-survey-scores - Get ticket survey scoreskaseya-bms-cli servicedesk get-ticket-tabs-indicators - Get ticket tabs indicatorskaseya-bms-cli servicedesk get-ticket-tasks - Get ticket taskskaseya-bms-cli servicedesk get-ticket-tasks-count - Get ticket tasks countkaseya-bms-cli servicedesk get-ticket-template - Get ticket templatekaseya-bms-cli servicedesk get-ticket-template-lookups - Get ticket template lookupskaseya-bms-cli servicedesk get-ticket-time-entries - Get ticket time entrieskaseya-bms-cli servicedesk get-ticket-time-entry - Get ticket time entrykaseya-bms-cli servicedesk get-ticket-time-entry-template-lookups - Get ticket time entry template lookupskaseya-bms-cli servicedesk get-ticket-timelog-template-details-by-ticket-id - Get ticket timelog template details by ticket idkaseya-bms-cli servicedesk get-tickets - Get ticketskaseya-bms-cli servicedesk get-tickets-2 - Get tickets 2kaseya-bms-cli servicedesk get-tickets-count - Get tickets countkaseya-bms-cli servicedesk get-tickets-count-by-assignee-priority - Get tickets count by assignee prioritykaseya-bms-cli servicedesk get-tickets-count-by-basic-status - Get tickets count by basic statuskaseya-bms-cli servicedesk get-tickets-count-by-issue-type - Get tickets count by issue typekaseya-bms-cli servicedesk get-tickets-count-by-priority - Get tickets count by prioritykaseya-bms-cli servicedesk get-tickets-count-by-queue - Get tickets count by queuekaseya-bms-cli servicedesk get-tickets-count-by-status - Get tickets count by statuskaseya-bms-cli servicedesk get-tickets-due - Get tickets duekaseya-bms-cli servicedesk get-tickets-list-search-select - Get tickets list search selectkaseya-bms-cli servicedesk get-tickets-list-summary - Get tickets list summarykaseya-bms-cli servicedesk get-tickets-upcoming - Get tickets upcomingkaseya-bms-cli servicedesk get-time-logged-by-technician - Get time logged by techniciankaseya-bms-cli servicedesk get-to-do - Get to dokaseya-bms-cli servicedesk get-vsa-hardware-asset-tickets - Get vsa hardware asset ticketskaseya-bms-cli servicedesk get-workflow-logs - Get workflow logskaseya-bms-cli servicedesk merge-tickets - Merge ticketskaseya-bms-cli servicedesk patch-ticket - Patch ticketkaseya-bms-cli servicedesk patch-tickets - Patch ticketskaseya-bms-cli servicedesk post-checklist-tasks - Post checklist taskskaseya-bms-cli servicedesk post-checklist-with-tasks - Post checklist with taskskaseya-bms-cli servicedesk post-hardware-asset - Post hardware assetkaseya-bms-cli servicedesk post-po - Post pokaseya-bms-cli servicedesk post-product-deliver - Post product deliverkaseya-bms-cli servicedesk post-service-call - Post service callkaseya-bms-cli servicedesk post-ticket - Post ticketkaseya-bms-cli servicedesk post-ticket-charge - Post ticket chargekaseya-bms-cli servicedesk post-ticket-checklist-item - Post ticket checklist itemkaseya-bms-cli servicedesk post-ticket-expense - Post ticket expensekaseya-bms-cli servicedesk post-ticket-note - Post ticket notekaseya-bms-cli servicedesk post-ticket-time-entry - Post ticket time entrykaseya-bms-cli servicedesk post-to-do - Post to dokaseya-bms-cli servicedesk put-hardware-asset - Put hardware assetkaseya-bms-cli servicedesk put-service-call - Put service callkaseya-bms-cli servicedesk put-ticket - Put ticketkaseya-bms-cli servicedesk put-ticket-charge - Put ticket chargekaseya-bms-cli servicedesk put-ticket-checklist-item - Put ticket checklist itemkaseya-bms-cli servicedesk put-ticket-expense - Put ticket expensekaseya-bms-cli servicedesk put-ticket-note - Put ticket notekaseya-bms-cli servicedesk put-ticket-time-entry - Put ticket time entrykaseya-bms-cli servicedesk put-to-do - Put to dokaseya-bms-cli servicedesk resolve-ticket - Resolve ticketkaseya-bms-cli servicedesk search-my-tickets - Search my ticketskaseya-bms-cli servicedesk search-queue-tickets - Search queue ticketskaseya-bms-cli servicedesk search-tickets - Search ticketskaseya-bms-cli servicedesk update - Updatekaseya-bms-cli servicedesk update-tickets - Update ticketssystem - Manage system
kaseya-bms-cli system create-tenant-lookup - Create tenant lookupkaseya-bms-cli system delete-attachment - Delete attachmentkaseya-bms-cli system delete-attachments - Delete attachmentskaseya-bms-cli system delete-temp-attachments - Delete temp attachmentskaseya-bms-cli system delete-view - Delete viewkaseya-bms-cli system download-attachment - Download attachmentkaseya-bms-cli system download-profile-picture - Download profile picturekaseya-bms-cli system get-account-types-lookup - Get account types lookupkaseya-bms-cli system get-all-batch-action-logs - Get all batch action logskaseya-bms-cli system get-approval-routes-lookup - Get approval routes lookupkaseya-bms-cli system get-attachment - Get attachmentkaseya-bms-cli system get-attachments - Get attachmentskaseya-bms-cli system get-colors-lookup - Get colors lookupkaseya-bms-cli system get-custom-fields-data - Get custom fields datakaseya-bms-cli system get-custom-fields-meta-data - Get custom fields meta datakaseya-bms-cli system get-email-template-lookups - Get email template lookupskaseya-bms-cli system get-expense-type-lookups - Get expense type lookupskaseya-bms-cli system get-issue-sub-type-lookups - Get issue sub type lookupskaseya-bms-cli system get-issue-type-lookups - Get issue type lookupskaseya-bms-cli system get-locations-lookup - Get locations lookupkaseya-bms-cli system get-lookups - Get lookupskaseya-bms-cli system get-priority-lookups - Get priority lookupskaseya-bms-cli system get-queue-lookups - Get queue lookupskaseya-bms-cli system get-role-lookups - Get role lookupskaseya-bms-cli system get-scheduler-job-status - Get scheduler job statuskaseya-bms-cli system get-settings - Get settingskaseya-bms-cli system get-slalookups - Get slalookupskaseya-bms-cli system get-status-lookups - Get status lookupskaseya-bms-cli system get-tenant-lookups - Get tenant lookupskaseya-bms-cli system get-view-details-values - Get view details valueskaseya-bms-cli system get-view-search-values - Get view search valueskaseya-bms-cli system get-view-share-settings - Get view share settingskaseya-bms-cli system get-views - Get viewskaseya-bms-cli system get-work-type-lookups - Get work type lookupskaseya-bms-cli system post - Postkaseya-bms-cli system post-event-log - Post event logkaseya-bms-cli system post-temp-attachment - Post temp attachmentkaseya-bms-cli system post-view - Post viewkaseya-bms-cli system put-attachment - Put attachmentkaseya-bms-cli system put-custom-field-data - Put custom field datakaseya-bms-cli system put-view - Put viewkaseya-bms-cli system put-view-info - Put view infokaseya-bms-cli system put-view-share-settings - Put view share settingstimelogs - Manage timelogs
kaseya-bms-cli timelogs - Get all time logsWhen you know what you want to do but not which command does it, ask the CLI directly:
kaseya-bms-cli which "<capability in your own words>"
which resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match - fall back to --help or use a narrower query.
kaseya-bms-cli queue-health --agent
One local query answers what the dispatcher's three browser tabs used to: open volume by queue, priority, and status with stale flags.
kaseya-bms-cli stale-tickets --days 7 --agent
Oldest-first list of untouched open tickets with account and assignee, straight from the local mirror.
kaseya-bms-cli contract-burn --agent --select items.account,items.contract,items.hours_consumed
Fleet-wide consumed hours and period-elapsed per contract, with --select trimming the payload to the three fields an agent actually needs.
kaseya-bms-cli unbilled --agent
Approved, billable, unbilled hours grouped by account - the month-end Excel ritual as one command.
kaseya-bms-cli pipeline --agent
Opportunities by stage with weighted value and slipped-close flags, computed over the synced mirror.
BMS uses short-lived JWTs. Set KASEYA_BMS_USERNAME, KASEYA_BMS_PASSWORD, and KASEYA_BMS_TENANT (your company name from My Settings in BMS), then run kaseya-bms-cli auth login to exchange them for a token - it is stored locally and sent as a Bearer header on every call. If you already have a JWT, set KASEYA_BMS_TOKEN directly. Regional tenants set KASEYA_BMS_BASE_URL (https://api.bms.kaseya.com is the default; EMEA uses https://api.bmsemea.kaseya.com, APAC https://api.bmsapac.kaseya.com, legacy Vorex https://api.vorexlogin.kaseya.com). API users with MFA pass --mfa-code at login.
Run kaseya-bms-cli doctor to verify setup.
Add --agent to any command. Expands to: --json --compact --no-input --no-color --yes.
Pipeable - JSON on stdout, errors on stderr
Filterable - --select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
kaseya-bms-cli project get <id> --agent --select id,name,status
Previewable - --dry-run shows the request without sending
Offline-friendly - sync/search commands can use the local SQLite store when available
Non-interactive - never prompts, every input is a flag
Explicit retries - use --idempotent only when an already-existing create should count as success, and --ignore-missing only when a missing delete target should count as success
Commands that read from the local store or the API wrap output in a provenance envelope:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
Parse .results for data and .meta.source to know whether it's live or local. A human-readable N results (live) summary is printed to stderr only when stdout is a terminal AND no machine-format flag (--json, --csv, --compact, --quiet, --plain, --select) is set - piped/agent consumers and explicit-format runs get pure JSON on stdout.
When you (or the agent) notice something off about this CLI, record it:
kaseya-bms-cli feedback "the --since flag is inclusive but docs say exclusive"
kaseya-bms-cli feedback --stdin < notes.txt
kaseya-bms-cli feedback list --json --limit 10
Entries are stored locally at ~/.local/share/kaseya-bms-cli/feedback.jsonl. They are never POSTed unless KASEYA_BMS_FEEDBACK_ENDPOINT is set AND either --send is passed or KASEYA_BMS_FEEDBACK_AUTO_SEND=true. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Every command accepts --deliver <sink>. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
| Sink | Effect |
|---|---|
stdout | Default; write to stdout only |
file:<path> | Atomically write output to <path> (tmp + rename) |
webhook:<url> | POST the output body to the URL (application/json or application/x-ndjson when --compact) |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
kaseya-bms-cli profile save briefing --json
kaseya-bms-cli --profile briefing project get <id>
kaseya-bms-cli profile list --json
kaseya-bms-cli profile show briefing
kaseya-bms-cli profile delete briefing --yes
Explicit flags always win over profile values; profile values win over defaults. agent-context lists all available profiles under available_profiles so introspecting agents discover them at runtime.
For endpoints that submit long-running work, the generator detects the submit-then-poll pattern (a job_id/task_id/operation_id field in the response plus a sibling status endpoint) and wires up three extra flags on the submitting command:
| Flag | Purpose |
|---|---|
--wait | Block until the job reaches a terminal status instead of returning the job ID immediately |
--wait-timeout | Maximum wait duration (default 10m, 0 means no timeout) |
--wait-interval | Initial poll interval (default 2s; grows with exponential backoff up to 30s) |
Use async submission without --wait when you want to fire-and-forget; use --wait when you want one command to return the finished artifact.
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 4 | Authentication required |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Parse $ARGUMENTS:
help, or --help → show kaseya-bms-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)go install github.com/mvanhorn/printing-press-library/library/project-management/kaseya-bms/cmd/kaseya-bms-mcp@latest
claude mcp add kaseya-bms-mcp -- kaseya-bms-mcp
claude mcp listwhich kaseya-bms-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:
kaseya-bms-cli <command> [subcommand] [args] --agent
kaseya-bms-cli <command> --help.Alternatives
coreyhaines31/marketingskills
When the user wants to figure out which marketing actually drives conversions and revenue, choose or interpret an attribution model, or reconcile conflicting numbers across tools. Also use when the user mentions "attribution," "attribution model," "first-touch vs last-touch," "multi-touch," "which channel drives revenue," "what's my real CAC," "my dashboards disagree," "Google/Meta says X but GA says Y," "media mix model," "MMM," "incrementality," "geo lift," "holdout test," "how did you hear ab
MoizIbnYousaf/marketing-cli
Generate enriched ICP-based lead lists with Exa Agent, including structured scoring and CSV output. Use when generating leads, building prospect lists, finding companies to sell to, outbound research, or ICP-based company discovery. Triggers on leads, lead gen, prospect list, find companies, ICP, outbound list. Distinct from lead-magnet (content asset that captures emails).
coreyhaines31/marketingskills
When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes. Also use when the user mentions 'RevOps,' 'revenue operations,' 'lead scoring,' 'lead routing,' 'MQL,' 'SQL,' 'pipeline stages,' 'deal desk,' 'CRM automation,' 'marketing-to-sales handoff,' 'data hygiene,' 'leads aren't getting to sales,' 'pipeline management,' 'lead qualification,' or 'when should marketing hand off to sales.' Use this for anything involving the systems and proc
K-Dense-AI/scientific-agent-skills
Zero-shot time series forecasting with Google's TimesFM foundation model. Use for any univariate time series (sales, sensors, energy, vitals, weather) without training a custom model. Supports CSV/DataFrame/array inputs with point forecasts and prediction intervals. Includes a preflight system checker script to verify RAM/GPU before first use.