api-patterns
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its…
Maps abstract PSA/ticketing operations (list new tickets, get ticket detail, update priority + status, list statuses, list priorities) to concrete Conduit tool names for Autotask, HaloPSA, and ConnectWise PSA.
$ npx -y skills add wyre-ai/msp-claude-plugins --skill psa-tool-map --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/psa-tool-mapContext preview
The summary Claude sees to decide when to auto-load this skill.
Maps abstract PSA/ticketing operations (list new tickets, get ticket detail, update priority + status, list statuses, list priorities) to concrete Conduit tool names for Autotask, HaloPSA, and ConnectWise PSA.
name: "PSA Tool Map" description: > Maps abstract PSA/ticketing operations (list new tickets, get ticket detail, update priority + status, list statuses, list priorities) to concrete Conduit tool names for Autotask, HaloPSA, and ConnectWise PSA. when_to_use: >- Fetched by another advanced-workflow skill that needs PSA access, never used standalone. Use when: PSA tool names, Autotask tools, HaloPSA tools, ConnectWise PSA tools, ticket status IDs, ticket priority IDs.
This role is curated for: Autotask, HaloPSA, ConnectWise PSA. A connected PSA not listed here needs guided discovery: inspect the org's available tools for that connector, reason from naming and shape, and tell the human this vendor isn't fully vetted yet.
| Abstract operation | Autotask | HaloPSA | ConnectWise PSA | |---|---|---|---| | List new/untriaged tickets | `autotask__autotask_search_tickets` | `halopsa__halopsa_tickets_list` | `connectwise-psa__cw_search_tickets` | | Get ticket detail | `autotask__autotask_get_ticket_details` | `halopsa__halopsa_tickets_get` | `connectwise-psa__cw_get_ticket` | | Update ticket (priority/status/etc.) | `autotask__autotask_update_ticket` | `halopsa__halopsa_tickets_update` | `connectwise-psa__cw_update_ticket` | | Add a ticket note/action | `autotask__autotask_create_ticket_note` | `halopsa__halopsa_tickets_add_action` | `connectwise-psa__cw_add_ticket_note` | | List valid ticket statuses (discover once, don't call per-run) | `autotask__autotask_list_ticket_statuses` | no dedicated list tool observed — confirm via `halopsa__halopsa_tickets_list` field values before baking in IDs | `connectwise-psa__cw_list_statuses` | | List valid ticket priorities (discover once, don't call per-run) | `autotask__autotask_list_ticket_priorities` | no dedicated list tool observed — confirm via ticket field values before baking in IDs | `connectwise-psa__cw_list_priorities` |
by name, never assume numeric ordering.
build time, never hardcode across tenants.
enough to hit the 60-second tool timeout. Discover once, bake the IDs into the routine prompt.
vendor's observed tool surface — confirm the actual field values by reading a sample ticket via `halopsa_tickets_get` before baking any ID into a routine, don't assume symmetry with Autotask's shape.
verified against `connectwise/manage/GOVERNANCE.md`'s `VENDOR_TOOL_CONFIG` listing, registered under the gateway slug `connectwise-psa` (so gateway names are `connectwise-psa__cw_*`, e.g. `connectwise-psa__cw_search_tickets`).
pass `internalAnalysisFlag: true` explicitly for an internal-only note, or an agent's internal analysis gets emailed to the contact immediately. There is no delete-note tool to undo a mistaken send.
raw JSON Patch, so `op: "remove"` can strip a field outright). Closing stops the SLA clock and can fire close notifications/satisfaction surveys, and Conduit's access tiers gate the whole tool at `write` regardless of which field the patch touches — there's no way to allow priority/owner patches while blocking status/closure patches at the gateway level. Treat `cw_update_ticket` as requiring a named human approver per invocation; never grant it to unattended/nightly automation.
`resolution` field, or the patch fails with an error that reads like a permissions failure rather than a workflow-ordering one.
same ConnectWise API member — a wide `cw_search_*` discovery sweep by one routine can 429 everyone else's concurrent calls.
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…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail,…
3CX's read-only directory surface: resolving a caller by email or by exact extension,…
3CX's system-and-configuration surface: server time, PBX event log and application log…
Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and…
Abnormal Security message analysis: message retrieval, email header inspection, attachments,…