Skip to content
Agentmart
Submit a tool

ConnectWise PSA

ConnectWise PSA (Manage) MCP server — tickets, time entries, companies, configurations, BYOK

Connector by selic · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 6
Write a review

Chalk Labs

Need help deploying ConnectWise PSA?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/selic-mcp-connectwise-psa

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

ConnectWise PSA (Manage) MCP server — tickets, time entries, companies, configurations, BYOK

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
34 read · 10 write · 1 delete
Secrets
2 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Node.js package

Tools by what they do 45

Read from the source code; the running server may list different tools.

Read 34 · Look things up without changing anything.

  • cw_db_find_query
  • cw_db_find_table
  • cw_db_query
  • cw_find_endpoint
  • cw_get
  • cw_get_agreement
  • cw_get_board
  • cw_get_company
  • cw_get_configuration
  • cw_get_contact
  • cw_get_invoice
  • cw_get_member
Show 22 more tools
  • cw_get_ticket
  • cw_list_agreements
  • cw_list_boards
  • cw_list_company_sites
  • cw_list_configurations
  • cw_list_invoices
  • cw_list_members
  • cw_list_my_time
  • cw_list_my_timesheets
  • cw_list_priorities
  • cw_list_schedule_entries
  • cw_list_ticket_tasks
  • cw_list_ticket_time
  • cw_list_unbilled_time
  • cw_list_work_roles
  • cw_list_work_types
  • cw_member_availability
  • cw_my_schedule
  • cw_my_tickets
  • cw_search_companies
  • cw_search_contacts
  • cw_search_tickets

Write 10 · Create, change, send or run things.

  • cw_add_ticket_note
  • cw_bundle_tickets
  • cw_create_ticket
  • cw_create_time_entry
  • cw_db_save_query
  • cw_schedule_ticket
  • cw_submit_timesheet
  • cw_update_schedule_entry
  • cw_update_ticket
  • cw_update_time_entry

Delete 1 · Delete, drop, revoke or wipe things.

  • cw_delete_schedule_entry

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • CW_PRIVATE_KEY
  • CW_PUBLIC_KEY

Other settings (environment variables or headers).

  • CW_CLIENT_ID
  • CW_COMPANY_ID
  • CW_MEMBER_IDENTIFIER
  • CW_SITE

Network hosts it talks to 1

  • github.com · found in code

Files it touches

  • Any path the agent passes to its tools

Tools (45)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • cw_add_ticket_noteAdd ConnectWise Ticket Note

    Add a note to a ticket. Discussion notes are visible to the customer on portals/emails; internal notes are not. Notes are attributed to the member whose API keys this session uses.

  • cw_bundle_ticketsBundle ConnectWise Tickets Under a Parent

    Attach child tickets to a parent ticket (CW's bundling). SERVICE tickets only. Children that already have a parent are refused rather than re-parented, and every child is read back afterwards so the result says which ones actually attached. NOT UNDOABLE FROM HERE — detaching a bundled ticket is only possible in the ConnectWise UI, so check the ids before calling.

  • cw_create_ticketCreate ConnectWise Ticket

    Create a new SERVICE ticket on a board for a company. Project tickets cannot be created here — they need a project and a phase.

  • cw_create_time_entryLog ConnectWise Time Entry

    Log time against a ticket, service or project — the resource is detected from the id. Time is attributed to the member whose API keys this session uses. Provide time_start plus either time_end or hours. For a span containing a break, pass the REAL time_end and put the break in hours_deduct; passing a shortened `hours` instead makes ConnectWise display an end time that never happened. Work role and work type default to the ticket's unless given. The note can also be copied onto the ticket: add_to_detail is the CUSTOMER-VISIBLE Discussion, add_to_internal is staff-only Internal Analysis — leavin…

  • cw_db_find_queryFind a Saved ConnectWise Queryread-only

    Search the saved-query library — reporting SQL that already works against this database, shipped with the server or saved by earlier sessions. LOOK HERE BEFORE WRITING SQL: a saved query is already correct about the schema. Substitute any {{placeholders}} and run the statement with cw_db_query, editing it as needed.

  • cw_db_find_tableFind a ConnectWise Database Tableread-only

    Find which ConnectWise database table or view holds something — keyword search over a catalog of the cwwebapp_* schema with key columns and join hints. Database names do NOT match the REST API: tickets are SR_Service, and the reporting view is v_rpt_service. NEVER guess a table name — search here first. Use the result to write cw_db_query SQL, or prefer the named curated tool when one exists. The catalog carries key columns only; for a full column list run SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='…' through cw_db_query.

  • cw_db_queryQuery the ConnectWise Database (Read-Only SQL)read-only

    Run one read-only T-SQL SELECT against the on-prem ConnectWise Manage database — for cross-table reporting, aggregates and joins the REST API cannot express. ALWAYS bound the query: SELECT TOP n with a WHERE on a date column. This is the LIVE PRODUCTION database technicians are working in. Name the columns you need — tables carry 100+ columns and ntext bodies, and SELECT * blows the response budget after a handful of rows. Start from the v_rpt_* reporting views (v_rpt_service, v_rpt_time, v_rpt_company): they already join board, status, company and contact. Discover tables with cw_db_find_tabl…

  • cw_db_save_querySave a ConnectWise Query for Later

    Add a query to the saved-query library so later sessions can find it with cw_db_find_query. Save a query AFTER it has run successfully — never save SQL you have not executed. Describe what question it answers, not how it works: the description is what search matches. Parameterise anything date- or company-specific as {{placeholders}} and list them. This writes to the library file only — it never modifies ConnectWise.

  • cw_delete_schedule_entryDelete a ConnectWise Schedule Entrycan change or delete data

    Remove a schedule entry from the dispatch board (e.g. to cancel a scheduled visit).

  • cw_find_endpointFind a ConnectWise API Endpointread-only

    Discover which ConnectWise REST endpoint (and its filter fields) fits a task — search a curated catalog by keywords. Use the result with cw_get, or prefer the named curated tool when one exists.

  • cw_getCall any ConnectWise GET Endpointread-only

    Read-only GET for any ConnectWise REST path (the part after /apis/3.0, e.g. /procurement/purchaseorders). ALWAYS pass fields (CW records are huge). Filter with conditions (CW grammar: exact = for ids/names, 'contains' for text, dates as [2026-07-01T00:00:00Z]); filter on child collections (e.g. a company's types) with child_conditions; sort with order_by. Endpoints with their OWN query parameters (e.g. /system/audittrail needs type+id, /system/documents needs recordType+recordId) take them via params: {"type":"Ticket","id":123}. Discover paths with cw_find_endpoint.

  • cw_get_agreementGet ConnectWise Agreementread-only

    Get one agreement (contract) with its coverage limits and billing cycle. Read-only.

  • cw_get_boardGet ConnectWise Board Statuses, Types, Sub-types, Items and Teamsread-only

    List what a service board allows — statuses, types, sub-types, items and teams. These are the exact names cw_create_ticket and cw_update_ticket take, and they are BOARD-SCOPED: the same name means a different id on another board. Get the board id from cw_list_boards.

  • cw_get_companyGet ConnectWise Companyread-only

    Get one company by ID.

  • cw_get_configurationGet ConnectWise Configurationread-only

    Get one configuration with full details (serial, model, network, OS, warranty, notes).

Show 30 more tools
  • cw_get_contactGet ConnectWise Contactread-only

    Get one contact with their phone numbers and email addresses (communication items).

  • cw_get_invoiceGet ConnectWise Invoiceread-only

    Get one invoice by ID. Read-only.

  • cw_get_memberGet ConnectWise Memberread-only

    Get one member's dispatch profile: timezone, work role, location, capacity, and their working hours (resolved from the member's calendar, including the holiday list).

  • cw_get_ticketGet ConnectWise Ticketread-only

    Get one ticket with its most recent notes (newest first). Works for service and project tickets — the resource is detected from the id.

  • cw_list_agreementsList ConnectWise Agreementsread-only

    List service agreements (contracts), optionally filtered by company or status. Read-only.

  • cw_list_boardsList ConnectWise Service Boardsread-only

    List service boards. Use to discover exact board names for cw_search_tickets / cw_create_ticket, and board ids for cw_get_board (statuses and types).

  • cw_list_company_sitesList ConnectWise Company Sitesread-only

    List a company's sites (locations/addresses), with phone and timezone.

  • cw_list_configurationsList ConnectWise Configurationsread-only

    List configurations (devices/assets) — servers, firewalls, workstations — optionally filtered by company, name, or type. Useful during troubleshooting to find serials, IPs, and warranty info.

  • cw_list_invoicesList ConnectWise Invoicesread-only

    List invoices, optionally filtered by company, status, or invoice date range (YYYY-MM-DD). Read-only.

  • cw_list_membersList ConnectWise Membersread-only

    List members (technicians) for dispatch — each with timezone, working-hours calendar name, work role, and daily/schedule capacity. Filter by name or identifier; excludes inactive by default.

  • cw_list_my_timeMy ConnectWise Time Entriesread-only

    List time entries for the member this session acts as, newest first, optionally within a date range.

  • cw_list_my_timesheetsList My ConnectWise Timesheetsread-only

    List timesheets for the member this session acts as, newest first, with their status (Open, Submitted, Approved…). Use the id with cw_submit_timesheet.

  • cw_list_prioritiesList ConnectWise Prioritiesread-only

    List ticket priorities (exact names for cw_create_ticket / cw_update_ticket).

  • cw_list_schedule_entriesList ConnectWise Schedule Entriesread-only

    List dispatch/schedule entries, optionally filtered by member, ticket, or date range (dates as YYYY-MM-DD). Use to see who is scheduled for what and when.

  • cw_list_ticket_tasksList ConnectWise Ticket Tasksread-only

    List the task/checklist items on a ticket, with their done state.

  • cw_list_ticket_timeList Time Entries on a Ticketread-only

    List all time entries logged against a ticket (by any member), newest first. Works for service and project tickets.

  • cw_list_unbilled_timeList Unbilled Timeread-only

    List billable time entries not yet on an invoice — what's ready to bill. Filter by company or date range (YYYY-MM-DD). Read-only.

  • cw_list_work_rolesList ConnectWise Work Rolesread-only

    List work roles (used when logging time). Excludes inactive by default.

  • cw_list_work_typesList ConnectWise Work Typesread-only

    List work types (how time is classified — Remote, Onsite, …), for the work_type argument of cw_create_time_entry. Excludes inactive by default.

  • cw_member_availabilityConnectWise Member Availabilityread-only

    Show a member's booked vs free hours on a given day (YYYY-MM-DD): their schedule capacity minus the hours already scheduled that day.

  • cw_my_scheduleMy ConnectWise Scheduleread-only

    List schedule entries assigned to the member this session acts as, optionally within a date range.

  • cw_my_ticketsMy ConnectWise Ticketsread-only

    List open tickets assigned to the member this session acts as (owner or listed in resources). Includes project tickets as well as service tickets by default.

  • cw_schedule_ticketSchedule a ConnectWise Ticket

    Schedule a service ticket to a member for a time window. Times are ISO-8601 (e.g. 2026-07-06T13:00:00Z). Creates a schedule entry on the dispatch board.

  • cw_search_companiesSearch ConnectWise Companiesread-only

    Search companies by name (substring). Use this to find the company ID needed by ticket and configuration tools.

  • cw_search_contactsSearch ConnectWise Contactsread-only

    Search contacts by name, optionally within one company.

  • cw_search_ticketsSearch ConnectWise Ticketsread-only

    Search tickets by company, board, status, summary text, or assigned member. Covers SERVICE and PROJECT tickets — ConnectWise keeps them apart, and ticket_type picks which. Defaults to open tickets only. Returns ticket ids for use with cw_get_ticket / cw_add_ticket_note / cw_create_time_entry.

  • cw_submit_timesheetSubmit ConnectWise Timesheet

    Submit a timesheet for approval. Get the timesheet id from cw_list_my_timesheets; only Open timesheets can be submitted.

  • cw_update_schedule_entryUpdate a ConnectWise Schedule Entry

    Reschedule or reassign a schedule entry, or mark it done. Times are ISO-8601. Only provided fields change.

  • cw_update_ticketUpdate ConnectWise Ticket

    Update a ticket's status, priority, summary, or owner. Only provided fields change.

  • cw_update_time_entryUpdate ConnectWise Time Entry

    Edit an existing time entry — notes, start/end, break, billable flag, work role or work type. Only provided fields change. Duration is set by time_start/time_end (hours are derived, not edited directly); use hours_deduct for a break inside that span. Governed by your ConnectWise security role (typically your own entries).

Signals

Stars
6
Forks
1
Open issues
1
Last commit
Oct 7, 2026 (24 days ago)
Last release
Oct 7, 2026 (24 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.selic/mcp-connectwise-psa
Version
0.4.0
Auth
API key
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from selic

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get ConnectWise PSA running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying ConnectWise PSA?

CallGet help
Cite this page

ConnectWise PSA MCP server. Agent Mart. https://agentmart.dev/connectors/selic-mcp-connectwise-psa (last updated 2026-10-24)