find-contact
Resolve a 3CX contact or extension by email, extension, or name
Get a ConnectWise CPQ quote with its tabs, line items, customers, and terms
$ npx -y skills add wyre-technology/msp-claude-plugins --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
/get-quoteContext preview
What this command does when you run it.
Get a ConnectWise CPQ quote with its tabs, line items, customers, and terms
description: Get a ConnectWise CPQ quote with its tabs, line items, customers, and terms argument-hint: "<id_or_number> [version]" arguments: [id_or_number, version]
1. **Resolve to a GUID.**
`version` (`latest` unless a version was named), then take `id` from the result. With no `version`, list the versions and ask which one.
2. **Fetch the quote** with `cpq_get_quote` using the GUID. This returns the full QuoteView and renders the quote card.
3. **Fetch the sections** with `cpq_search_quote_tabs`, `conditions=idQuote = "<guid>"`.
4. **Fetch the line items** with `cpq_search_quote_items`, `conditions=idQuote = "<guid>"`, `includeFields=id,idQuoteTabs,description,mfgPartNumber,quantity,basePrice,extendedPrice,cost,isOptional`, `pageSize=100`, paging until short.
5. **Fetch customers and terms** with `cpq_list_quote_customers` and `cpq_list_quote_terms` for the quote GUID.
6. **Display** the header (number/version, name, account, status flags, dates), then line items grouped by tab, then totals (`subtotal`, `tax`, `quoteTotal`, `grossMargin`), then the customer contacts and any payment terms. Mark optional lines — they are excluded from `quoteTotal`.
/get-quote id_or_number=1042 version=latest
/get-quote id_or_number=3f1c8d2e-1b44-4a90-9f6a-1d0f2e5b7c11
| Error | Resolution | |-------|------------| | 404 on the GUID | The GUID addresses one version — it may have been superseded or deleted; look it up by quote number | | No line items returned | The quote may genuinely be empty, or the condition was built with an unquoted GUID — `idQuote` needs double quotes | | 401 | Verify credentials and that the key owner is an API user |
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai
Repo: wyre-technology/msp-claude-plugins
Resolve a 3CX contact or extension by email, extension, or name
Search for specific threat patterns in Abnormal Security by sender, recipient, attack type, or keywords
Triage recent email threats detected by Abnormal Security by severity and attack type