account-hygiene
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
ConnectWise PSA procurement and stock through Conduit: purchase orders and their line items, sales orders and their products, procurement product items placed on tickets/projects/opportunities, warehouses and bins, inventory on hand, and the three-step inventory adjustment
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill procurement --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill procurement -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill procurement -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill procurement -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill procurement -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill procurement -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill procurement -a windsurf -y
name: "ConnectWise PSA Procurement and Inventory" description: > ConnectWise PSA procurement and stock through Conduit: purchase orders and their line items, sales orders and their products, procurement product items placed on tickets/projects/opportunities, warehouses and bins, inventory on hand, and the three-step inventory adjustment (cw_create_adjustment, cw_add_adjustment_detail, cw_close_adjustment). when_to_use: >- When reviewing open purchase or sales orders, checking what has been received, reconciling stock, or writing off inventory in ConnectWise PSA (Manage). Use when: purchase order, po status, sales order, procurement, items not received, inventory on hand, warehouse bin, stock adjustment, write off stock, or connectwise procurement.
Procurement in ConnectWise PSA has a sell side (sales orders and the procurement product items placed on tickets, projects, opportunities and sales orders) and a buy side (purchase orders to distributors such as Ingram or TD SYNNEX). Received stock lands in warehouse bins. Through Conduit the reads are all `read` tier; creating an adjustment is `write`; **posting** it, which actually moves stock, is `admin`.
| Tool | Tier | Purpose | |------|------|---------| | `cw_search_purchase_orders` / `cw_get_purchase_order` | read | Buy-side POs (`conditions` such as `closedFlag = false`, `vendorCompany/name = 'Ingram'`) | | `cw_get_purchase_order_items` | read | PO lines: unit and extended cost, quantity received, receipt status (`purchaseOrderId`) | | `cw_search_sales_orders` / `cw_get_sales_order` | read | Sell-side sales orders | | `cw_get_sales_order_products` | read | Products on a sales order | | `cw_search_procurement_products` / `cw_get_procurement_product` | read | Catalog items placed on a ticket, project, sales order or opportunity, with their own price, cost and margin | | `cw_list_warehouses` / `cw_list_warehouse_bins` | read | Where stock lives | | `cw_get_inventory_on_hand` | read | Every catalog item with non-zero stock, one row per bin (negative balances included). Pass `warehouseId` — scanning every bin is slow | | `cw_list_adjustment_types` / `cw_get_adjustment` | read | Adjustment types and existing adjustments | | `cw_create_adjustment` | write | Adjustment header (`identifier`, `typeId`, `reason`); moves no stock | | `cw_add_adjustment_detail` | write | One signed line (`quantityAdjusted` negative removes stock) per item and bin | | `cw_close_adjustment` | admin | **Posts** the adjustment: applies every line to on-hand. Irreversible except by a counter-adjustment |
All search tools take ConnectWise `conditions` syntax, `orderBy`, `page` and `pageSize` (max 1000). Date literals go in square brackets in UTC: `poDate > [2026-01-01T00:00:00Z]`.
1. `cw_search_purchase_orders` with `conditions: "closedFlag = false"`, ordered by `poDate desc`. 2. For each PO, `cw_get_purchase_order_items` and compare quantity ordered with quantity received. 3. Report per vendor: open POs, lines not yet received, and their extended cost. Old open lines are usually either back-ordered or received without being marked.
1. `cw_search_procurement_products` for items on open tickets or projects (`conditions` on the parent and a not-yet-purchased state). 2. Cross-check against open POs. Items with no PO line are the procurement backlog.
1. `cw_list_warehouses`, then `cw_get_inventory_on_hand` with `warehouseId` (and `catalogItemId` to narrow). 2. Compare with the physical count the user supplies. Negative balances are the usual sign of a missed receipt. 3. Draft the adjustment and show it: header (`identifier`, `typeId` from `cw_list_adjustment_types`, `reason`) and every line (item, warehouse, bin, signed quantity). 4. After approval: `cw_create_adjustment`, then `cw_add_adjustment_detail` per line. Leave `unitCost` unset for a write-off so ConnectWise applies average cost. If any detail call fails or times out, stop: read the draft back with `cw_get_adjustment`, reconcile its lines against the approved list (missing or duplicated lines), and fix them before going on. Never ask to close a draft that is partial or has duplicate lines. 5. `cw_close_adjustment` only after a second, explicit approval. It is the step that moves stock, and it is `admin` tier.
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: wyre-ai.github.io/msp-claude-plugins
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
1Password MCP fundamentals through Conduit: the region plus two independent credential halves (Events Reporting token, Users API…
How to review a departing or departed user's 1Password footprint with the read-only tools: confirm the seat is suspended, find…
Triage of 1Password sign-in attempts for one client account: pulling the sign-in feed over a window, grouping failures by user,…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership,…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.