ConnectWise PSA (Manage) + AI in 60 seconds

Unofficial. Community-built Claude Code Skill and MCP server for the ConnectWise Manage API. Not affiliated with, endorsed by, or sponsored by ConnectWise, LLC.

Awaiting live verification - passes every mechanical gate (build, command-surface, claims, install). Be the first to confirm it against your tenant: report it works.

MSPs run ConnectWise PSA (Manage) as the system of record - tickets, time, agreements, billing. Ask your AI “what’s rotting on the board,” “which closed tickets have no time logged,” or “how burned is that block-hours agreement,” and get answers the portal can’t compose: cross-entity joins across tickets, time, agreements, and configurations, computed offline from a local mirror in one query instead of five portal screens and an Excel export.

New to the term? An MCP server is the same thing ChatGPT calls an app or connector, Claude on the web calls a connector, and Claude Code calls a Skill. One thing, many names →

Install in 60s →   View on GitHub →

Instead of clicking through ConnectWise PSA (Manage), just ask

Instead of Exporting closed tickets and time entries to Excel before the invoice run and VLOOKUP-ing which ones have no hours logged against them just ask: “Which tickets did we close this week with no time logged?” Your agent runs: connectwise-manage-cli unbilled --since 7d

Instead of Opening the board, sorting by last-update, and eyeballing which tickets have sat untouched while the SLA clock runs just ask: “What’s gone stale on the Help Desk board in the last three days?” Your agent runs: connectwise-manage-cli stale --days 3 --board "Help Desk"

Instead of Clicking through contacts, agreements, configurations, and open tickets across five portal screens to prep one client call just ask: “Give me the full picture on Acme Corp before my 2 o’clock” Your agent runs: connectwise-manage-cli account AcmeCorp

See it in 30 seconds

Demo data is simulated. Every command shown exists in the real CLI.

What it does

Question your MSP keeps asking Command your agent runs
Which tickets did we touch this week that have zero time logged against them? connectwise-manage-cli unbilled --since 7d
Which clients are about to blow through their block-hours agreement? connectwise-manage-cli agreement-burn --period 30d
What does the Help Desk board look like right now - age, owner, priority? connectwise-manage-cli board "Help Desk"
Which open tickets has nobody touched in five days? connectwise-manage-cli stale --days 5
Who has bandwidth for the next ticket? connectwise-manage-cli workload
Which tickets are sitting unassigned on the board? connectwise-manage-cli board "Help Desk" --unassigned
Everything we know about one client - contacts, agreements, configurations, open tickets? connectwise-manage-cli account AcmeCorp
Write me a valid conditions filter for open Help Desk tickets connectwise-manage-cli condition build --field board/name --op = --value "Help Desk" --field closedFlag --op = --value false

Full command reference at github.com/servosity/msp-skills/blob/main/skills/connectwise-manage/guide.md.

What makes this one different

Most ConnectWise Manage integrations and MCP servers proxy every question into a live API call - fine for one ticket, but an aggregate question becomes a multi-call dance the AI burns context on, each call gated by the strict conditions syntax where one wrong quote returns silently empty results. This skill syncs the PSA into a local SQLite mirror with full-text search, so cross-entity questions (unbilled work, agreement burn, account 360) become one local join: instant, offline, and the AI sees the answer, not pages of raw JSON.

It complements ConnectWise’s own AI features rather than replacing them: the portal stays best for in-app workflows, while this skill brings the PSA to whichever agent you already use and answers the cross-entity questions - tickets joined to time joined to agreements - that no single portal screen or API call composes.

The pain this closes

Install

Works in any of these agents - pick yours:

Agent Quick install
Claude Desktop Step-by-step →
ChatGPT (Plus/Pro+) Step-by-step →
Claude Code Step-by-step →
Codex CLI Step-by-step →
Cursor, Windsurf, Cline, Continue, Zed, Copilot, Gemini, Hermes, OpenClaw Which agent? →

Quickest path for everyone else (terminal):

macOS / Linux:

bash <(curl -fsSL https://raw.githubusercontent.com/servosity/msp-skills/main/skills/connectwise-manage/install.sh)

Windows (PowerShell):

iwr -useb https://raw.githubusercontent.com/servosity/msp-skills/main/skills/connectwise-manage/install.ps1 | iex

After install, authenticate once with your ConnectWise PSA (Manage) credentials, then verify with connectwise-manage-cli --version.

Safety model

Tier Examples Recommended agent policy
Read connectwise-manage-cli stale –days 5; connectwise-manage-cli board “Help Desk”; connectwise-manage-cli unbilled –since 7d; connectwise-manage-cli account AcmeCorp; connectwise-manage-cli agreement-burn; connectwise-manage-cli workload; connectwise-manage-cli search “vpn outage” Allow
Write (routine) connectwise-manage-cli time post-entries (log time); connectwise-manage-cli service post-tickets (create a ticket); connectwise-manage-cli service patch-tickets-by-id (update status or owner); connectwise-manage-cli company patch-companies-by-id - writes send immediately; –dry-run is an opt-in preview, not a default Preview with –dry-run, then a reviewed write
Destructive / config connectwise-manage-cli service delete-tickets-by-id; connectwise-manage-cli company delete-companies-by-id; connectwise-manage-cli company delete-configurations-by-id Human-in-the-loop only

The skill drives the connectwise-manage-cli and connectwise-manage-mcp binaries, authenticating with API Member keys read from the environment (CW_COMPANY_ID, CW_PUBLIC_KEY, CW_PRIVATE_KEY, CW_CLIENT_ID) - never logged and never sent anywhere except your ConnectWise Manage instance. Read commands (boards, cross-entity views, search, reports) can change nothing. Writes are not gated by default: –dry-run is an opt-in preview flag, so the recommended policy is an agent-level rule - preview with –dry-run, show the exact command, get approval, then run the write. Keep delete and member-administration commands human-only. The strongest control is the security role on the API Member you create. Full details in governance.md.

Frequently asked questions

Does this work with ChatGPT?

Yes, on paid ChatGPT plans. ChatGPT connects to remote MCP servers over HTTPS, so you expose the local ConnectWise Manage MCP server via a secure bridge. Step-by-step in the install guide.

Do I need to know how to code?

No. Paste one sentence into Claude Code or Codex and your agent does the install, or run a one-line installer. You enter your credentials once.

Is my ConnectWise Manage data safe?

Your data stays on your machine. The CLI, MCP server, and the local mirror are all local. The AI sees query results, not raw bulk data, and credentials are never bundled or transmitted by MSP Skills.

What does it cost?

Free. Apache-2.0 licensed. You pay only for whichever AI agent you already use.

Will this hit my ConnectWise API rate limits?

The local mirror exists so reads stop hitting the API. After the first sync, the cross-entity views (unbilled, account, agreement-burn, board, stale, workload) run against local SQLite with zero API calls. Live calls respect a –rate-limit throttle, and sync is incremental - it only fetches what changed since the last checkpoint.

Is this for ConnectWise PSA or ConnectWise Manage?

Same product - ConnectWise renamed Manage to ConnectWise PSA. This skill targets the Manage REST API (v4_6_release/apis/3.0), which is the API both names refer to. It does not cover ConnectWise Automate - that is a separate product with a separate API.

What credentials do I need?

An API Member with public/private keys from your own Manage instance, plus a clientId from the ConnectWise developer portal. Set CW_COMPANY_ID, CW_PUBLIC_KEY, CW_PRIVATE_KEY, and CW_CLIENT_ID in your environment; CW_SITE selects your region or on-prem host. The API Member’s security role is the real permission boundary - scope it to what you want the AI to reach.

Does it work with on-premises ConnectWise Manage?

Yes. CW_SITE accepts your own server’s hostname as well as the cloud region hosts; the CLI builds the standard v4_6_release/apis/3.0 base URL either way.

Status

Beta. Validated against the ConnectWise PSA (Manage) API surface and being validated with MSPs running it live against their own production tenants in our weekly Build Sessions.


Standards. Conforms to the open Agent Skills spec (Anthropic, Dec 2025; 40+ agents). MCP-compatible - works with any MCP-capable agent including Hermes. OpenClaw-ready (frontmatter pre-wired, awaiting OpenClaw launch).

Maintained by Servosity for the MSP community. Apache-2.0 licensed. Built with CLI Printing Press.