api-patterns
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com),…
The quote-to-close handoff chain — a Pax8/Sherweb/Kaseya Quote Manager quote or SalesBuildr proposal, through a PandaDoc document's sent/viewed/signed status, to a closed-won CRM deal — and the four distinct stall points along it (quote built with no proposal document, proposal
$ npx -y skills add wyre-technology/msp-claude-plugins --skill quote-to-close-tracking --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/quote-to-close-trackingContext preview
The summary Claude sees to decide when to auto-load this skill.
The quote-to-close handoff chain — a Pax8/Sherweb/Kaseya Quote Manager quote or SalesBuildr proposal, through a PandaDoc document's sent/viewed/signed status, to a closed-won CRM deal — and the four distinct stall points along it (quote built with no proposal document, proposal
name: "Quote-to-Close Tracking" description: > The quote-to-close handoff chain — a Pax8/Sherweb/Kaseya Quote Manager quote or SalesBuildr proposal, through a PandaDoc document's sent/viewed/signed status, to a closed-won CRM deal — and the four distinct stall points along it (quote built with no proposal document, proposal sent but not opened, viewed but not signed, signed but the CRM deal never marked closed-won), including cross-system record matching and what to report when only part of the chain is connected. when_to_use: >- When connecting the dots across the full quote lifecycle — from a distributor quote or SalesBuildr proposal, through a PandaDoc document, to a closed-won CRM deal — to find exactly where a deal has stalled in the handoff chain. Use when: quote to close, where is this deal stuck, proposal status, quote status, deal not closing, follow up on quote, follow up on proposal, PandaDoc status, quote sent but no proposal.
A deal doesn't close in one system — it moves through a chain of handoffs, and MSP quote-to-close chains stall at the seams between tools far more often than within any single tool. A rep quotes hardware or licensing in a distributor or quoting tool, turns that into a client-facing proposal in PandaDoc, and is supposed to mark the CRM deal closed-won once it's signed. Any one of those handoffs can silently drop: a quote gets built but nobody ever sends the proposal, a proposal sits opened-but-unsigned for three weeks, or — most commonly — a proposal gets signed and the CRM deal just never gets updated, so it keeps showing as open in every pipeline report.
This skill's job is narrow and specific: given a deal (or a full sweep), walk the chain and name the exact stage it's stuck at, not just "this deal seems stale." That distinction matters because the fix is different at every stage — chasing a rep to build a proposal is a different action than following up with a client who hasn't opened their inbox.
proposal from a template, or sending a document for signature is each tool's own surface; use `pandadoc-documents`, `connectwise-cpq-quotes`, `kaseya-quote-manager-quotes`, `salesbuildr-quotes`, or `scalepad-quoter`.
transition errors live in `pandadoc-documents`; this skill uses that status only to locate a stall in the chain.
Quote Proposal Document CRM Deal
(Pax8 / Sherweb / (PandaDoc) (HubSpot, or
Kaseya Quote whatever CRM
Manager / SalesBuildr) is connected)
[quote built] ──────▶ [document created] ──────▶ [deal exists, open]
│
├─▶ [sent]
│ │
│ ├─▶ [viewed]
│ │ │
│ │ └─▶ [signed] ──────▶ [deal marked
│ │ closed-won]
│ │
│ └─ (not viewed — stuck here)
│
└─ (not sent — stuck here)Four distinct stall points, in the order a deal should pass through them:
1. **Quote built, no proposal document yet** — a quote/estimate exists in the distributor or quoting tool, but no corresponding PandaDoc document has been created. The handoff from quoting to proposal drafting never happened. 2. **Proposal sent, not opened** — a PandaDoc document has been sent to the recipient but its status has not progressed past `sent` (no `viewed` timestamp). The client hasn't engaged with it at all. 3. **Proposal viewed, not signed** — the document shows a `viewed` (or multiple `viewed`) event but no `completed`/`signed` status. The client opened it and didn't act — the most common place for a deal to go quiet, because it looks like progress happened but nothing is actually moving. 4. **Signed, but CRM deal not marked closed-won** — the PandaDoc document status is `completed`, but the associated CRM deal is still showing as open (or in a pre-closed-won stage). This is a pure data-hygiene stall — the sale is done, but pipeline reporting doesn't know it yet, which pollutes every pipeline-health read until it's corrected.
This skill is inherently cross-vendor by construction — it composes across up to four tool families. Never assume all of them are connected. Before tracing any chain:
1. Call `conduit__search_tools` to discover which of the following are live for this org: a CRM (e.g. `hubspot__*`), a proposal tool (`pandadoc__*`), and a quoting/distribution tool (`pax8__*`, `sherweb__*`, `salesbuildr__*`, or a Kaseya Quote Manager tool surface). 2. Scope the trace to whatever subset is actually connected — see Graceful Degradation below for exactly what to report when a link in the chain is missing. 3. Never guess a tool name speculatively; an unrecognized tool call is worse than stating a vendor family isn't connected.
1. Discover connected tools (see above). 2. Starting from the CRM deal (or the quote, if entering from that end), resolve the linked quote and/or PandaDoc document — match by client/ company name, deal name, or an explicit cross-reference field if one exists (e.g. a PandaDoc document tagged with the CRM deal ID, or a quote number referenced in deal notes). If no explicit link exists, match by company name and approximate value/date, and say so — this is a best-effort match, not a guaranteed one. 3. Pull the quote status, PandaDoc document status (and its status timestamps: se
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
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com),…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership, and forwarding/presence…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks, searching contacts synced from an…
3CX's system-and-configuration surface: server time, PBX event log and application log search, service status, database schema and the read-only SELECT-only…
Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and judgments, the case lifecycle, bulk and remediation actions, and…
Abnormal Security message analysis: message retrieval, email header inspection, attachments, sender reputation, delivery context, and SPF/DKIM/DMARC…