npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@pulsatrix/connectwise-mcp

v0.0.9

Published

ConnectWise MCP server for LLM agents — Claude, local Qwen via LM Studio, Cursor, Codex. PSA Lite free read-only desk + full PSA/RMM tool calling with human approval. Self-hosted, BYOM. Private beta (public soon): pulsatrix.ca

Readme

Pulsatrix — ConnectWise MCP

npm Private beta Public beta soon PSA Lite free Local-first Rust MCP BYOM AI agent

Pulsatrix - ConnectWise MCP Server for LLM Agents & MSP AI

Private beta is live — and deliberately limited. We onboard a small number of ConnectWise MSPs at a time so every install stays solid. Public beta ships very soon (broader access, same local-first host). Apply now at pulsatrix.ca if you want an early seat; otherwise watch this package and the site for the public-beta cut.

PSA Lite (free, forever) is the on-ramp: a read-only ConnectWise Manage desk surface — 11 job-shaped tools, no credit card, no seat meter. Run it on your board today; unlock writes, human approval gates, and the full plugin set when you upgrade.

Hand the busywork to AI. Keep the final call.

Self-hosted Model Context Protocol (MCP) for ConnectWise MSPs. This MCP is the AI gateway between your LLM (Claude, GPT-class APIs, Qwen and other open local models via LM Studio, Grok-class clients where you wire MCP, and more) and the stack that runs your desk: ConnectWise Manage (PSA), ConnectWise RMM (Asio), ScreenConnect, Sell / CPQ, Axcient x360Recover, SentinelOne, plus optional Apple Mail.

Not another locked chatbot

They ship a chat box inside their product. You bring the AI you already use — Claude, Codex, Grok, local Qwen, Cursor, whatever MCP client you live in — and wire it into ConnectWise with writes you approve.

Run Claude, Codex, or Grok on real MSP work: tickets, time, dispatch, RMM, backup health — not a demo sandbox glued to one vendor’s model.

Not an unsupervised autonomous IT engineer. Not a cloud SaaS that becomes a second tenant of your PSA. Not a thin OpenAPI-to-MCP dump with a wall of logos. AI proposes. Tool calling runs through policy. You approve what matters.

npm is the public product surface today (docs + positioning). Runtime binaries ship through approved beta channels now; broader install (including the free PSA Lite path) follows with public beta.

Our story

AI was supposed to buy you hours back.

At first,

You try Microsoft Copilot or N8n
You move to ChatGPT / GPT. Then Claude (Opus / Sonnet).
You try local LLMsQwen, Llama-class, whatever reddit is trending.
You wire an automation. You spin up an AI agent with function calling / tool calling.
You show the team. Everyone sees agentic AI potential.

Then reality boards the plane

| The question nobody budgeted | What it really is | |---|---| | Who maintains the agents and MCP configs? | Platform work | | Who explains LLM limits and hallucinations? | Trust & training | | Who chooses Claude vs GPT vs local Qwen? | Model architecture | | Who owns API keys, PII, client data, cost? | AI governance | | Who answers when the agent breaks at 4:55 p.m.? | You |

Your service desk, time entry, and client work did not disappear.

The truth about LLM ROI

Large language models and AI agents save time only when they are structured.

Without governance, process, and a clear control plane for where the model may call tools, “AI” is a new layer of work: prompt debt, connector debt, security debt, etc…

Why Pulsatrix

We built Pulsatrix inside a real ConnectWise MSP because that story was ours.

We didn’t need a chatbot. We are not looking into becoming humainless with “autonomous tech” you cannot fully own or trust. We don’t want fifty shallow MCP integrations for all tool that possibily exists.

We focus on the stack that we believe is optimal and used by most of the MSP. Without reinventing the wheel. Why not simply use a very good MCP with your existing subscriptions or your local hardware with deep tool-calling surface on ConnectWise, human-in-the-loop customizable.

What Pulsatrix is (MCP + LLM + MSP)

Pulsatrix is a self-hosted MCP server / AI gateway:

  1. Your MCP client (Claude Code, Claude Desktop, LM Studio, Cursor, …) talks MCP.
  2. Your LLM does reasoning and tool selection (function calling).
  3. The Pulsatrix host discovers tools, applies risk policy, runs approval, holds credentials, dispatches to domain modules.
  4. ConnectWise and adjacent systems execute only what policy allows.
  LLM + MCP client                    ConnectWise-centered stack
  Claude · GPT APIs · Qwen/local      PSA · RMM · SC · CPQ · x360 · S1 · …
  Cursor · Codex · VS Code · …                  ▲
         │  Model Context Protocol              │
         ▼                                      │
   ┌────────────────────────────────────────────┴─┐
   │              PULSATRIX (MCP host)              │
   │  tools/list · risk class · human approval      │
   │  keychain custody · signed modules · license   │
   └────────────────────────────────────────────────┘

We do not sell tokens. We do not mark up Anthropic, OpenAI, Google, xAI, or your local GPU. BYOM — bring your own model.

Works with your AI stack

MCP clients with first-class connect adapters

Wired in the host (detect / register / disconnect — product code, not marketing guesswork):

| MCP client | Role | |---|---| | Claude Desktop | Anthropic desktop app — smoothest path for many MSPs | | Claude Code | CLI / agentic coding & ops workflows | | LM Studio / Bionic / oMLX, etc | Local LLM host — Qwen, Llama-class, and other GGUF/MLX models you load | | Cursor | AI IDE with MCP tool calling | | Copilot | Microsoft client | | VS Code | MCP via editor integration | | Codex CLI | OpenAI Codex-style CLI MCP (TOML config adapter) |

Any other MCP-compatible client that can spawn a local stdio MCP server can point at Pulsatrix with a standard config snippet. Primary private-beta path is local stdio. For multi-role setups and web/remote-style clients, see Agent profiles & Streamable HTTP below.

Models & providers (bring your own API or Subscriptions)

| Class | Honest guidance | |---|---| | Claude Mythos (Fable), Opus / Sonnet (Anthropic) | Best overall results on complex multi-step MSP tool use | | GPT-class / Codex (OpenAI APIs via your client) | Supported as your model behind an MCP client — we are not OpenAI | | Gemini (Google) | Use via any MCP client that hosts Gemini; not a separate Pulsatrix model SKU | | Grok (xAI) | Usable where your client exposes MCP + a Grok-backed model; advanced remote connector dogfood documented for operators | | Qwen and other open weights | Run locally (e.g. LM Studio); size plugin load so the tool surface fits ~30B-class attention budgets | | Copilot-era experiments | Many teams start there; Pulsatrix is the control plane when you outgrow tab chaos |

Operator-owned tool budget: small local LLMs degrade when tools/list is huge. Load fewer domain modules for Qwen-class locals; load more for Claude-class frontier models. That is a product principle, not a hidden cap.

Agent profiles & Streamable HTTP MCP

MSP desks rarely need one mega-agent with every plugin loaded. They need HR, dispatch, billing QC, or a read-only desk brief — each with its own tool surface, credentials, and client entry. That is Profile mode.

What a profile is

An agent profile is the composition + credential-scoping layer for one MCP agent under a single trusted MSP install:

| Profiles do | Profiles do not | |---|---| | Allowlist plugins (and optional tool narrowing) so tools/list matches the job | Replace separate OS users for mutually distrustful tenants | | Scope vendor credentials per profile in the OS keychain | Store secrets in profile TOML (never) | | Bind each MCP client entry to serve --profile <id> | Let the model switch profile at runtime | | Bind the optional local HTTP listener to one profile for the process lifetime | Soften approval policy (gates stay install-global) |

Hard rule: one process = one profile. The host selects the profile at start and does not rebind mid-session. Concurrency means more processes (one stdio entry or one HTTP listener each) — not a shared soup of roles in a single process.

Typical setup:

  Claude Desktop entry "pulsatrix-hr"       →  serve --profile hr
  Claude Desktop entry "pulsatrix-dispatch" →  serve --profile dispatch
  HTTP Streamable listener (opt-in)         →  transport.toml profile = "hr"

Each entry is an isolated session path: its own process, its own plugin/tool allowlist, its own keychain-scoped credentials. HR cannot “accidentally” call RMM tools you never allowlisted on that profile.

Streamable HTTP (local MCP over HTTP)

Beside stdio, Pulsatrix ships an opt-in MCP Streamable HTTP transport (spec 2025-06-18 — single endpoint POST/GET on /mcp, stateful sessions via Mcp-Session-Id). Same host choke-point as stdio: risk class, human approval, license, and profile admission.

| Property | Behavior | |---|---| | Bind | 127.0.0.1 only — never a public interface by default | | Auth | Bearer token in the OS keychain, per profile | | Profile binding | One HTTP serve process ↔ one profile (set in transport.toml) | | Localhost gate | Profile must explicitly allow a local listener (fail-closed when off) | | Sessions | Spec-native Streamable sessions — each client connection gets its own MCP session over the shared bound profile; stop the listener to tear them all down | | Default | Off — enable is an explicit operator action |

Use it when a client speaks HTTP MCP (playground, advanced web connectors, or a remote front you control) while keeping the control plane local-first. Remote multi-user / IdP tunnels are a later surface; do not confuse “local Streamable HTTP” with “public multi-tenant SaaS MCP.”

Why this matters for MSP AI

| Pain without profiles | With Profile mode | |---|---| | One agent sees the full entitled tool wall | Each role gets a job-shaped surface (smaller context, fewer hallucinated writes) | | Shared ConnectWise key for every chat window | Vendor-scoped keys stored per profile (least privilege at the API) | | “Which Claude entry is this?” | Named entries: pulsatrix-hr, pulsatrix-dispatch, … | | HTTP client shares one undifferentiated host | Listener admits only the bound profile’s composition + that profile’s bearer |

Honest boundary: profiles separate roles / agents under one trusted OS user. Mutually distrustful clients still need separate OS users or machines — composition isolation is not a hypervisor.

Mission & principles

Make LLM agents useful on the systems that run an MSP without turning one operator into an unpaid AI department, and without unsupervised authority over client infrastructure.

| Principle | Meaning | |---|---| | Structure before magic | Agents need policy, not vibes | | Depth over sprawl | ConnectWise stack first | | Propose ≠ execute | Tool calls that change state cross your gates | | Local by default | Operational data stays on your machine | | Fail closed on trust | Unverified modules do not load | | BYOM | Claude, GPT, Qwen, Grok-class — your contract with the model vendor |

Product surface

Independently loadable domain modules (~190 model-callable actions at full entitlement, plus host utilities for status, discovery, and safe calculation). Exact catalogs ship in entitled installs.

| Domain | MSP outcomes | |---|---| | PSA ConnectWise Manage | Tickets, dispatch, time, companies, agreements, projects, sales, finance-adjacent ops | | RMM ConnectWise Asio | Fleet inventory/posture, patch & vulnerability views, controlled automation paths | | ScreenConnect | Sessions, endpoints, operator-approved remote command paths | | CPQ ConnectWise Sell | Quotes, portfolio, recurring revenue views | | Backup Axcient x360Recover | Fleet backup health, jobs, recovery evidence | | SentinelOne EDR/MDR | Threat/agent posture, investigation, gated response | | Envoy (optional) | Apple Mail triage & drafting beside the same MSP workflows |

PSA Lite (free) — what the AI can call

PSA Lite is the free forever SKU: the same local MCP host, credential custody, and fail-closed design — with a READ-only ConnectWise Manage desk surface. No ticket create/update, no time write, no raw API hatch, no RMM/CPQ/EDR/backup plugins. Plan and brief on your board; upgrade when you want the agent to change systems under your approval policy.

| | PSA Lite (free) | Paid PSA (+ plugins) | |---|---|---| | Host (MCP, local-first, BYOM) | Yes | Yes | | PSA desk tools | 11 READ tools (below) | Full READ + WRITE + INTENSE as entitled | | Time | List + missing-time discovery | Log / write time entries | | Tickets | Query / get / hydrate | Create, update, close, notes, … | | Other plugins | Not included | Per license (RMM, SC, CPQ, S1, x360, mail, …) | | Approvals | N/A on pure READ | Gates the writes you require | | Pricing | $0 — no seats, no call meter | Per ConnectWise PSA licensed user (see site) |

The 11 PSA Lite tools

Job-shaped MCP tools (not a raw OpenAPI mirror). Every call is READ — no vendor state change.

| Tool | What the agent can do | |---|---| | psa_ticket_query | Search/get service tickets (board, status, assignee, SLA filters). Hydrate notes, company, configs in one call | | psa_company_query | Company + sites + contacts summary — client 360 entry key | | psa_contact_query | Find contacts by company / name / type (incl. tenant approver type) | | psa_config_query | Configurations / assets by company, contact, type, hostname | | psa_time_query | List time entries by window, member, or ticket; timesheet discovery without write | | psa_member_query | Techs and workload read — roster, identity, who-am-i (dispatch prep) | | psa_board_query | Boards, statuses (when board_id set), priorities — triage reference data | | psa_agreement_query | Agreements list/read — coverage / revenue view | | psa_invoice_query | Invoices list/get — billing QC in read-only | | psa_project_query | Projects list/get and project-tickets portfolio read | | psa_desk_brief | Composite desk brief: my board / my client / my day — tickets, aging, unassigned, missing time |

Not on free: time entry write, ticket create/update/close, finance writes, psa_api raw hatch, and paid domain plugins (RMM, ScreenConnect, CPQ, SentinelOne, x360, Envoy). Those unlock on paid entitlement with the same human-in-the-loop gates.

AI safety & governance (human-in-the-loop)

This is how Pulsatrix differs from “paste API keys into an agent and hope.”

| Control | What it means for LLM tool calling | |---|---| | Risk classes | Every exposed tool is classified (read / write / intense / never exposed) | | Host choke-point | Policy runs in the host before vendor execution | | Human approval | Sensitive writes wait on a person | | Biometric option | Touch ID / Windows Hello for highest-risk actions you designate | | No self-approval | The model cannot loosen policy via a tool | | Credential custody | OS keychain path — not secrets sprayed through every agent config | | Integrity + entitlement | Modules checked before they join tools/list |

Never exposed capabilities are not “soft hidden.” They are not offered to the LLM at all.

Local replica & skills

| Capability | Honest scope | |---|---| | Local read-through replica | Slow-moving PSA/RMM reference data; never authoritative for hot truth; never silent write targeting; data stays local | | Skills | Taught multi-step MSP job recipes for agent clients that load skills; do not bypass gates; discovery catalog remains the universal fallback |

Local-first, Law 25, GDPR

  • Execution on your machine
  • Operational payloads do not ship to us as product telemetry content
  • Optional anonymous product signals (what actions work / misbehave) — opt-out; never tickets/prompts/client identity
  • What you send to Anthropic / OpenAI / Google / xAI is your client↔provider relationship
  • Or keep inference fully local (LM Studio + open models)

Beta status — private now, public very soon

| Track | Status | What you get | |---|---|---| | Private beta | Live, limited seats | Full product path for approved ConnectWise MSPs; onboarding and support booked with the team | | Public beta | Coming very soon | Broader access without the private-seat bottleneck — same host, same local-first model | | PSA Lite | Free forever | Read-only 11-tool PSA desk surface (see above); no credit card |

Apply for private beta (or follow the site for public beta): https://pulsatrix.ca

npm i @pulsatrix/connectwise-mcp

This npm package is the public product surface (docs + positioning). Runtime binaries ship through approved beta channels today. When public beta lands, install paths open wider — including the free PSA Lite on-ramp. Production MCP control planes are not casual demos — same standard we ask of AI agents on client systems.

FAQ

Is Pulsatrix a ConnectWise MCP server?

Yes. It is a self-hosted MCP host with ConnectWise-centered domain modules (Manage, RMM/Asio, ScreenConnect, Sell, plus x360 and SentinelOne). More coming soon with ConnectWise focus ONLY.

What is PSA Lite?

The free, read-only ConnectWise Manage desk surface: 11 job-shaped tools (tickets, companies, contacts, configs, time list/discovery, members, boards, agreements, invoices, projects, desk brief). Same host as paid; no writes, no other plugins. See PSA Lite.

Can I try it without a paid license?

Yes — PSA Lite is $0. Private beta seats are still application-based and limited; public beta opens access soon. Apply at pulsatrix.ca.

Does it work with Claude / Claude Code / Claude Desktop?

Yes. Claude Desktop and Claude Code have first-class connect adapters. Claude Opus/Sonnet generally yield the strongest multi-step tool-calling results.

Can I use a local LLM (Qwen, LM Studio)?

Yes. BYOM. LM Studio is a wired MCP client. Run Qwen or other local models there; load fewer plugins if the model’s tool-calling budget is small (~30B-class guidance). PSA Lite’s small tool surface is a natural fit for smaller local models.

Does it work with Cursor, VS Code, Windsurf, Codex?

Yes , those clients are in the product’s connect adapter set. Other MCP clients can use a generic stdio snippet.

What is Profile mode / agent profiles?

A profile is the composition + credential layer for one MCP agent: plugin/tool allowlist, per-profile OS keychain credentials, and a fixed bind at process start (serve --profile <id>). Multiple client entries = multiple isolated processes. Optional Streamable HTTP is the same model over loopback (/mcp, Bearer, one listener → one profile). See Agent profiles & Streamable HTTP.

Is this autonomous AI that replaces technicians?

No. It is agentic tool use with human-in-the-loop governance. The AI proposes; risk-bearing writes wait on your policy. We want to empower techcian.

Do you resell LLM tokens?

No. Point at Anthropic, OpenAI, Google, xAI, or local inference, your accounts, your spend.

Is client PSA data sent to Pulsatrix cloud?

Never. Operational ticket/company/financial payloads are not our product data path. Local-first execution; license/entitlement traffic is separate. See product docs at beta onboarding.

How is this different from “just expose the ConnectWise API to an LLM”?

Depth over sprawl: job-shaped tools, risk classes, host enforcement, optional biometric gates, module integrity not a raw OpenAPI mirror that burns context and hallucinate endpoints like other solutions out there.

Links


Built by practitioners who run MSP operations. Independent — not affiliated with ConnectWise, LLC.
ConnectWise, Manage, Asio, Quosal Sell, and ScreenConnect are trademarks of ConnectWise, LLC. SentinelOne, Axcient, Anthropic, OpenAI, Google, xAI, and other marks belong to their owners — used for descriptive interoperability only.