Skip to main content
Tools Reference

ConnectWise Manage Tools

Written By Christopher Scaminaci

Last updated 7 days ago

ConnectWise Manage Tools

cw_ · 1483 tools · Free 850 · Pro 633Basic auth (companyId+publicKey:privateKey) + clientId header; page size capped at 200; raw JSON passthrough. conditions use ConnectWise's own filter language (status/name='Open' and closedFlag=false), never OData. cw_raw_get and cw_raw_request are the escape hatch: one GET or one write to any PSA API path the named tools miss.

All connector tools · ConnectWise Manage setup guide

ConnectWise Manage tool groups

Service Tickets

ToolPlanAccessSummary
cw_count_ticketsFreeRead-onlyGet a count of service tickets matching optional conditions.
cw_create_ticketProDestructiveCreate a new service ticket.
cw_delete_ticketProDestructivePermanently delete a service ticket by ID.
cw_get_ticketFreeRead-onlyRetrieve a single service ticket by ID.
cw_list_company_ticketsFreeRead-onlyList open tickets for a specific company.
cw_list_high_priority_ticketsFreeRead-onlyList open tickets with critical or high priority.
cw_list_member_ticketsFreeRead-onlyList open tickets assigned to a specific member.
cw_list_open_ticketsFreeRead-onlyList all open (non-closed) service tickets.
cw_list_recently_updated_ticketsFreeRead-onlyList tickets ordered by last update time, newest updates first.
cw_list_ticketsFreeRead-onlyList service tickets with optional filtering, sorting, and field selection.
cw_list_unassigned_ticketsFreeRead-onlyList open tickets that have no assigned resources.
cw_search_ticketsFreeRead-onlySearch service tickets by keyword in the summary field.
cw_update_ticketProDestructiveUpdate an existing service ticket using JSON Patch operations.

[ConnectWise] Get a count of service tickets matching optional conditions. Returns the total number of matching tickets without fetching ticket data. Useful for dashboards, reporting, and checking result set size before paginating with cw_list_tickets.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter. ConnectWise filter grammar (NOT SQL or OData). Form: field op value, joined by 'and'/'or', grouped with ( ). Nested fields use '/': status/name, company/id, company/identifier, owner/id. Operators: =, !=, <, <=, >, >=, 'contains' (substring), 'like' (with % wildcard), 'in (...)'. Quote string values with single quotes, e.g. status/name='Open' (double quotes also work but must be escaped inside JSON). Dates go in square brackets: lastUpdated>[2026-01-01T00:00:00Z]. Booleans and null are bare keywords: closedFlag=false, owner/id=null. Examples: status/name='Open' and closedFlag=false ; company/id=123 and priority/name!='Low' ; summary contains 'vpn'. Avoid SQL: no leading WHERE, no '==' (use '='), do not leave string values unquoted.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new service ticket. Requires at minimum a summary and board reference. Call cw_discover_boards first to find valid board IDs. Returns the created ticket with its assigned ID. This creates data visible to helpdesk staff and end users.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesTicket fields as JSON. Required: {"summary": "...", "board": {"id": N}}. Optional: status, priority, company, contact, type, subType, item, team, owner, site, serviceLocation.

[ConnectWise] Permanently delete a service ticket by ID. This cannot be undone. Verify the ticket with cw_get_ticket before deleting. Requires a valid ticket ID — use cw_list_tickets or cw_search_tickets to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise ticket ID to delete. Verify with cw_get_ticket before deleting.

[ConnectWise] Retrieve a single service ticket by ID. Returns ticket header fields including summary, status, priority, board, company, contact, assigned resources, SLA timing (dateResolved, resolvedBy, resolutionHours, resolutionGoalUTC), and custom fields. NOTE: The ConnectWise API does NOT return the body text of the Description, Internal Analysis, or Resolution tabs in this response — those live in ticket notes flagged with detailDescriptionFlag, internalAnalysisFlag, or resolutionFlag. Use cw_get_ticket_description, cw_get_ticket_internal_analysis, and cw_get_ticket_resolution to fetch each, or cw_list_ticket_notes for everything. Requires a valid ticket ID — use cw_list_tickets or cw_search_tickets to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] List open tickets for a specific company. A convenience tool that filters tickets to a single company. Useful for reviewing a client's current issues.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.
includeClosedbooleannofalseInclude closed tickets (default false, shows only open).
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List open tickets with critical or high priority. Useful for urgent triage -- returns only tickets where priority is 'Priority 1 - Critical' or 'Priority 2 - High' and closedFlag=false, ordered by newest first.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List open tickets assigned to a specific member. A convenience tool that filters tickets to a single assignee. Useful for viewing a technician's current workload.

ParamTypeRequiredDefaultDescription
memberIdentifierstringyesThe ConnectWise member identifier (e.g., 'jsmith').
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all open (non-closed) service tickets. A convenience filter that returns only tickets with closedFlag=false. Useful for quick helpdesk queue views.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List tickets ordered by last update time, newest updates first. Useful for monitoring recent activity across the helpdesk without filtering by status or priority.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List service tickets with optional filtering, sorting, and field selection. Returns paginated ticket summaries including ID, summary, status, priority, board, and company. Use this to browse tickets or narrow results before fetching full details with cw_get_ticket. Call cw_discover_boards and cw_discover_statuses first to learn valid filter values.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter. ConnectWise filter grammar (NOT SQL or OData). Form: field op value, joined by 'and'/'or', grouped with ( ). Nested fields use '/': status/name, company/id, company/identifier, owner/id. Operators: =, !=, <, <=, >, >=, 'contains' (substring), 'like' (with % wildcard), 'in (...)'. Quote string values with single quotes, e.g. status/name='Open' (double quotes also work but must be escaped inside JSON). Dates go in square brackets: lastUpdated>[2026-01-01T00:00:00Z]. Booleans and null are bare keywords: closedFlag=false, owner/id=null. Examples: status/name='Open' and closedFlag=false ; company/id=123 and priority/name!='Low' ; summary contains 'vpn'. Avoid SQL: no leading WHERE, no '==' (use '='), do not leave string values unquoted.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullSort order. Examples: "id desc", "dateEntered asc". Use field names from the ticket object.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List open tickets that have no assigned resources. Useful for triage queues -- shows tickets waiting to be dispatched. Returns tickets with closedFlag=false and no owner assigned, ordered by newest first.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search service tickets by keyword in the summary field. ConnectWise does not expose description text as a condition-queryable field (description lives in ticket notes — use cw_get_ticket_description on a known ticket), so this matches summaries only. Use this when looking for tickets by keyword or error message rather than structured filtering with cw_list_tickets.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch term to match against ticket summaries.

[ConnectWise] Update an existing service ticket using JSON Patch operations. Requires a valid ticket ID — use cw_list_tickets or cw_search_tickets to find IDs. Returns the updated ticket.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise ticket ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "status", "value": {"id": 5}}, {"op": "replace", "path": "priority", "value": {"id": 3}}]

Ticket Notes & Tasks

ToolPlanAccessSummary
cw_create_ticket_noteProDestructiveAdd a note to a service ticket.
cw_create_ticket_taskProWriteAdd a task to a service ticket.
cw_delete_ticket_noteProDestructivePermanently delete a ticket note.
cw_delete_ticket_taskProDestructivePermanently delete a ticket task.
cw_get_ticket_descriptionFreeRead-onlyRetrieve the Description-tab notes for a service ticket.
cw_get_ticket_internal_analysisFreeRead-onlyRetrieve the Internal Analysis-tab notes for a service ticket.
cw_get_ticket_noteFreeRead-onlyRetrieve a single ticket note by ticket ID and note ID.
cw_get_ticket_resolutionFreeRead-onlyRetrieve the Resolution-tab notes for a service ticket.
cw_get_ticket_taskFreeRead-onlyRetrieve a single ticket task by ticket ID and task ID.
cw_list_ticket_notesFreeRead-onlyList notes for a specific service ticket.
cw_list_ticket_tasksFreeRead-onlyList tasks for a specific service ticket.
cw_update_ticket_noteProDestructiveUpdate an existing ticket note using JSON Patch operations.
cw_update_ticket_taskProWriteUpdate an existing ticket task using JSON Patch operations.

[ConnectWise] Add a note to a service ticket. Use internalAnalysisFlag for internal-only notes or externalFlag for customer-visible notes. Requires a valid ticket ID — use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesNote fields as JSON. Example: {"text": "Note text here", "internalAnalysisFlag": true, "externalFlag": false}. Set detailDescriptionFlag, internalAnalysisFlag, or externalFlag to control visibility.
ticketIdintegeryesThe numeric ConnectWise ticket ID to add the note to.

[ConnectWise] Add a task to a service ticket. Tasks represent individual work items within a ticket. Requires a valid ticket ID — use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesTask fields as JSON. Example: {"notes": "Task description", "priority": 1, "closedFlag": false}.
ticketIdintegeryesThe numeric ConnectWise ticket ID to add the task to.

[ConnectWise] Permanently delete a ticket note. This cannot be undone. Verify the note with cw_get_ticket_note before deleting.

ParamTypeRequiredDefaultDescription
noteIdintegeryesThe numeric note ID to delete. Verify with cw_get_ticket_note before deleting.
ticketIdintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] Permanently delete a ticket task. This cannot be undone. Verify the task with cw_get_ticket_task before deleting.

ParamTypeRequiredDefaultDescription
taskIdintegeryesThe numeric task ID to delete. Verify with cw_get_ticket_task before deleting.
ticketIdintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] Retrieve the Description-tab notes for a service ticket. ConnectWise stores description body text as ticket notes with detailDescriptionFlag=true (NOT as a field on the ticket itself). Returns notes ordered oldest-first to match the CW UI. Use this when cw_get_ticket doesn't show the description text. Requires a valid ticket ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1). Most tickets have only a few description notes.
pageSizeintegerno50Results per page (default 50, max 200).
ticketIdintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] Retrieve the Internal Analysis-tab notes for a service ticket. ConnectWise stores internal analysis body text as ticket notes with internalAnalysisFlag=true (NOT as a field on the ticket itself). Returns notes ordered oldest-first to match the CW UI. Use this when cw_get_ticket doesn't show the internal analysis text. Requires a valid ticket ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ticketIdintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] Retrieve a single ticket note by ticket ID and note ID. Returns the full note including text, internal/external flags, contact info, and timestamps. Use cw_list_ticket_notes to find valid note IDs.

ParamTypeRequiredDefaultDescription
noteIdintegeryesThe numeric note ID. Use cw_list_ticket_notes to find valid IDs.
ticketIdintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] Retrieve the Resolution-tab notes for a service ticket. ConnectWise stores resolution body text as ticket notes with resolutionFlag=true (NOT as a field on the ticket itself — the Ticket schema's initialResolution is POST-only and never returned on read). Returns notes ordered oldest-first to match the CW UI. Use this when cw_get_ticket doesn't show the resolution text. Requires a valid ticket ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ticketIdintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] Retrieve a single ticket task by ticket ID and task ID. Returns full task details including notes, priority, schedule, and completion status. Use cw_list_ticket_tasks to find valid task IDs.

ParamTypeRequiredDefaultDescription
taskIdintegeryesThe numeric task ID. Use cw_list_ticket_tasks to find valid IDs.
ticketIdintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] List notes for a specific service ticket. Returns paginated note summaries including ID, text, internal/external flags (detailDescriptionFlag, internalAnalysisFlag, resolutionFlag, issueFlag), member, contact, and timestamps. The Description, Internal Analysis, and Resolution tabs in the ConnectWise UI are stored as notes with the corresponding flag set — filter with conditions like "detailDescriptionFlag=true", "internalAnalysisFlag=true", or "resolutionFlag=true" to retrieve only those, or use the cw_get_ticket_description / cw_get_ticket_internal_analysis / cw_get_ticket_resolution convenience tools. Requires a valid ticket ID — use cw_list_tickets or cw_search_tickets to find IDs.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "resolutionFlag=true", "detailDescriptionFlag=true", "internalAnalysisFlag=true", "issueFlag=true". Use 'and'/'or' for boolean logic.
orderBystringnonullSort order. Examples: "id asc" (oldest first, matches CW UI), "id desc".
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ticketIdintegeryesThe numeric ConnectWise ticket ID to list notes for.

[ConnectWise] List tasks for a specific service ticket. Returns paginated task summaries including ID, notes, priority, and completion status. Tasks represent work items within a ticket. Requires a valid ticket ID.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ticketIdintegeryesThe numeric ConnectWise ticket ID to list tasks for.

[ConnectWise] Update an existing ticket note using JSON Patch operations. Requires valid ticket ID and note ID — use cw_list_ticket_notes to find note IDs.

ParamTypeRequiredDefaultDescription
noteIdintegeryesThe numeric note ID to update. Use cw_list_ticket_notes to find valid IDs.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "text", "value": "Updated note text"}]
ticketIdintegeryesThe numeric ConnectWise ticket ID.

[ConnectWise] Update an existing ticket task using JSON Patch operations. Requires valid ticket ID and task ID — use cw_list_ticket_tasks to find task IDs.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "closedFlag", "value": true}]
taskIdintegeryesThe numeric task ID to update. Use cw_list_ticket_tasks to find valid IDs.
ticketIdintegeryesThe numeric ConnectWise ticket ID.

Ticket Sub-Resources

ToolPlanAccessSummary
cw_add_ticket_configProWriteAssociate a configuration (asset) with a service ticket.
cw_list_ticket_configsFreeRead-onlyList all configurations (assets) associated with a service ticket.
cw_list_ticket_documentsFreeRead-onlyList all documents attached to a service ticket.
cw_list_ticket_productsFreeRead-onlyList all products associated with a service ticket.
cw_list_ticket_scheduleentriesFreeRead-onlyList all schedule entries for a service ticket.
cw_list_ticket_timeentriesFreeRead-onlyList all time entries logged against a service ticket.
cw_remove_ticket_configProDestructiveRemove a configuration (asset) association from a service ticket.

[ConnectWise] Associate a configuration (asset) with a service ticket. Returns the created association. Requires valid ticket and configuration IDs -- use cw_list_tickets and cw_list_configurations to find IDs.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the configuration association. Example: {"id": 42}. The id refers to the configuration/asset ID.
ticketIdintegeryesThe ConnectWise ticket ID to add the configuration to.

[ConnectWise] List all configurations (assets) associated with a service ticket. Returns configuration details including ID, name, type, and company. Requires a valid ticket ID -- use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
ticketIdintegeryesThe ConnectWise ticket ID.

[ConnectWise] List all documents attached to a service ticket. Returns document metadata including ID, title, file name, and upload date. Requires a valid ticket ID -- use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
ticketIdintegeryesThe ConnectWise ticket ID.

[ConnectWise] List all products associated with a service ticket. Returns product details including ID, description, quantity, price, and billing status. Requires a valid ticket ID -- use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
ticketIdintegeryesThe ConnectWise ticket ID.

[ConnectWise] List all schedule entries for a service ticket. Returns schedule details including member, start/end times, and status. Requires a valid ticket ID -- use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
ticketIdintegeryesThe ConnectWise ticket ID.

[ConnectWise] List all time entries logged against a service ticket. Returns time entry details including member, hours, work type, and billing status. Requires a valid ticket ID -- use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
ticketIdintegeryesThe ConnectWise ticket ID.

[ConnectWise] Remove a configuration (asset) association from a service ticket. This only removes the link, not the configuration itself. Requires valid ticket and configuration IDs.

ParamTypeRequiredDefaultDescription
configIdintegeryesThe configuration ID to remove from the ticket.
ticketIdintegeryesThe ConnectWise ticket ID.

Service Boards & Configuration

ToolPlanAccessSummary
cw_discover_board_teamsFreeRead-onlyList all teams configured for a specific service board.
cw_discover_boardsFreeRead-onlyList all service boards.
cw_discover_codesFreeRead-onlyList all service codes.
cw_discover_impactsFreeRead-onlyList all service impact levels.
cw_discover_itemsFreeRead-onlyList all items for a specific service board.
cw_discover_prioritiesFreeRead-onlyList all service priorities.
cw_discover_service_locationsFreeRead-onlyList all service locations.
cw_discover_severitiesFreeRead-onlyList all service severity levels.
cw_discover_sla_prioritiesFreeRead-onlyList all priority configurations for a specific SLA.
cw_discover_slasFreeRead-onlyList all Service Level Agreements (SLAs).
cw_discover_sourcesFreeRead-onlyList all service sources.
cw_discover_statusesFreeRead-onlyList all statuses for a specific service board.
cw_discover_subtypesFreeRead-onlyList all subtypes for a specific service board.
cw_discover_surveysFreeRead-onlyList all service surveys.
cw_discover_typesFreeRead-onlyList all types for a specific service board.
cw_get_boardFreeRead-onlyRetrieve a single service board by ID.
cw_get_priorityFreeRead-onlyRetrieve a single priority by ID.
cw_get_service_templateFreeRead-onlyRetrieve a single service template by ID.
cw_get_slaFreeRead-onlyRetrieve a single SLA by ID.
cw_list_service_templatesFreeRead-onlyList all service templates.
cw_list_survey_resultsFreeRead-onlyList results for one service survey.

[ConnectWise] List all teams configured for a specific service board. Returns team IDs and names. Teams control ticket routing and assignment. Call this to discover valid team values before creating or updating tickets.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric board ID. Use cw_discover_boards to find valid IDs.
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all service boards. Returns board IDs, names, and configuration. Boards are the top-level organizer for tickets — call this first to discover valid board IDs before creating tickets with cw_create_ticket or filtering with cw_list_tickets.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all service codes. Returns code IDs, names, and descriptions. Service codes are used for categorization and billing. Call this to discover valid code values for ticket workflows.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all service impact levels. Returns impact IDs and names. Impacts measure the breadth of an issue (e.g., single user vs. whole department). Used alongside severity for priority calculations and SLA assignment.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all items for a specific service board. Returns item IDs and names. Items are the third level of ticket categorization after type and subtype. Call this to discover valid item values before creating tickets.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric board ID. Use cw_discover_boards to find valid IDs.
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all service priorities. Returns priority IDs, names, colors, and sort order. Priorities define urgency levels for tickets. Call this to discover valid priority values before creating or filtering tickets.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all service locations. Returns location IDs and names. Service locations define where work is performed (e.g., On-Site, Remote). Call this to discover valid location values for ticket creation.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all service severity levels. Returns severity IDs and names. Severities measure the depth of an issue (e.g., inconvenience vs. system down). Used alongside impact for priority calculations and SLA assignment.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all priority configurations for a specific SLA. Returns priority-level response and resolution targets, escalation rules, and calendar settings. Requires a valid SLA ID -- use cw_discover_slas to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
slaIdintegeryesThe SLA ID to list priorities for. Use cw_discover_slas to find valid IDs.

[ConnectWise] List all Service Level Agreements (SLAs). Returns SLA IDs, names, and configuration. SLAs define response and resolution time targets for tickets. Call this to understand available SLA policies.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all service sources. Returns source IDs and names. Sources track how tickets originate (e.g., Email, Phone, Portal). Call this to discover valid source values for ticket creation and reporting.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all statuses for a specific service board. Returns status IDs, names, and workflow configuration. Statuses define the lifecycle stages of tickets on a board. Call this to discover valid status values before creating or updating tickets.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric board ID. Use cw_discover_boards to find valid IDs.
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all subtypes for a specific service board. Returns subtype IDs and names. SubTypes further categorize tickets within a type. Call this to discover valid subtype values before creating tickets.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric board ID. Use cw_discover_boards to find valid IDs.
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all service surveys. Returns survey IDs, names, and configuration. Surveys are used for customer satisfaction feedback on resolved tickets.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all types for a specific service board. Returns type IDs and names. Types categorize tickets on a board (e.g., Incident, Problem, Request). Call this to discover valid type values before creating tickets.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric board ID. Use cw_discover_boards to find valid IDs.
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Retrieve a single service board by ID. Returns full board configuration including name, location, department, and dispatch settings. Use cw_discover_boards to find valid board IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric board ID. Use cw_discover_boards to find valid IDs.

[ConnectWise] Retrieve a single priority by ID. Returns full priority details including name, color, sort order, and default flag. Use cw_discover_priorities to find valid priority IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric priority ID. Use cw_discover_priorities to find valid IDs.

[ConnectWise] Retrieve a single service template by ID. Returns full template details including name, board, summary, description, and all pre-configured ticket fields. Use cw_list_service_templates to find valid template IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric service template ID. Use cw_list_service_templates to find valid IDs.

[ConnectWise] Retrieve a single SLA by ID. Returns full SLA details including name, response/resolution targets, and priority-based escalation rules. Use cw_discover_slas to find valid SLA IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric SLA ID. Use cw_discover_slas to find valid IDs.

[ConnectWise] List all service templates. Returns template IDs, names, and board references. Service templates define pre-configured ticket settings that can be applied when creating new tickets. Use this to discover available templates before applying them.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List results for one service survey. Requires a survey ID -- use cw_discover_surveys to find IDs. THE SCORE IS NOT A TOP-LEVEL FIELD: a response looks like {"id":43,"ticketId":2089,"totalPoints":100,"results":[{"questionId":20,"answer":0},{"questionId":21,"answer":"Kjapp respons :-)"}],"company":,"surveyId":5} and carries no `score` property. Question IDs and answer scales are per-survey and per-instance -- one survey may score -1/0/1/3 out of 4 total points while another scores 0=positive/1=neutral/2=negative out of 100 -- so never hardcode a question ID; compare totalPoints against the maximum observed for THAT survey, or use cw_csat_report which does it for you. Results carry no member reference, so attributing a response to a technician needs a separate ticket lookup by ticketId. ORDERING: an unordered read returns oldest first, putting recent responses on the LAST page -- pass orderBy="id desc" to reach them. Whether this child endpoint honours conditions/orderBy/fields is NOT verified against a live instance; all three are sent to ConnectWise verbatim and nothing is filtered or sorted client-side, so an unsupported one surfaces as ConnectWise's own error rather than a silent fallback.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter, sent verbatim. Examples: "company/id=21292", "totalPoints<50". Support on this child endpoint is unverified -- an unsupported field surfaces as a ConnectWise error.
fieldsstringnonullComma-separated field list to trim the response, e.g. "id,ticketId,totalPoints,results".
orderBystringnonullConnectWise orderBy, sent verbatim. Use "id desc" for newest first; the default puts the newest responses on the last page.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
surveyIdintegeryesThe survey ID to list results for. Use cw_discover_surveys to find valid IDs.

Stopwatches

ToolPlanAccessSummary
cw_create_ticket_stopwatchProDestructiveCreate a new ticket stopwatch.
cw_get_ticket_stopwatchFreeRead-onlyRetrieve a single ticket stopwatch by ID.
cw_list_activity_stopwatchesFreeRead-onlyList activity stopwatches with optional filtering.
cw_list_member_stopwatchesFreeRead-onlyList all ticket stopwatches for a specific member.
cw_list_running_stopwatchesFreeRead-onlyList all currently running ticket stopwatches.
cw_list_ticket_stopwatchesFreeRead-onlyList ticket stopwatches with optional filtering.
cw_search_ticket_stopwatchesFreeRead-onlySearch ticket stopwatches by member identifier.
cw_update_ticket_stopwatchProDestructiveUpdate an existing ticket stopwatch using JSON Patch operations.

[ConnectWise] Create a new ticket stopwatch. Starts tracking time against a service ticket in real time. Requires a member and ticket reference. Returns the created stopwatch with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesStopwatch fields as JSON. Required: member ({"identifier": "jsmith"}), ticket reference. Example: {"member": {"identifier": "jsmith"}, "serviceTicket": {"id": 123}, "status": "Running"}

[ConnectWise] Retrieve a single ticket stopwatch by ID. Returns full stopwatch details including member, ticket reference, status, start time, and elapsed duration. Requires a valid stopwatch ID — use cw_list_ticket_stopwatches to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise ticket stopwatch ID.

[ConnectWise] List activity stopwatches with optional filtering. Returns paginated stopwatch summaries including ID, member, activity reference, status, and elapsed time. Activity stopwatches track real-time work duration against sales activities.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'", "status='Running'". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all ticket stopwatches for a specific member. Useful for reviewing a technician's active and recent time tracking via stopwatches. Returns both running and stopped stopwatches.

ParamTypeRequiredDefaultDescription
memberIdentifierstringyesThe ConnectWise member identifier (e.g., 'jsmith').
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all currently running ticket stopwatches. Returns active stopwatch records with member, ticket reference, and elapsed time. Useful for monitoring which technicians are actively working on tickets.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List ticket stopwatches with optional filtering. Returns paginated stopwatch summaries including ID, member, ticket reference, status, and elapsed time. Stopwatches track real-time work duration against service tickets.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'", "status='Running'". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search ticket stopwatches by member identifier. Returns matching stopwatch records. Use this when you want to find running or recent stopwatches for a specific member.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against member identifier.

[ConnectWise] Update an existing ticket stopwatch using JSON Patch operations. Use this to stop, pause, or modify a running stopwatch. Requires a valid stopwatch ID — use cw_list_ticket_stopwatches to find IDs. Returns the updated stopwatch.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise ticket stopwatch ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "status", "value": "Stopped"}]

Companies

ToolPlanAccessSummary
cw_count_companiesFreeRead-onlyGet total count of companies matching optional conditions.
cw_create_companyProWriteCreate a new company record.
cw_delete_companyProDestructivePermanently delete a company by ID.
cw_get_companyFreeRead-onlyRetrieve full details for a single company by ID.
cw_list_companiesFreeRead-onlyList companies with optional filtering, ordering, and pagination.
cw_list_customer_companiesFreeRead-onlyList active customer companies.
cw_list_prospect_companiesFreeRead-onlyList companies with type 'Prospect'.
cw_merge_companiesProDestructiveMerge a company into another company.
cw_search_companiesFreeRead-onlySearch companies by name or identifier.
cw_update_companyProWriteUpdate an existing company using JSON Patch operations.

[ConnectWise] Get total count of companies matching optional conditions. Returns a count object. Useful for pagination planning or dashboards.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter. ConnectWise filter grammar (NOT SQL or OData). Form: field op value, joined by 'and'/'or', grouped with ( ). Nested fields use '/': status/name, company/id, company/identifier, owner/id. Operators: =, !=, <, <=, >, >=, 'contains' (substring), 'like' (with % wildcard), 'in (...)'. Quote string values with single quotes, e.g. status/name='Open' (double quotes also work but must be escaped inside JSON). Dates go in square brackets: lastUpdated>[2026-01-01T00:00:00Z]. Booleans and null are bare keywords: closedFlag=false, owner/id=null. Examples: status/name='Open' and closedFlag=false ; company/id=123 and priority/name!='Low' ; summary contains 'vpn'. Avoid SQL: no leading WHERE, no '==' (use '='), do not leave string values unquoted.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new company record. Returns the created company with its assigned ID. The JSON must include at minimum 'name' and 'identifier'. Use cw_discover_company_statuses and cw_discover_company_types to find valid reference values.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the company to create. Example: {"name": "Acme Corp", "identifier": "AcmeCorp", "status": {"id": 1}, "type": {"id": 1}, "site": {"name": "Main"}, "phoneNumber": "555-0100"}.

[ConnectWise] Permanently delete a company by ID. This is irreversible and will fail if the company has associated records. Verify the company ID with cw_get_company before deleting.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise company ID to delete.

[ConnectWise] Retrieve full details for a single company by ID. Returns company info including name, status, type, address, phone, and custom fields. Requires a valid company ID -- use cw_list_companies or cw_search_companies to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe ConnectWise company ID.

[ConnectWise] List companies with optional filtering, ordering, and pagination. Returns company summaries including ID, name, status, and type. Use this to discover company IDs for filtering tickets, contacts, configurations, and other company-scoped data.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter. ConnectWise filter grammar (NOT SQL or OData). Form: field op value, joined by 'and'/'or', grouped with ( ). Nested fields use '/': status/name, company/id, company/identifier, owner/id. Operators: =, !=, <, <=, >, >=, 'contains' (substring), 'like' (with % wildcard), 'in (...)'. Quote string values with single quotes, e.g. status/name='Open' (double quotes also work but must be escaped inside JSON). Dates go in square brackets: lastUpdated>[2026-01-01T00:00:00Z]. Booleans and null are bare keywords: closedFlag=false, owner/id=null. Examples: status/name='Open' and closedFlag=false ; company/id=123 and priority/name!='Low' ; summary contains 'vpn'. Avoid SQL: no leading WHERE, no '==' (use '='), do not leave string values unquoted.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOrder results by field. Examples: "name asc", "id desc".
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List active customer companies. Returns companies where status is 'Active' and type is 'Customer'. Useful for client roster views, billing reviews, and service reporting.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List companies with type 'Prospect'. Useful for sales pipeline reviews -- shows companies that are potential customers but not yet active clients.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Merge a company into another company. All associated records (tickets, contacts, agreements, etc.) are moved to the target company. This is irreversible -- use cw_get_company_usages to review impact before merging. The source company is deleted after the merge.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object specifying the merge target. Example: {"toCompanyId": 456}.
idintegeryesThe ConnectWise company ID to merge FROM (this company will be deleted).

[ConnectWise] Search companies by name or identifier. Returns matching companies ranked by relevance. Use this when you know the company name but not the ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
searchstringyesSearch text to match against company name and identifier.

[ConnectWise] Update an existing company using JSON Patch operations. Returns the updated company. Use cw_get_company to check current values before updating.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise company ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "Acme Corp Updated"}, {"op": "replace", "path": "/phoneNumber", "value": "555-0200"}].

Company Sites & Notes

ToolPlanAccessSummary
cw_create_company_noteProDestructiveCreate a new note on a company.
cw_create_company_siteProWriteCreate a new site for a company.
cw_get_company_siteFreeRead-onlyRetrieve full details for a single company site by company ID and site ID.
cw_list_company_notesFreeRead-onlyList all notes for a company.
cw_list_company_sitesFreeRead-onlyList all sites for a company.
cw_update_company_noteProDestructiveUpdate an existing company note using JSON Patch operations.
cw_update_company_siteProWriteUpdate an existing company site using JSON Patch operations.

[ConnectWise] Create a new note on a company. Returns the created note with its assigned ID. Use cw_discover_company_note_types to find valid note type references.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID to add the note to.
fieldsJsonstringyesJSON object for the note to create. Example: {"text": "Important client note", "type": {"id": 1}, "flagged": false}.

[ConnectWise] Create a new site for a company. Returns the created site with its assigned ID. The JSON must include at minimum a 'name'.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID to add the site to.
fieldsJsonstringyesJSON object for the site to create. Example: {"name": "Branch Office", "addressLine1": "123 Main St", "city": "New York", "stateReference": {"identifier": "NY"}, "zip": "10001"}.

[ConnectWise] Retrieve full details for a single company site by company ID and site ID. Returns site info including name, address, city, state, zip, and phone number.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID.
siteIdintegeryesThe ConnectWise site ID.

[ConnectWise] List all notes for a company. Returns note details including ID, text, type, and timestamps. Use conditions to filter by note type or date. Requires a valid company ID -- use cw_list_companies to find IDs.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID.
conditionsstringnonullConnectWise conditions filter. Examples: "type/name='General'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all sites for a company. Returns site details including name, address, and primary flag. Requires a valid company ID -- use cw_list_companies or cw_search_companies to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID to list sites for.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Update an existing company note using JSON Patch operations. Returns the updated note. Use cw_list_company_notes to find valid note IDs.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID.
noteIdintegeryesThe note ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/text", "value": "Updated note text"}, {"op": "replace", "path": "/flagged", "value": true}].

[ConnectWise] Update an existing company site using JSON Patch operations. Returns the updated site. Use cw_get_company_site to check current values before updating.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "Updated Branch"}, {"op": "replace", "path": "/city", "value": "Chicago"}].
siteIdintegeryesThe ConnectWise site ID to update.

Contacts

ToolPlanAccessSummary
cw_count_contactsFreeRead-onlyGet total count of contacts matching optional conditions.
cw_create_contactProWriteCreate a new contact record.
cw_create_contact_communicationProDestructiveAdd a new communication item (email, phone, fax) to a contact.
cw_create_contact_noteProDestructiveCreate a new note on a contact.
cw_delete_contactProDestructivePermanently delete a contact by ID.
cw_get_contactFreeRead-onlyRetrieve full details for a single contact by ID.
cw_list_company_contactsFreeRead-onlyList all contacts for a specific company.
cw_list_contact_communicationsFreeRead-onlyList all communication items (email, phone, fax) for a contact.
cw_list_contact_notesFreeRead-onlyList all notes for a contact.
cw_list_contactsFreeRead-onlyList contacts with optional filtering, ordering, and pagination.
cw_search_contactsFreeRead-onlySearch contacts by name, email address, or phone number.
cw_update_contactProWriteUpdate an existing contact using JSON Patch operations.

[ConnectWise] Get total count of contacts matching optional conditions. Returns a count object. Useful for pagination planning or dashboards.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter. ConnectWise filter grammar (NOT SQL or OData). Form: field op value, joined by 'and'/'or', grouped with ( ). Nested fields use '/': status/name, company/id, company/identifier, owner/id. Operators: =, !=, <, <=, >, >=, 'contains' (substring), 'like' (with % wildcard), 'in (...)'. Quote string values with single quotes, e.g. status/name='Open' (double quotes also work but must be escaped inside JSON). Dates go in square brackets: lastUpdated>[2026-01-01T00:00:00Z]. Booleans and null are bare keywords: closedFlag=false, owner/id=null. Examples: status/name='Open' and closedFlag=false ; company/id=123 and priority/name!='Low' ; summary contains 'vpn'. Avoid SQL: no leading WHERE, no '==' (use '='), do not leave string values unquoted.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new contact record. Returns the created contact with its assigned ID. The JSON must include at minimum 'firstName', 'lastName', and a company reference.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the contact to create. Example: {"firstName": "John", "lastName": "Doe", "company": {"id": 123}, "title": "IT Manager", "communicationItems": [{"type": {"id": 1}, "value": "john@example.com", "communicationType": "Email"}]}.

[ConnectWise] Add a new communication item (email, phone, fax) to a contact. Returns the created communication with its assigned ID.

ParamTypeRequiredDefaultDescription
contactIdintegeryesThe ConnectWise contact ID to add the communication to.
fieldsJsonstringyesJSON object for the communication to create. Example: {"type": {"id": 1}, "value": "john@example.com", "communicationType": "Email", "defaultFlag": true}.

[ConnectWise] Create a new note on a contact. Returns the created note with its assigned ID. Requires a valid contact ID -- use cw_list_contacts to find IDs.

ParamTypeRequiredDefaultDescription
contactIdintegeryesThe ConnectWise contact ID to add the note to.
fieldsJsonstringyesJSON object for the note to create. Example: {"text": "Spoke with contact about renewal", "type": {"id": 1}, "flagged": false}.

[ConnectWise] Permanently delete a contact by ID. This is irreversible. Verify the contact ID with cw_get_contact before deleting.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise contact ID to delete.

[ConnectWise] Retrieve full details for a single contact by ID. Returns contact info including name, company, title, email, phone, and communication items. Requires a valid contact ID -- use cw_list_contacts or cw_search_contacts to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe ConnectWise contact ID.

[ConnectWise] List all contacts for a specific company. A convenience tool that filters contacts to a single company by ID. Useful for viewing the full contact roster for a client before creating tickets or communications.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all communication items (email, phone, fax) for a contact. Returns communication type, value, and default flags. Requires a valid contact ID. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
contactIdintegeryesThe ConnectWise contact ID.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all notes for a contact. Returns note text, type, and timestamps. Requires a valid contact ID. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
contactIdintegeryesThe ConnectWise contact ID.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List contacts with optional filtering, ordering, and pagination. Returns contact summaries including ID, name, company, email, and phone. Use this to discover contact IDs for communication records or ticket associations.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter. ConnectWise filter grammar (NOT SQL or OData). Form: field op value, joined by 'and'/'or', grouped with ( ). Nested fields use '/': status/name, company/id, company/identifier, owner/id. Operators: =, !=, <, <=, >, >=, 'contains' (substring), 'like' (with % wildcard), 'in (...)'. Quote string values with single quotes, e.g. status/name='Open' (double quotes also work but must be escaped inside JSON). Dates go in square brackets: lastUpdated>[2026-01-01T00:00:00Z]. Booleans and null are bare keywords: closedFlag=false, owner/id=null. Examples: status/name='Open' and closedFlag=false ; company/id=123 and priority/name!='Low' ; summary contains 'vpn'. Avoid SQL: no leading WHERE, no '==' (use '='), do not leave string values unquoted.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOrder results by field. Examples: "firstName asc", "lastName desc".
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Search contacts by name, email address, or phone number. Matches a substring of first name or last name, and a substring of any communication item value (email, direct phone, mobile phone, fax). Returns matching contacts. Use this when you know the contact's name, email, or phone but not the ID. Phone note: ConnectWise matches the stored text literally and does not normalize numbers, so search the digits as they are stored (e.g. '5551234'); if a number is stored with spaces or a country code, search a distinctive fragment of it.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
searchstringyesSearch text: a name fragment, an email address, or a phone number. Matched as a substring against first name, last name, and every communication item value (email, phone, fax).

[ConnectWise] Update an existing contact using JSON Patch operations. Returns the updated contact. Use cw_get_contact to check current values before updating.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise contact ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/title", "value": "CTO"}, {"op": "replace", "path": "/firstName", "value": "Jonathan"}].

Configurations (Assets)

ToolPlanAccessSummary
cw_count_configurationsFreeRead-onlyGet total count of configurations matching optional conditions.
cw_create_configurationProWriteCreate a new configuration (asset) record.
cw_delete_configurationProDestructivePermanently delete a configuration (asset) by ID.
cw_get_configurationFreeRead-onlyRetrieve full details for a single configuration (asset) by ID.
cw_list_active_configurationsFreeRead-onlyList all configurations (assets) with active status.
cw_list_company_configurationsFreeRead-onlyList all configurations (assets) for a specific company.
cw_list_configurationsFreeRead-onlyList configurations (assets/CIs) with optional filtering, ordering, and pagination.
cw_search_configurationsFreeRead-onlySearch configurations (assets) by name, serial number, or MAC address.
cw_update_configurationProWriteUpdate an existing configuration (asset) using JSON Patch operations.

[ConnectWise] Get total count of configurations matching optional conditions. Returns a count object. Useful for pagination planning or asset inventory dashboards.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Active'", "company/id=123". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
managedIdentifierstringnonullOptional managedIdentifier filter the ConnectWise API declares on this route: the identifier a managed-device integration stamps on the configuration.

[ConnectWise] Create a new configuration (asset) record. Returns the created configuration with its assigned ID. The JSON must include at minimum 'name', a company reference, and a type reference. Use cw_discover_configuration_types and cw_discover_configuration_statuses to find valid reference values.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the configuration to create. Example: {"name": "DESKTOP-001", "company": {"id": 123}, "type": {"id": 5}, "status": {"id": 1}, "serialNumber": "SN12345", "modelNumber": "OptiPlex 7090"}.

[ConnectWise] Permanently delete a configuration (asset) by ID. This is irreversible. Verify the configuration ID with cw_get_configuration before deleting.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise configuration ID to delete.

[ConnectWise] Retrieve full details for a single configuration (asset) by ID. Returns configuration info including name, type, status, company, serial number, and custom fields. Requires a valid configuration ID -- use cw_list_configurations to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe ConnectWise configuration ID.

[ConnectWise] List all configurations (assets) with active status. Returns only assets where status is 'Active', excluding retired or decommissioned equipment. Useful for current asset inventory views.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all configurations (assets) for a specific company. A convenience tool that filters configurations to a single company by ID. Useful for asset inventory reviews or pre-ticket context gathering.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List configurations (assets/CIs) with optional filtering, ordering, and pagination. Returns configuration summaries including ID, name, type, status, company, and serial number. Use this to discover configuration IDs for asset management.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Active'", "company/id=123". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
managedIdentifierstringnonullOptional managedIdentifier filter the ConnectWise API declares on this route: the identifier a managed-device integration stamps on the configuration.
orderBystringnonullOrder results by field. Examples: "name asc", "id desc".
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Search configurations (assets) by name, serial number, or MAC address. Returns matching configuration records. Use this when you know a device name, serial number, or MAC but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against configuration name, serial number, or MAC address.

[ConnectWise] Update an existing configuration (asset) using JSON Patch operations. Returns the updated configuration. Use cw_get_configuration to check current values before updating.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise configuration ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "DESKTOP-002"}, {"op": "replace", "path": "/serialNumber", "value": "SN67890"}].

Company & Contact Discovery

ToolPlanAccessSummary
cw_discover_company_groupsFreeRead-onlyList all available company groups.
cw_discover_company_note_typesFreeRead-onlyList all available company note types (e.g., General, Billing, Technical).
cw_discover_company_statusesFreeRead-onlyList all available company statuses (e.g., Active, Inactive).
cw_discover_company_typesFreeRead-onlyList all available company types (e.g., Client, Prospect, Vendor).
cw_discover_configuration_statusesFreeRead-onlyList all available configuration (asset) statuses (e.g., Active, Retired, In Repair).
cw_discover_configuration_type_questionsFreeRead-onlyList all questions (custom fields) defined for a configuration type.
cw_discover_configuration_typesFreeRead-onlyList all available configuration (asset) types (e.g., Desktop, Server, Network Device).
cw_discover_contact_departmentsFreeRead-onlyList all available contact departments (e.g., IT, Finance, Operations).
cw_discover_contact_groupsFreeRead-onlyList all available contact groups.
cw_discover_contact_relationshipsFreeRead-onlyList all relationships for a specific contact.
cw_discover_contact_typesFreeRead-onlyList all available contact types (e.g., Primary, Billing, Technical).
cw_discover_portal_configurationsFreeRead-onlyList all portal configurations.
cw_get_company_usagesFreeRead-onlyGet usage counts for a company showing how many related records exist (tickets, contacts, configurations, etc.).
cw_list_active_companiesFreeRead-onlyList all active companies.
cw_list_company_teamsFreeRead-onlyList teams assigned to a specific company.

[ConnectWise] List all available company groups. Returns group IDs and names. Company groups are used for categorizing and organizing companies into logical collections (e.g., by region, service tier, or industry). In ConnectWise these are the marketing groups setup table; pass companyId to list the groups one company belongs to instead.

ParamTypeRequiredDefaultDescription
companyIdintegernonullOptional. A ConnectWise company ID: list that company's own group memberships instead of every group. Omit it to list all groups.
conditionsstringnonullConnectWise conditions filter. Examples: "name like 'VIP%'". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all available company note types (e.g., General, Billing, Technical). Returns type IDs and names. Use these IDs when creating company notes with cw_create_company_note. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available company statuses (e.g., Active, Inactive). Returns status IDs and names. Use these IDs when creating or filtering companies by status. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available company types (e.g., Client, Prospect, Vendor). Returns type IDs and names. Use these IDs when creating or filtering companies by type. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available configuration (asset) statuses (e.g., Active, Retired, In Repair). Returns status IDs and names. Use these IDs when creating or filtering configurations by status. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all questions (custom fields) defined for a configuration type. Returns question details including field type, options, and requirements. Requires a valid configuration type ID -- use cw_discover_configuration_types to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
typeIdintegeryesThe configuration type ID. Use cw_discover_configuration_types to find valid IDs.

[ConnectWise] List all available configuration (asset) types (e.g., Desktop, Server, Network Device). Returns type IDs and names. Use these IDs when creating or filtering configurations by type. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available contact departments (e.g., IT, Finance, Operations). Returns department IDs and names. Use these IDs when creating or filtering contacts by department. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available contact groups. Returns group IDs and names. Contact groups are used for categorizing contacts into logical collections for marketing, communication, or reporting purposes. In ConnectWise these are the marketing groups setup table; pass contactId to list the groups one contact belongs to instead.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "name like 'Newsletter%'". Use '/' for nested fields.
contactIdintegernonullOptional. A ConnectWise contact ID: list that contact's own group memberships instead of every group. Omit it to list all groups.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all relationships for a specific contact. Returns relationship details including related contact, company, and relationship type. Requires a valid contact ID -- use cw_list_contacts to find IDs.

ParamTypeRequiredDefaultDescription
contactIdintegeryesThe ConnectWise contact ID to list relationships for.

[ConnectWise] List all available contact types (e.g., Primary, Billing, Technical). Returns type IDs and names. Use these IDs when creating or filtering contacts by type. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all portal configurations. Returns portal setup details including URL, login settings, and company-specific portal configuration. Useful for understanding client portal access and settings. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Get usage counts for a company showing how many related records exist (tickets, contacts, configurations, etc.). Returns a breakdown of record counts by type. Useful for assessing impact before merging or deleting a company.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID.

[ConnectWise] List all active companies. A convenience filter that returns only companies with an Active status. Useful for quick client roster views or populating company dropdown lists.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List teams assigned to a specific company. Returns team details including team role, member assignments, and contact info. Requires a valid company ID -- use cw_list_companies or cw_search_companies to find IDs.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID.
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

Agreements

ToolPlanAccessSummary
cw_count_agreementsFreeRead-onlyGet total count of agreements matching optional conditions.
cw_create_agreementProDestructiveCreate a new agreement (contract).
cw_create_agreement_additionProDestructiveAdd a new addition (line item) to an agreement.
cw_delete_agreementProDestructivePermanently delete an agreement by ID.
cw_get_agreementFreeRead-onlyRetrieve full details for a single agreement by ID.
cw_list_active_agreementsFreeRead-onlyList all active (non-cancelled, non-expired) agreements.
cw_list_agreement_additionsFreeRead-onlyList the additions (line items) on an agreement.
cw_list_agreementsFreeRead-onlyList agreements (contracts) with optional filtering, ordering, and pagination.
cw_list_company_agreementsFreeRead-onlyList all agreements for a specific company.
cw_list_expiring_agreementsFreeRead-onlyList agreements expiring within a specified number of days.
cw_search_agreementsFreeRead-onlySearch agreements by name or company name.
cw_update_agreementProDestructiveUpdate an existing agreement using JSON Patch operations.

[ConnectWise] Get total count of agreements matching optional conditions. Returns a count object. Useful for pagination planning or revenue dashboards.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Active'", "company/id=123". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new agreement (contract). Returns the created agreement with its assigned ID. The JSON must include at minimum 'name', a company reference, and a type reference. Use cw_discover_agreement_types and cw_discover_billing_cycles to find valid reference values.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the agreement to create. Example: {"name": "Managed Services", "company": {"id": 123}, "type": {"id": 1}, "startDate": "2025-01-01T00:00:00Z", "billCycleId": {"id": 1}, "billAmount": 1500.00}.

[ConnectWise] Add a new addition (line item) to an agreement. Returns the created addition with its assigned ID. The JSON must include at minimum a product reference and quantity.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID to add the addition to.
fieldsJsonstringyesJSON object for the addition to create. Example: {"product": {"id": 10}, "quantity": 5, "lessIncluded": 0, "unitPrice": 25.00, "billCustomer": "Billable", "effectiveDate": "2025-01-01T00:00:00Z"}.

[ConnectWise] Permanently delete an agreement by ID. This is irreversible and will fail if the agreement has associated additions or billing records. Verify the agreement ID with cw_get_agreement before deleting.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise agreement ID to delete.

[ConnectWise] Retrieve full details for a single agreement by ID. Returns agreement info including name, type, company, billing cycle, start/end dates, and amounts. Requires a valid agreement ID -- use cw_list_agreements to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe ConnectWise agreement ID.

[ConnectWise] List all active (non-cancelled, non-expired) agreements. A convenience filter that returns only agreements where cancelledFlag=false. Useful for quick MRR reviews or client contract overviews.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the additions (line items) on an agreement. Returns addition details including product, quantity, amount, and billing info. Requires a valid agreement ID -- use cw_list_agreements to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
conditionsstringnonullConnectWise conditions filter applied to the additions. Examples: "cancelledDate=null", "product/identifier='BACKUP'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List agreements (contracts) with optional filtering, ordering, and pagination. Returns agreement summaries including ID, name, type, company, and billing details. Use this to discover agreement IDs for additions, billing analysis, or profitability review.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Active'", "company/id=123". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOrder results by field. Examples: "name asc", "id desc".
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all agreements for a specific company. A convenience tool that filters agreements to a single company. Useful for reviewing a client's contract portfolio.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List agreements expiring within a specified number of days. Useful for proactive renewal management -- returns active agreements whose endDate falls within the given window. Default is 90 days.

ParamTypeRequiredDefaultDescription
daysintegerno90Number of days from today to check for expiring agreements (default 90).
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search agreements by name or company name. Returns matching agreements ranked by relevance. Use this when looking for agreements by keyword rather than structured filtering with cw_list_agreements.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch term to match against agreement name or company name.

[ConnectWise] Update an existing agreement using JSON Patch operations. Returns the updated agreement. Use cw_get_agreement to check current values before updating.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise agreement ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "Updated Services"}, {"op": "replace", "path": "/billAmount", "value": 2000.00}].

Agreement Sub-Resources

ToolPlanAccessSummary
cw_copy_agreementProDestructiveCreate a copy of an existing agreement.
cw_create_agreement_adjustmentProDestructiveCreate a new adjustment on an agreement.
cw_create_agreement_siteProWriteAdd a site to an agreement's coverage.
cw_create_agreement_workroleProWriteAdd a work role to an agreement.
cw_create_agreement_worktypeProWriteAdd a work type to an agreement.
cw_get_agreement_recapsFreeRead-onlyGet recap/summary data for agreements.
cw_list_agreement_adjustmentsFreeRead-onlyList all adjustments for an agreement.
cw_list_agreement_board_defaultsFreeRead-onlyList all board defaults configured for an agreement.
cw_list_agreement_sitesFreeRead-onlyList all sites covered by an agreement.
cw_list_agreement_workrolesFreeRead-onlyList all work roles configured for an agreement.
cw_list_agreement_worktypesFreeRead-onlyList all work types configured for an agreement.
cw_update_agreement_additionProDestructiveUpdate an existing addition (line item) on an agreement using JSON Patch operations.

[ConnectWise] Create a copy of an existing agreement. Returns the newly created agreement with a new ID. The copy includes all additions, sites, work roles, and work types from the original. Useful for creating similar agreements for new clients.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID to copy.

[ConnectWise] Create a new adjustment on an agreement. Returns the created adjustment with its assigned ID. Adjustments modify the agreement billing total for a given period.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID to add the adjustment to.
fieldsJsonstringyesJSON object for the adjustment to create. Example: {"amount": -50.00, "description": "Discount for service outage", "effectiveDate": "2025-03-01T00:00:00Z"}.

[ConnectWise] Add a site to an agreement's coverage. Returns the created agreement site association. Use cw_list_company_sites to find valid site IDs.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
fieldsJsonstringyesJSON object for the site association. Example: {"company": {"id": 123}, "site": {"id": 1}}.

[ConnectWise] Add a work role to an agreement. Returns the created work role with its assigned ID. Use cw_discover_work_roles to find valid work role references.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
fieldsJsonstringyesJSON object for the work role. Example: {"workRole": {"id": 5}, "rate": 150.00, "effectiveDate": "2025-01-01T00:00:00Z"}.

[ConnectWise] Add a work type to an agreement. Returns the created work type with its assigned ID. Use cw_discover_work_types to find valid work type references.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
fieldsJsonstringyesJSON object for the work type. Example: {"workType": {"id": 3}, "rate": 125.00, "effectiveDate": "2025-01-01T00:00:00Z"}.

[ConnectWise] Get recap/summary data for agreements. Returns agreement financial summaries including billed amounts, adjustments, and profit information. Use conditions to filter to specific agreements or date ranges.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "id=123", "company/id=456". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all adjustments for an agreement. Returns adjustment details including amount, description, and effective date. Adjustments modify the agreement billing total. Requires a valid agreement ID -- use cw_list_agreements to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all board defaults configured for an agreement. Returns board default details including board reference, default work role, and work type. Board defaults define which settings are used when time is entered against the agreement on a specific service board. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all sites covered by an agreement. Returns site details including company site reference and coverage info. Requires a valid agreement ID -- use cw_list_agreements to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all work roles configured for an agreement. Returns work role details including rate, effective date, and ending date. Work roles define hourly rates for different staff roles under the agreement. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all work types configured for an agreement. Returns work type details including rate, effective date, and billing method. Work types define rates for different categories of work (e.g., remote, on-site) under the agreement. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Update an existing addition (line item) on an agreement using JSON Patch operations. Returns the updated addition. Use cw_list_agreement_additions to find valid addition IDs.

ParamTypeRequiredDefaultDescription
additionIdintegeryesThe addition ID to update.
agreementIdintegeryesThe ConnectWise agreement ID.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/quantity", "value": 10}, {"op": "replace", "path": "/unitPrice", "value": 30.00}].

Invoices

ToolPlanAccessSummary
cw_count_invoicesFreeRead-onlyGet a count of invoices matching optional conditions.
cw_create_invoiceProDestructiveCreate a new invoice.
cw_create_invoice_paymentProDestructiveRecord a payment against an invoice.
cw_get_invoiceFreeRead-onlyRetrieve full details for a single invoice by ID.
cw_get_invoice_pdfFreeRead-onlyDownload the PDF of an invoice by ID.
cw_list_company_invoicesFreeRead-onlyList all invoices for a specific company.
cw_list_invoice_paymentsFreeRead-onlyList all payments applied to an invoice.
cw_list_invoicesFreeRead-onlyList invoices with optional filtering, ordering, and pagination.
cw_list_recent_invoicesFreeRead-onlyList the most recent invoices ordered by date descending.
cw_search_invoicesFreeRead-onlySearch invoices by invoice number or company name.
cw_update_invoiceProDestructiveUpdate an existing invoice using JSON Patch operations.

[ConnectWise] Get a count of invoices matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for billing dashboards or checking result set size before paginating with cw_list_invoices.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Active'", "company/id=123". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new invoice. Returns the created invoice with its assigned ID. The JSON should include company reference and billing details. Use cw_discover_billing_terms and cw_discover_tax_codes to find valid reference values.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the invoice to create. Example: {"company": {"id": 123}, "billingTerms": {"id": 1}, "dueDate": "2025-04-30T00:00:00Z"}.

[ConnectWise] Record a payment against an invoice. Returns the created payment with its assigned ID. Requires a valid invoice ID -- use cw_list_invoices to find IDs.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the payment to create. Example: {"amount": 500.00, "paymentDate": "2025-03-15T00:00:00Z", "type": "Check"}.
invoiceIdintegeryesThe ConnectWise invoice ID to apply the payment to.

[ConnectWise] Retrieve full details for a single invoice by ID. Returns invoice info including number, company, total, tax, date, due date, and line items. Requires a valid invoice ID -- use cw_list_invoices to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe ConnectWise invoice ID.

[ConnectWise] Download the PDF of an invoice by ID. You get a time-limited download link plus the content type, file name and size, not the bytes themselves. The envelope keys are sasUrl, contentType, suggestedFileName, sizeBytes and expiresAt, and the link is valid for 15 minutes. Fetch it before it expires, because nothing in StackJack keeps a copy. ConnectWise renders the PDF through its Reporting Services, so a 500 here usually means the report server failed, not that the invoice is missing. Requires a valid invoice ID -- use cw_list_invoices to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise invoice ID.

[ConnectWise] List all invoices for a specific company. A convenience tool that filters invoices to a single company by ID. Useful for reviewing a client's billing history.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all payments applied to an invoice. Returns payment details including amount, date, and payment method. Requires a valid invoice ID -- use cw_list_invoices to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
invoiceIdintegeryesThe ConnectWise invoice ID.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List invoices with optional filtering, ordering, and pagination. Returns invoice summaries including ID, invoice number, company, total, date, and status. Use this to review billing history or find specific invoices.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Active'", "company/id=123". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOrder results by field. Examples: "date desc", "total asc".
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List the most recent invoices ordered by date descending. Useful for quick billing reviews -- shows the latest invoices across all companies without any filtering.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search invoices by invoice number or company name. Returns matching invoices. Use this when you know the invoice number or company name but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against invoice number or company name.

[ConnectWise] Update an existing invoice using JSON Patch operations. Returns the updated invoice. Use cw_get_invoice to check current values before updating.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise invoice ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/dueDate", "value": "2025-05-31T00:00:00Z"}, {"op": "replace", "path": "/status", "value": "Sent"}].

Accounting

ToolPlanAccessSummary
cw_count_gl_entriesFreeRead-onlyGet a count of general ledger entries matching optional conditions.
cw_count_unposted_expensesFreeRead-onlyGet a count of unposted expenses matching optional conditions.
cw_count_unposted_invoicesFreeRead-onlyGet a count of unposted invoices matching optional conditions.
cw_create_accounting_batchProDestructiveCreate a new accounting batch for grouping transactions.
cw_discover_billing_setupsFreeRead-onlyList all billing setup configurations.
cw_discover_billing_statusesFreeRead-onlyList all billing statuses.
cw_discover_delivery_methodsFreeRead-onlyList all invoice delivery methods.
cw_get_accounting_batchFreeRead-onlyRetrieve full details for a single accounting batch by ID.
cw_list_accounting_batchesFreeRead-onlyList accounting batches with optional filtering and pagination.
cw_list_gl_entriesFreeRead-onlyList general ledger (GL) entries with optional filtering and pagination.
cw_list_unposted_expensesFreeRead-onlyList unposted (pending) expenses with optional filtering and pagination.
cw_list_unposted_invoicesFreeRead-onlyList unposted (pending) invoices with optional filtering and pagination.
cw_list_unposted_paymentsFreeRead-onlyList unposted (pending) payments with optional filtering and pagination.

[ConnectWise] Get a count of general ledger entries matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for financial reporting dashboards.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "glAccount/id=5". Use '/' for nested fields.

[ConnectWise] Get a count of unposted expenses matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for expense approval pipeline dashboards.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'". Use '/' for nested fields.

[ConnectWise] Get a count of unposted invoices matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for billing pipeline dashboards.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "company/id=123". Use '/' for nested fields.

[ConnectWise] Create a new accounting batch for grouping transactions. Returns the created batch with its assigned ID. Batches are used to organize and export financial data to external accounting systems.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the batch to create. Example: {"name": "March 2025 Invoices"}.

[ConnectWise] List all billing setup configurations. Returns setup details including email templates, invoice templates, and billing defaults. Useful for understanding how billing is configured in the ConnectWise instance. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all billing statuses. Returns status IDs and names (e.g., Billed, Unbilled, Do Not Bill). Use these values when filtering invoices, time entries, or expenses by billing status. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all invoice delivery methods. Returns method IDs and names (e.g., Email, Print, Mail). Use these values when creating or updating invoices to specify how they should be delivered to customers. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Retrieve full details for a single accounting batch by ID. Returns batch info including name, status, transactions, and export details. Requires a valid batch ID -- use cw_list_accounting_batches to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe ConnectWise accounting batch ID.

[ConnectWise] List accounting batches with optional filtering and pagination. Returns batch summaries including ID, name, status, and export date. Batches group financial transactions for export to accounting systems.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status='Open'", "exportedFlag=false". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List general ledger (GL) entries with optional filtering and pagination. Returns posted GL transactions including account, amount, and reference. Useful for financial reporting and reconciliation.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "glAccount/id=5", "amount>1000". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List unposted (pending) expenses with optional filtering and pagination. Returns expenses that have not yet been posted to the GL. Useful for reviewing expense reports before finalizing.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List unposted (pending) invoices with optional filtering and pagination. Returns invoices that have not yet been posted to the GL. Useful for reviewing billing before finalizing.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "company/id=123", "total>100". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List unposted (pending) payments with optional filtering and pagination. Returns payments that have not yet been posted to the GL. Useful for reviewing incoming payments before finalizing.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "company/id=123". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

Finance Discovery

ToolPlanAccessSummary
cw_discover_agreement_typesFreeRead-onlyList all available agreement types (e.g., Standard, Block Time, Retainer).
cw_discover_billing_cyclesFreeRead-onlyList all available billing cycles (e.g., Monthly, Quarterly, Annually).
cw_discover_billing_termsFreeRead-onlyList all available billing terms (e.g., Net 30, Net 60, Due on Receipt).
cw_discover_currenciesFreeRead-onlyList all available currencies.
cw_discover_gl_accountsFreeRead-onlyList all available general ledger (GL) accounts.
cw_discover_invoice_templatesFreeRead-onlyList all available invoice templates.
cw_discover_tax_codesFreeRead-onlyList all available tax codes.

[ConnectWise] List all available agreement types (e.g., Standard, Block Time, Retainer). Returns type IDs and names. Use these IDs when creating or filtering agreements by type. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available billing cycles (e.g., Monthly, Quarterly, Annually). Returns cycle IDs and names. Use these IDs when creating agreements with specific billing schedules. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available billing terms (e.g., Net 30, Net 60, Due on Receipt). Returns term IDs and names. Use these IDs when creating agreements or invoices with specific payment terms. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available currencies. Returns currency IDs, codes, symbols, and names. Use these IDs when creating agreements or invoices in specific currencies. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available general ledger (GL) accounts. Returns account IDs, numbers, and names. Use these IDs when configuring agreement or invoice GL mappings. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available invoice templates. Returns template IDs and names. Invoice templates control the layout and formatting of generated invoices. Use these IDs when configuring billing setups or creating invoices. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available tax codes. Returns tax code IDs, names, and rates. Use these IDs when creating agreements or invoices that require tax configuration. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

Time Entries

ToolPlanAccessSummary
cw_count_time_entriesFreeRead-onlyGet a count of time entries matching optional conditions.
cw_create_time_entryProDestructiveCreate a new time entry.
cw_delete_time_entryProDestructivePermanently delete a time entry by ID.
cw_get_time_entryFreeRead-onlyRetrieve a single time entry by ID.
cw_list_company_time_entriesFreeRead-onlyList time entries charged to a specific company.
cw_list_member_time_entriesFreeRead-onlyList time entries for a specific member by identifier.
cw_list_time_entriesFreeRead-onlyList time entries with optional filtering and sorting.
cw_list_today_time_entriesFreeRead-onlyList all time entries for today.
cw_list_unbilled_time_entriesFreeRead-onlyList time entries that have not yet been billed.
cw_search_time_entriesFreeRead-onlySearch time entries by notes content or member identifier.
cw_update_time_entryProDestructiveUpdate an existing time entry using JSON Patch operations.

[ConnectWise] Get a count of time entries matching optional conditions. Returns the total number of matching entries without fetching data. Useful for dashboards, reporting, and checking result set size before paginating with cw_list_time_entries.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new time entry. Requires at minimum a member reference and either timeStart/timeEnd or actualHours. Use cw_discover_work_types and cw_discover_work_roles to find valid work type and role IDs. Returns the created time entry with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesTime entry fields as JSON. Required: member ({"identifier": "jsmith"}), and either timeStart+timeEnd or actualHours. Optional: chargeToId, chargeToType, workType, workRole, notes, billableOption. Example: {"member": {"identifier": "jsmith"}, "timeStart": "2024-01-15T09:00:00Z", "timeEnd": "2024-01-15T10:30:00Z", "notes": "Troubleshooting network issue"}

[ConnectWise] Permanently delete a time entry by ID. This cannot be undone. Verify the entry with cw_get_time_entry before deleting. Requires a valid time entry ID — use cw_list_time_entries to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise time entry ID to delete. Verify with cw_get_time_entry before deleting.

[ConnectWise] Retrieve a single time entry by ID. Returns full time entry details including member, hours, charge-to reference, work type, work role, notes, and billable status. Requires a valid time entry ID — use cw_list_time_entries to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise time entry ID.

[ConnectWise] List time entries charged to a specific company. A convenience tool that filters time entries by company ID. Useful for reviewing hours logged against a client for billing or utilization analysis.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List time entries for a specific member by identifier. A convenience tool that filters time entries to a single member. Useful for reviewing a technician's logged time.

ParamTypeRequiredDefaultDescription
memberIdentifierstringyesThe ConnectWise member identifier (e.g., 'jsmith').
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List time entries with optional filtering and sorting. Returns paginated time entry summaries including member, hours, charge-to reference, work type, and billable status. Use this to review logged time across the team or for specific members/tickets.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullSort order. Examples: "id desc", "timeStart asc". Use field names from the time entry object.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all time entries for today. Useful for daily standup reviews and monitoring current day activity across the team.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List time entries that have not yet been billed. Returns unbilled time entry records. Useful for identifying revenue that needs to be invoiced.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search time entries by notes content or member identifier. Returns matching time entries ranked by relevance. Use this when looking for time entries by keyword rather than structured filtering with cw_list_time_entries.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch term to match against time entry notes or member identifier.

[ConnectWise] Update an existing time entry using JSON Patch operations. Requires a valid time entry ID — use cw_list_time_entries to find IDs. Returns the updated time entry.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise time entry ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "notes", "value": "Updated notes"}, {"op": "replace", "path": "actualHours", "value": 2.5}]

Timesheets

ToolPlanAccessSummary
cw_count_timesheetsFreeRead-onlyGet a count of timesheets matching optional conditions.
cw_get_timesheetFreeRead-onlyRetrieve a single timesheet by ID.
cw_list_pending_timesheetsFreeRead-onlyList timesheets pending approval.
cw_list_timesheetsFreeRead-onlyList timesheets with optional filtering.
cw_search_timesheetsFreeRead-onlySearch timesheets by member name or identifier.

[ConnectWise] Get a count of timesheets matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for tracking timesheet submission or approval backlogs.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.

[ConnectWise] Retrieve a single timesheet by ID. Returns full timesheet details including member, period dates, approval status, and associated time entries. Requires a valid timesheet ID — use cw_list_timesheets to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise timesheet ID.

[ConnectWise] List timesheets pending approval. A convenience filter that returns only timesheets with a 'New' or submitted status. Useful for managers reviewing timesheet approval queues.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List timesheets with optional filtering. Returns paginated timesheet summaries including member, period, status, and total hours. Timesheets aggregate time entries into approval workflows. Use this to review timesheet submissions and approval status.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search timesheets by member name or identifier. Returns matching timesheets. Use this when you know the member but want to find their timesheet submissions.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against member identifier.

Time Discovery

ToolPlanAccessSummary
cw_discover_charge_code_expense_typesFreeRead-onlyList expense types associated with a specific charge code.
cw_discover_charge_codesFreeRead-onlyList all available charge codes.
cw_discover_time_accrualsFreeRead-onlyList all available time accruals.
cw_discover_work_role_locationsFreeRead-onlyList location-specific rate overrides for a work role.
cw_discover_work_rolesFreeRead-onlyList all available work roles.
cw_discover_work_typesFreeRead-onlyList all available work types.
cw_list_time_accrual_detailsFreeRead-onlyList detail entries for a specific time accrual.

[ConnectWise] List expense types associated with a specific charge code. Returns expense type entries that define how expenses are categorized under this charge code. Requires a valid charge code ID — use cw_discover_charge_codes to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
chargeCodeIdintegeryesThe numeric ConnectWise charge code ID.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available charge codes. Charge codes define how time is categorized for billing and reporting. Use this to find valid charge code IDs when creating time entries. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available time accruals. Time accruals track PTO, vacation, sick time, and other accrual-based time balances for members. Use this to find valid accrual IDs. Call cw_list_time_accrual_details to see individual accrual entries. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List location-specific rate overrides for a work role. Returns location entries with billing rates that may differ from the work role's default rate. Requires a valid work role ID — use cw_discover_work_roles to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
workRoleIdintegeryesThe numeric ConnectWise work role ID.

[ConnectWise] List all available work roles. Work roles define the billing rate category for time entries (e.g., Engineer, Project Manager). Use this to find valid work role IDs when creating or filtering time entries. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available work types. Work types categorize the kind of work performed (e.g., Remote Support, On-Site, Travel). Use this to find valid work type IDs when creating or filtering time entries. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List detail entries for a specific time accrual. Returns individual accrual transactions including date, hours, and reason. Requires a valid accrual ID — use cw_discover_time_accruals to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
accrualIdintegeryesThe numeric ConnectWise time accrual ID.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

Projects

ToolPlanAccessSummary
cw_count_projectsFreeRead-onlyGet a count of projects matching optional conditions.
cw_create_projectProWriteCreate a new project.
cw_delete_projectProDestructivePermanently delete a project by ID.
cw_get_projectFreeRead-onlyRetrieve a single project by ID.
cw_list_active_projectsFreeRead-onlyList all active (non-closed) projects.
cw_list_company_projectsFreeRead-onlyList all projects for a specific company.
cw_list_overdue_projectsFreeRead-onlyList active projects that are past their estimated end date.
cw_list_project_billing_ratesFreeRead-onlyList billing rates configured for a specific project.
cw_list_project_phasesFreeRead-onlyList phases for a specific project.
cw_list_projectsFreeRead-onlyList projects with optional filtering and sorting.
cw_search_projectsFreeRead-onlySearch projects by name or company name.
cw_update_projectProWriteUpdate an existing project using JSON Patch operations.

[ConnectWise] Get a count of projects matching optional conditions. Returns the total number of matching projects without fetching data. Useful for dashboards, reporting, and checking result set size before paginating with cw_list_projects.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new project. Requires at minimum a name and board reference. Call cw_discover_project_boards first to find valid board IDs. Returns the created project with its assigned ID. This creates data visible to project managers and team members.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesProject fields as JSON. Required: {"name": "...", "board": {"id": N}}. Optional: status, company, manager, estimatedStart, estimatedEnd, billingMethod, budgetHours. Example: {"name": "Office Migration", "board": {"id": 1}, "company": {"id": 42}, "estimatedStart": "2024-01-01T00:00:00Z"}

[ConnectWise] Permanently delete a project by ID. This cannot be undone and will remove all associated phases, tickets, and team member assignments. Verify the project with cw_get_project before deleting. Requires a valid project ID — use cw_list_projects to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise project ID to delete. Verify with cw_get_project before deleting.

[ConnectWise] Retrieve a single project by ID. Returns full project details including name, status, company, manager, budget, billing method, phases, and scheduling info. Requires a valid project ID — use cw_list_projects to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise project ID.

[ConnectWise] List all active (non-closed) projects. A convenience filter that returns only projects with an active status. Useful for quick project portfolio views without needing to know status IDs.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all projects for a specific company. A convenience tool that filters projects to a single company by ID. Useful for reviewing a client's project portfolio or planning new work.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List active projects that are past their estimated end date. Useful for project management oversight -- identifies projects that may need attention or schedule adjustments.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List billing rates configured for a specific project. Returns rate records including work role, work type, and hourly rate. Requires a valid project ID — use cw_list_projects to find IDs.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "workRole/id=4". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
projectIdintegeryesThe numeric ConnectWise project ID.

[ConnectWise] List phases for a specific project. Returns phase summaries including ID, description, scheduled dates, and budget info. Phases break projects into manageable milestones. Requires a valid project ID — use cw_list_projects to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
projectIdintegeryesThe numeric ConnectWise project ID.

[ConnectWise] List projects with optional filtering and sorting. Returns paginated project summaries including ID, name, status, company, manager, and budget info. Use this to browse projects or narrow results before fetching full details with cw_get_project. Call cw_discover_project_statuses and cw_discover_project_types first to learn valid filter values.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullSort order. Examples: "id desc", "name asc". Use field names from the project object.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search projects by name or company name. Returns matching projects ranked by relevance. Use this when looking for projects by keyword rather than structured filtering with cw_list_projects.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch term to match against project name or company name.

[ConnectWise] Update an existing project using JSON Patch operations. Requires a valid project ID — use cw_list_projects to find IDs. Returns the updated project.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise project ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "name", "value": "Updated Project"}, {"op": "replace", "path": "status", "value": {"id": 2}}]

Project Phases

ToolPlanAccessSummary
cw_create_project_phaseProWriteCreate a new phase within a project.
cw_get_project_phaseFreeRead-onlyRetrieve a single project phase by project and phase ID.
cw_update_project_phaseProWriteUpdate an existing project phase using JSON Patch operations.

[ConnectWise] Create a new phase within a project. Phases break projects into manageable stages with their own schedules, budgets, and ticket assignments. Requires a valid project ID — use cw_list_projects to find IDs. Call cw_discover_phase_statuses to learn valid status values. Returns the created phase with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesPhase fields as JSON. Required: {"description": "..."}. Optional: board, status, scheduledHours, budgetHours, wbsCode. Example: {"description": "Phase 1 - Discovery", "board": {"id": 5}, "scheduledHours": 40}
projectIdintegeryesThe numeric ConnectWise project ID to add the phase to.

[ConnectWise] Retrieve a single project phase by project and phase ID. Returns full phase details including description, board, status, scheduled hours, actual hours, and budget. Requires valid project and phase IDs — use cw_list_project_phases on a project to find phase IDs.

ParamTypeRequiredDefaultDescription
phaseIdintegeryesThe numeric ConnectWise phase ID within the project.
projectIdintegeryesThe numeric ConnectWise project ID.

[ConnectWise] Update an existing project phase using JSON Patch operations. Requires valid project and phase IDs — use cw_list_project_phases to find phase IDs. Returns the updated phase.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "description", "value": "Updated Phase Name"}, {"op": "replace", "path": "scheduledHours", "value": 60}]
phaseIdintegeryesThe numeric ConnectWise phase ID to update.
projectIdintegeryesThe numeric ConnectWise project ID.

Project Notes & Team

ToolPlanAccessSummary
cw_create_project_noteProDestructiveAdd a note to a project.
cw_create_project_team_memberProWriteAdd a team member to a project.
cw_list_project_contactsFreeRead-onlyList contacts associated with a specific project.
cw_list_project_notesFreeRead-onlyList notes for a specific project.
cw_list_project_team_membersFreeRead-onlyList team members assigned to a specific project.

[ConnectWise] Add a note to a project. Use this to record decisions, updates, or communication history. Requires a valid project ID — use cw_list_projects to find IDs. Returns the created note with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesNote fields as JSON. Required: {"text": "..."}. Optional: type, flagged. Example: {"text": "Kickoff meeting completed, requirements confirmed"}
projectIdintegeryesThe numeric ConnectWise project ID.

[ConnectWise] Add a team member to a project. Assigns a member with a specific work role and project role. Requires a valid project ID — use cw_list_projects to find IDs. Call cw_discover_work_roles and cw_discover_project_security_roles to find valid role IDs. Returns the created team member assignment.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesTeam member fields as JSON. Required: member reference. Optional: workRole, projectRole, startDate, endDate, scheduledHours. Example: {"member": {"identifier": "jsmith"}, "workRole": {"id": 3}, "projectRole": {"id": 1}}
projectIdintegeryesThe numeric ConnectWise project ID.

[ConnectWise] List contacts associated with a specific project. Returns contact references linked to this project including contact ID, name, and role. Requires a valid project ID — use cw_list_projects to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
projectIdintegeryesThe numeric ConnectWise project ID.

[ConnectWise] List notes for a specific project. Returns note summaries including ID, text, type, and created date. Project notes capture decisions, updates, and communication history. Requires a valid project ID — use cw_list_projects to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
projectIdintegeryesThe numeric ConnectWise project ID.

[ConnectWise] List team members assigned to a specific project. Returns member summaries including ID, member reference, work role, and project role. Use this to see who is assigned to a project and their roles. Requires a valid project ID — use cw_list_projects to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
projectIdintegeryesThe numeric ConnectWise project ID.

Project Tickets

ToolPlanAccessSummary
cw_count_project_ticketsFreeRead-onlyGet a count of project tickets matching optional conditions.
cw_create_project_ticketProDestructiveCreate a new project ticket.
cw_create_project_ticket_noteProDestructiveAdd a note to a project ticket.
cw_get_project_ticketFreeRead-onlyRetrieve a single project ticket by ID.
cw_list_project_ticket_notesFreeRead-onlyList notes for a specific project ticket.
cw_list_project_ticketsFreeRead-onlyList project tickets with optional filtering.
cw_search_project_ticketsFreeRead-onlySearch project tickets by summary keyword.
cw_update_project_ticketProDestructiveUpdate an existing project ticket using JSON Patch operations.

[ConnectWise] Get a count of project tickets matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for project workload assessment.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "project/id=5". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new project ticket. Requires at minimum a summary and project reference. Returns the created project ticket with its assigned ID. Use cw_list_projects to find valid project IDs and cw_discover_project_boards for board IDs.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesProject ticket fields as JSON. Required: {"summary": "...", "project": {"id": N}}. Optional: status, phase, assignedBy, resources, budgetHours, scheduledStart, scheduledEnd. Example: {"summary": "Configure firewall rules", "project": {"id": 5}, "phase": {"id": 1}}

[ConnectWise] Add a note to a project ticket. Use this to record updates, decisions, or communication on project work items. Requires a valid project ticket ID — use cw_list_project_tickets to find IDs. Returns the created note with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesNote fields as JSON. Required: {"text": "..."}. Optional: detailDescriptionFlag, internalAnalysisFlag, resolutionFlag. Example: {"text": "Completed initial assessment", "detailDescriptionFlag": true}
ticketIdintegeryesThe numeric ConnectWise project ticket ID.

[ConnectWise] Retrieve a single project ticket by ID. Returns full ticket details including summary, status, phase, project, assigned resources, and scheduling info. Requires a valid project ticket ID — use cw_list_project_tickets to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise project ticket ID.

[ConnectWise] List notes for a specific project ticket. Returns note summaries including ID, text, type, and created date. Requires a valid project ticket ID — use cw_list_project_tickets to find IDs.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ticketIdintegeryesThe numeric ConnectWise project ticket ID.

[ConnectWise] List project tickets with optional filtering. Returns paginated project ticket summaries including ID, summary, status, phase, and assigned resources. Project tickets track work items within projects. Use cw_discover_project_boards to find valid board IDs for filtering.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search project tickets by summary keyword. Returns matching project tickets. Use this when you know a keyword from the ticket summary but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against project ticket summary.

[ConnectWise] Update an existing project ticket using JSON Patch operations. Requires a valid project ticket ID — use cw_list_project_tickets to find IDs. Returns the updated project ticket.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise project ticket ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "summary", "value": "Updated summary"}, {"op": "replace", "path": "status", "value": {"id": 3}}]

Project Discovery

ToolPlanAccessSummary
cw_discover_phase_statusesFreeRead-onlyList all available project phase statuses.
cw_discover_project_billing_ratesFreeRead-onlyList billing rate overrides for a specific project.
cw_discover_project_boardsFreeRead-onlyList all available project boards.
cw_discover_project_security_rolesFreeRead-onlyList all available project security roles.
cw_discover_project_statusesFreeRead-onlyList all available project statuses.
cw_discover_project_typesFreeRead-onlyList all available project types.
cw_get_project_templateFreeRead-onlyRetrieve a single project template by ID.
cw_list_project_templatesFreeRead-onlyList all available project templates.

[ConnectWise] List all available project phase statuses. Phase statuses define the lifecycle of project phases (e.g., Open, In Progress, Completed). Use this to find valid status IDs when creating or updating project phases. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List billing rate overrides for a specific project. Returns rate entries that define custom billing rates for this project, which may differ from the default work role rates. Requires a valid project ID — use cw_list_projects to find IDs.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "workRole/id=4". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
projectIdintegeryesThe numeric ConnectWise project ID.

[ConnectWise] List all available project boards. Project boards organize projects into categories with their own workflows and statuses. In ConnectWise a project board is a service board with projectFlag=true, so the ids work anywhere a board id does. Use this to find valid board IDs when creating projects or filtering with cw_list_projects.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter, combined with projectFlag=true. Examples: "name like 'Pro%'", "inactiveFlag=false". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all available project security roles. Security roles define what permissions team members have within a project (e.g., Project Manager, Team Member, Read Only). Use this to find valid role IDs when adding team members to projects. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available project statuses. Statuses define the lifecycle stages of projects (e.g., Open, In Progress, Completed, Closed). Use this to find valid status IDs when creating or filtering projects. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available project types. Project types categorize projects (e.g., Internal, Client, Infrastructure). Use this to find valid type IDs when creating or filtering projects. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Retrieve a single project template by ID. Returns full template details including name, description, phases, and default settings. Requires a valid template ID — use cw_list_project_templates to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise project template ID.

[ConnectWise] List all available project templates. Templates provide pre-configured project structures with phases, tickets, and team assignments. Use this to find templates when creating new projects based on standard workflows. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

Opportunities

ToolPlanAccessSummary
cw_convert_opportunity_to_sales_orderProDestructiveConvert a won sales opportunity into a sales order.
cw_convert_opportunity_to_ticketProDestructiveConvert a won sales opportunity into a service ticket.
cw_count_opportunitiesFreeRead-onlyGet a count of sales opportunities matching optional conditions.
cw_create_opportunityProWriteCreate a new sales opportunity.
cw_delete_opportunityProDestructivePermanently delete a sales opportunity by ID.
cw_get_opportunityFreeRead-onlyRetrieve a single sales opportunity by ID.
cw_list_company_opportunitiesFreeRead-onlyList all sales opportunities for a specific company.
cw_list_opportunitiesFreeRead-onlyList sales opportunities with optional filtering and sorting.
cw_list_won_opportunitiesFreeRead-onlyList sales opportunities with status 'Won'.
cw_search_opportunitiesFreeRead-onlySearch sales opportunities by name or company name.
cw_update_opportunityProWriteUpdate an existing sales opportunity using JSON Patch operations.

[ConnectWise] Convert a won sales opportunity into a sales order. Creates a new sales order based on the opportunity details including products and pricing. This is typically used after a deal is closed/won to process the order. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. Returns the conversion result.

ParamTypeRequiredDefaultDescription
conversionPropertiesJsonstringnonullOptional JSON object with conversion properties. Omit or pass null to use ConnectWise defaults. Example: {"closeOpportunityFlag": true}
opportunityIdintegeryesThe numeric ConnectWise opportunity ID to convert.

[ConnectWise] Convert a won sales opportunity into a service ticket. Creates a new service ticket based on the opportunity details. This is typically used to initiate service delivery after closing a deal. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. Returns the conversion result.

ParamTypeRequiredDefaultDescription
conversionPropertiesJsonstringnonullOptional JSON object with conversion properties (e.g. board, status). Omit or pass null to use ConnectWise defaults. Example: {"board": {"id": 1}}
opportunityIdintegeryesThe numeric ConnectWise opportunity ID to convert.

[ConnectWise] Get a count of sales opportunities matching optional conditions. Returns the total number of matching opportunities without fetching data. Useful for pipeline dashboards, reporting, and checking result set size before paginating with cw_list_opportunities.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new sales opportunity. Requires at minimum a name. Call cw_discover_opportunity_types and cw_discover_opportunity_stages to find valid type and stage IDs. Returns the created opportunity with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesOpportunity fields as JSON. Required: {"name": "..."}. Optional: status, stage, type, company, contact, primarySalesRep, expectedCloseDate, probability, expectedRevenue. Example: {"name": "Cloud Migration - Contoso", "company": {"id": 42}, "expectedCloseDate": "2024-06-30T00:00:00Z", "probability": {"id": 3}}

[ConnectWise] Permanently delete a sales opportunity by ID. This cannot be undone. Verify the opportunity with cw_get_opportunity before deleting. Requires a valid opportunity ID — use cw_list_opportunities to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise opportunity ID to delete. Verify with cw_get_opportunity before deleting.

[ConnectWise] Retrieve a single sales opportunity by ID. Returns full opportunity details including name, status, stage, company, primary contact, expected revenue, probability, close date, and custom fields. Requires a valid opportunity ID — use cw_list_opportunities to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise opportunity ID.

[ConnectWise] List all sales opportunities for a specific company. A convenience tool that filters opportunities to a single company by ID. Useful for reviewing a client's sales history and active deals.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List sales opportunities with optional filtering and sorting. Returns paginated opportunity summaries including ID, name, status, stage, company, expected revenue, and close date. Use this to review the sales pipeline or narrow results before fetching full details with cw_get_opportunity. Call cw_discover_opportunity_statuses and cw_discover_opportunity_stages first to learn valid filter values.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullSort order. Examples: "id desc", "closedDate asc". Use field names from the opportunity object.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List sales opportunities with status 'Won'. Useful for revenue tracking, sales performance reviews, and identifying deals that need to be converted to agreements or projects.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search sales opportunities by name or company name. Returns matching opportunities ranked by relevance. Use this when looking for opportunities by keyword rather than structured filtering with cw_list_opportunities.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch term to match against opportunity name or company name.

[ConnectWise] Update an existing sales opportunity using JSON Patch operations. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. Returns the updated opportunity.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise opportunity ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "name", "value": "Updated Opportunity"}, {"op": "replace", "path": "stage", "value": {"id": 2}}]

Opportunity Sub-Resources

ToolPlanAccessSummary
cw_convert_opportunity_to_agreementProDestructiveConvert a won sales opportunity into an agreement.
cw_convert_opportunity_to_projectProDestructiveConvert a won sales opportunity into a project.
cw_create_opportunity_contactProWriteLink a contact to a sales opportunity.
cw_create_opportunity_noteProDestructiveAdd a note to a sales opportunity.
cw_create_opportunity_team_memberProWriteAdd a team member to a sales opportunity.
cw_list_opportunity_contactsFreeRead-onlyList contacts associated with a sales opportunity.
cw_list_opportunity_forecastsFreeRead-onlyList forecast entries for a sales opportunity.
cw_list_opportunity_notesFreeRead-onlyList notes attached to a sales opportunity.
cw_list_opportunity_teamFreeRead-onlyList team members assigned to a sales opportunity.

[ConnectWise] Convert a won sales opportunity into an agreement. Creates a new agreement based on the opportunity details. This is typically used after a deal is closed/won to set up recurring billing. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. Returns the conversion result.

ParamTypeRequiredDefaultDescription
conversionPropertiesJsonstringnonullOptional JSON object with conversion properties (e.g. agreement type, location). Omit or pass null to use ConnectWise defaults. Example: {"agreementType": {"id": 5}}
opportunityIdintegeryesThe numeric ConnectWise opportunity ID to convert.

[ConnectWise] Convert a won sales opportunity into a project. Creates a new project based on the opportunity details. This is typically used after a deal is closed/won to begin project delivery. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. Returns the conversion result.

ParamTypeRequiredDefaultDescription
conversionPropertiesJsonstringnonullOptional JSON object with conversion properties required by ConnectWise (e.g. board, estimatedStart). Omit or pass null to use ConnectWise defaults. Example: {"board": {"id": 1}, "estimatedStart": "2026-07-09T00:00:00Z"}
opportunityIdintegeryesThe numeric ConnectWise opportunity ID to convert.

[ConnectWise] Link a contact to a sales opportunity. Associates an existing contact with this deal. Requires a valid opportunity ID and contact reference. Returns the created opportunity-contact association.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesContact association fields as JSON. Required: contact reference. Example: {"contact": {"id": 45}, "role": {"id": 1}}
opportunityIdintegeryesThe numeric ConnectWise opportunity ID.

[ConnectWise] Add a note to a sales opportunity. Use this to record sales conversations, decisions, or follow-up items. Requires a valid opportunity ID. Returns the created note with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesNote fields as JSON. Required: {"text": "..."}. Optional: type, flagged. Example: {"text": "Client interested in premium tier", "type": {"id": 1}}
opportunityIdintegeryesThe numeric ConnectWise opportunity ID.

[ConnectWise] Add a team member to a sales opportunity. Assigns a member with a specific sales role and optional commission percentage. Requires a valid opportunity ID. Call cw_discover_sales_roles to find valid role IDs. Returns the created team member assignment.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesTeam member fields as JSON. Required: member reference. Optional: salesRole, commissionPercent. Example: {"member": {"identifier": "jsmith"}, "salesRole": {"id": 1}, "commissionPercent": 50}
opportunityIdintegeryesThe numeric ConnectWise opportunity ID.

[ConnectWise] List contacts associated with a sales opportunity. Returns contact references linked to this deal, including contact ID, name, and role. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
opportunityIdintegeryesThe numeric ConnectWise opportunity ID.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List forecast entries for a sales opportunity. Returns forecast data including revenue projections, probability, and close date estimates. Forecasts help predict revenue from the sales pipeline. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
opportunityIdintegeryesThe numeric ConnectWise opportunity ID.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List notes attached to a sales opportunity. Returns note summaries including ID, text, type, and created date. Opportunity notes capture sales conversations, decisions, and follow-up items. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
opportunityIdintegeryesThe numeric ConnectWise opportunity ID.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List team members assigned to a sales opportunity. Returns team member references including member, role, and commission percentage. Use this to see who is working on a deal. Requires a valid opportunity ID — use cw_list_opportunities to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
opportunityIdintegeryesThe numeric ConnectWise opportunity ID.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

Sales Activities

ToolPlanAccessSummary
cw_count_activitiesFreeRead-onlyGet a count of sales activities matching optional conditions.
cw_create_activityProWriteCreate a new sales activity.
cw_delete_activityProDestructivePermanently delete a sales activity by ID.
cw_get_activityFreeRead-onlyRetrieve a single sales activity by ID.
cw_list_activitiesFreeRead-onlyList sales activities with optional filtering.
cw_list_activity_stopwatches_by_memberFreeRead-onlyList activity stopwatches filtered by member identifier.
cw_search_activitiesFreeRead-onlySearch sales activities by name or member identifier.
cw_update_activityProWriteUpdate an existing sales activity using JSON Patch operations.

[ConnectWise] Get a count of sales activities matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for tracking activity volumes or checking result set size before paginating with cw_list_activities.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a new sales activity. Activities track sales interactions such as calls, meetings, emails, and follow-ups. Returns the created activity with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesActivity fields as JSON. Required: {"name": "..."}. Optional: type, status, assignTo, company, contact, opportunity, notes, dateStart, dateEnd. Example: {"name": "Follow-up call with Contoso", "type": {"id": 1}, "company": {"id": 42}, "assignTo": {"identifier": "jsmith"}}

[ConnectWise] Permanently delete a sales activity by ID. This cannot be undone. Verify the activity with cw_get_activity before deleting. Requires a valid activity ID — use cw_list_activities to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise activity ID to delete. Verify with cw_get_activity before deleting.

[ConnectWise] Retrieve a single sales activity by ID. Returns full activity details including name, type, status, assigned member, company, contact, opportunity, notes, and schedule info. Requires a valid activity ID — use cw_list_activities to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise activity ID.

[ConnectWise] List sales activities with optional filtering. Returns paginated activity summaries including ID, name, type, status, assigned member, company, and schedule info. Activities track sales interactions such as calls, meetings, emails, and follow-ups.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List activity stopwatches filtered by member identifier. Returns running or paused stopwatch records for activities. Use to find active timers associated with sales activities for a specific member.

ParamTypeRequiredDefaultDescription
memberIdentifierstringyesMember identifier to filter by.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search sales activities by name or member identifier. Returns matching activities. Use this when you know the activity name or assigned member but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against activity name or assigned member identifier.

[ConnectWise] Update an existing sales activity using JSON Patch operations. Requires a valid activity ID — use cw_list_activities to find IDs. Returns the updated activity.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise activity ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "name", "value": "Updated activity"}, {"op": "replace", "path": "status", "value": {"id": 2}}]

Sales Orders

ToolPlanAccessSummary
cw_count_ordersFreeRead-onlyGet a count of sales orders matching optional conditions.
cw_create_orderProDestructiveCreate a new sales order.
cw_create_order_line_itemProDestructiveAdd a line item to a sales order.
cw_get_orderFreeRead-onlyRetrieve a single sales order by ID.
cw_list_order_line_itemsFreeRead-onlyList line items for a specific sales order.
cw_list_ordersFreeRead-onlyList sales orders with optional filtering.
cw_search_ordersFreeRead-onlySearch sales orders by description or company name.
cw_update_orderProWriteUpdate an existing sales order using JSON Patch operations.

[ConnectWise] Get a count of sales orders matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for sales pipeline dashboards.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'". Use '/' for nested fields.

[ConnectWise] Create a new sales order. Sales orders represent committed deals that are ready for fulfillment. Typically created by converting a won opportunity, but can also be created directly. Call cw_discover_order_statuses to find valid status IDs. Returns the created order with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesSales order fields as JSON. Required: company reference. Optional: description, opportunity, status, contact, salesRep, notes. Example: {"company": {"id": 42}, "description": "Annual license renewal", "opportunity": {"id": 10}}

[ConnectWise] Add a line item to a sales order. Line items represent individual products or services being sold. Requires a valid sales order ID — use cw_list_orders to find IDs. Returns the created line item with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesLine item fields as JSON. Required: description or catalogItem reference. Optional: quantity, unitPrice, discount, taxableFlag. Example: {"catalogItem": {"id": 5}, "quantity": 10, "unitPrice": 99.99}
orderIdintegeryesThe numeric ConnectWise sales order ID.

[ConnectWise] Retrieve a single sales order by ID. Returns full order details including description, company, opportunity, status, total, line items, and billing info. Requires a valid sales order ID — use cw_list_orders to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise sales order ID.

[ConnectWise] List line items for a specific sales order. Returns product/service entries including description, quantity, unit price, and total. Requires a valid sales order ID — use cw_list_orders to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
orderIdintegeryesThe numeric ConnectWise sales order ID.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List sales orders with optional filtering. Returns paginated order summaries including ID, description, company, opportunity, status, and total. Sales orders represent committed deals from won opportunities.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "member/identifier='jsmith'". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search sales orders by description or company name. Returns matching orders. Use this when you know the order description or company but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against order description or company name.

[ConnectWise] Update an existing sales order using JSON Patch operations. Requires a valid sales order ID — use cw_list_orders to find IDs. Returns the updated order.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise sales order ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "description", "value": "Updated description"}, {"op": "replace", "path": "status", "value": {"id": 2}}]

Sales Discovery

ToolPlanAccessSummary
cw_discover_activity_statusesFreeRead-onlyList all available activity statuses.
cw_discover_activity_typesFreeRead-onlyList all available activity types.
cw_discover_opportunity_ratingsFreeRead-onlyList all available opportunity ratings.
cw_discover_opportunity_stagesFreeRead-onlyList all available opportunity stages.
cw_discover_opportunity_statusesFreeRead-onlyList all available opportunity statuses.
cw_discover_opportunity_typesFreeRead-onlyList all available opportunity types.
cw_discover_order_statusesFreeRead-onlyList all available sales order statuses.
cw_discover_sales_probabilitiesFreeRead-onlyList all available sales probabilities.
cw_discover_sales_rolesFreeRead-onlyList all available sales roles.

[ConnectWise] List all available activity statuses. Statuses define the lifecycle of sales activities (e.g., Open, Completed, Cancelled). Use this to find valid status IDs when creating or filtering sales activities. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available activity types. Activity types categorize sales activities (e.g., Phone Call, Email, Meeting, Demo). Use this to find valid type IDs when creating or filtering sales activities. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available opportunity ratings. Ratings qualify the likelihood and quality of a deal (e.g., Hot, Warm, Cold). Use this to find valid rating IDs when creating or filtering opportunities. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available opportunity stages. Stages represent the sales process steps (e.g., Prospecting, Qualification, Proposal, Negotiation, Closed). Use this to find valid stage IDs when creating or filtering opportunities. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available opportunity statuses. Statuses define the lifecycle of opportunities (e.g., Open, Won, Lost, Inactive). Use this to find valid status IDs when creating or filtering opportunities. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available opportunity types. Opportunity types categorize deals (e.g., New Business, Renewal, Upsell). Use this to find valid type IDs when creating or filtering opportunities. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available sales order statuses. Statuses define the lifecycle of sales orders (e.g., New, In Progress, Closed). Use this to find valid status IDs when creating or filtering sales orders. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available sales probabilities. Probabilities represent the likelihood of closing a deal (e.g., 10%, 25%, 50%, 75%, 90%). Use this to find valid probability IDs when creating or filtering opportunities. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all available sales roles. Sales roles define team member responsibilities on opportunities (e.g., Primary Rep, Secondary Rep, Engineer). Use this to find valid role IDs when adding team members to opportunities. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

Members

ToolPlanAccessSummary
cw_create_member_skillProWriteAssign a skill to a member.
cw_create_skillProWriteCreate a skill in the System > Setup Tables > Skills List.
cw_create_skill_categoryProWriteCreate a skill category in the System > Setup Tables > Skill Category List.
cw_delete_member_skillProDestructiveRemove a skill assignment from a member.
cw_delete_skillProDestructivePermanently delete a skill from the Skills List.
cw_delete_skill_categoryProDestructivePermanently delete a skill category from the Skill Category List.
cw_get_memberFreeRead-onlyGet member by numeric ID.
cw_get_system_infoFreeRead-onlyRetrieve ConnectWise system information including version and license info.
cw_list_active_membersFreeRead-onlyList all active (non-inactive) members.
cw_list_certificationsFreeRead-onlyList all certification types configured in ConnectWise.
cw_list_department_membersFreeRead-onlyList active members in a specific department.
cw_list_departmentsFreeRead-onlyList departments with optional filtering and pagination.
cw_list_member_certificationsFreeRead-onlyList certifications held by a specific member.
cw_list_member_delegationsFreeRead-onlyList delegations for a specific member.
cw_list_member_skillsFreeRead-onlyList skills assigned to a specific member.
cw_list_membersFreeRead-onlyList members with optional filtering, sorting, and pagination.
cw_list_skill_categoriesFreeRead-onlyList the skill categories configured in System > Setup Tables > Skill Category List.
cw_list_skillsFreeRead-onlyList all skills configured in ConnectWise.
cw_search_membersFreeRead-onlySearch members by name or identifier.
cw_update_member_skillProWriteUpdate a member's skill assignment (level, certification, years of experience, notes) using JSON Patch operations.
cw_update_skillProWriteUpdate a skill in the Skills List using JSON Patch operations.
cw_update_skill_categoryProWriteUpdate a skill category using JSON Patch operations.

[ConnectWise] Assign a skill to a member. ConnectWise requires both `skill` (a reference object, e.g. {"id":12}) and `skillLevel` (one of Beginner, Intermediate, Advanced, Expert); `certifiedFlag`, `yearsExperience`, and `notes` are optional. Example: {"skill":{"id":12},"skillLevel":"Advanced","yearsExperience":5,"certifiedFlag":true}. Use cw_list_skills to find skill IDs.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesMember skill fields as JSON. Required: skill (reference), skillLevel (Beginner|Intermediate|Advanced|Expert).
memberIdintegeryesThe numeric ConnectWise member ID. Use cw_list_members to find valid IDs.

[ConnectWise] Create a skill in the System > Setup Tables > Skills List. ConnectWise requires both `name` and `category` (a reference object, e.g. {"id":3}). Example: {"name":"Azure AD","category":{"id":3}}. Use cw_list_skill_categories to find category IDs.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesSkill fields as JSON. Required: name, category (reference).

[ConnectWise] Create a skill category in the System > Setup Tables > Skill Category List. ConnectWise requires `name`. Example: {"name":"Cloud"}.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesSkill category fields as JSON. Required: name.

[ConnectWise] Remove a skill assignment from a member. This unassigns the skill from that member only — the skill itself stays in the Skills List. Use cw_delete_skill to remove the skill definition.

ParamTypeRequiredDefaultDescription
idintegeryesThe member skill assignment ID to remove (from cw_list_member_skills), not the skill ID.
memberIdintegeryesThe numeric ConnectWise member ID.

[ConnectWise] Permanently delete a skill from the Skills List. This removes the skill definition for the whole company, not one member's assignment — use cw_delete_member_skill for that. A skill still assigned to members or mapped to a service board may be refused by ConnectWise; clear those references first.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric skill ID to delete.

[ConnectWise] Permanently delete a skill category from the Skill Category List. A category still referenced by skills may be refused by ConnectWise; reassign those skills with cw_update_skill or remove them with cw_delete_skill first.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric skill category ID to delete.

[ConnectWise] Get member by numeric ID. Accepts member identifier. Returns full member details including name, email, role, department, and inactive status. Requires a valid member ID — use cw_list_members to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise member ID.

[ConnectWise] Retrieve ConnectWise system information including version and license info. Use to validate connectivity.

[ConnectWise] List all active (non-inactive) members. A convenience filter that returns only members with inactiveFlag=false. Useful for quick team roster views or populating member dropdown lists.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all certification types configured in ConnectWise. Returns certification IDs and names. Use to discover available certification types before querying member-specific certifications with cw_list_member_certifications. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List active members in a specific department. A convenience tool that filters members by department identifier. Useful for department-level staffing views and workload distribution.

ParamTypeRequiredDefaultDescription
departmentstringyesThe department name or identifier to filter by (e.g., 'Engineering', 'Support').
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List departments with optional filtering and pagination. Returns department IDs and names. Use these values when filtering members or other department-scoped data.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "name='Engineering'". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List certifications held by a specific member. Returns certification records including name, number, and expiration date. Use to verify member qualifications or track certification renewals. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
memberIdintegeryesThe numeric ConnectWise member ID. Use cw_list_members to find valid IDs.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List delegations for a specific member. Returns delegation records showing who a member has delegated responsibilities to, including date ranges and delegation types. Use for coverage planning and OOO management. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
memberIdintegeryesThe numeric ConnectWise member ID. Use cw_list_members to find valid IDs.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List skills assigned to a specific member. Returns skill records including skill name, level, and years of experience. Use to understand a member's technical capabilities for dispatch or project assignment. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
memberIdintegeryesThe numeric ConnectWise member ID. Use cw_list_members to find valid IDs.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List members with optional filtering, sorting, and pagination. Returns member summaries including ID, identifier, name, email, and role. Use this to discover member IDs for filtering tickets, time entries, and other member-scoped data.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "inactiveFlag=false", "identifier='jsmith'". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullSort order. Examples: "identifier asc", "lastName desc".
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the skill categories configured in System > Setup Tables > Skill Category List. Returns category IDs and names. Use to discover the category ID that cw_create_skill requires.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Example: "name='Cloud'".
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all skills configured in ConnectWise. Returns skill IDs, names, and categories. Use to discover available skill types before querying member-specific skills with cw_list_member_skills. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Search members by name or identifier. Returns matching members ranked by relevance. Use this when you know the member's name or login identifier but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against member first name, last name, or identifier.

[ConnectWise] Update a member's skill assignment (level, certification, years of experience, notes) using JSON Patch operations. Example: [{"op":"replace","path":"skillLevel","value":"Expert"},{"op":"replace","path":"yearsExperience","value":8}]. skillLevel must be one of Beginner, Intermediate, Advanced, Expert. Use cw_list_member_skills to find the assignment ID.

ParamTypeRequiredDefaultDescription
idintegeryesThe member skill assignment ID (from cw_list_member_skills), not the skill ID.
memberIdintegeryesThe numeric ConnectWise member ID.
patchJsonstringyesJSON array of patch operations.

[ConnectWise] Update a skill in the Skills List using JSON Patch operations. Example: [{"op":"replace","path":"name","value":"Entra ID"}]. Use cw_list_skills to find skill IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric skill ID.
patchJsonstringyesJSON array of patch operations.

[ConnectWise] Update a skill category using JSON Patch operations. Example: [{"op":"replace","path":"name","value":"Cloud Platforms"}]. Use cw_list_skill_categories to find category IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric skill category ID.
patchJsonstringyesJSON array of patch operations.

Schedule

ToolPlanAccessSummary
cw_create_schedule_entryProWriteCreate a new schedule entry.
cw_delete_schedule_entryProDestructivePermanently delete a schedule entry by ID.
cw_get_schedule_entryFreeRead-onlyRetrieve a single schedule entry by ID.
cw_list_calendarsFreeRead-onlyList calendars with optional filtering.
cw_list_member_scheduleFreeRead-onlyList schedule entries for a specific member by identifier.
cw_list_member_today_scheduleFreeRead-onlyList today's schedule entries for a specific member.
cw_list_schedule_entriesFreeRead-onlyList schedule entries with optional filtering and sorting.
cw_list_upcoming_scheduleFreeRead-onlyList future schedule entries starting from today.
cw_update_schedule_entryProWriteUpdate an existing schedule entry using JSON Patch operations.

[ConnectWise] Create a new schedule entry. Requires at minimum a member reference and date range. Returns the created schedule entry with its assigned ID. This creates data visible to dispatchers and technicians. By default ConnectWise rejects an entry that overlaps an existing entry for the same member with a SystemConflict error -- set allowScheduleConflicts to true to book the overlap intentionally (double-booking).

ParamTypeRequiredDefaultDescription
allowScheduleConflictsbooleannonullSet true to create the entry even when it overlaps an existing entry for the same member, which ConnectWise otherwise rejects with 'Schedule conflicts with Schedule Id #...'. This is the API equivalent of accepting the desktop client's conflict prompt. Omit (the default) to leave ConnectWise's conflict validation in force.
fieldsJsonstringyesSchedule entry fields as JSON. Required: {"member": {"identifier": "..."}, "dateStart": "...", "dateEnd": "..."}. Optional: type, span, objectId, status, reminder, allowScheduleConflictsFlag.

[ConnectWise] Permanently delete a schedule entry by ID. This cannot be undone. Verify the entry with cw_get_schedule_entry before deleting. Requires a valid schedule entry ID — use cw_list_schedule_entries to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise schedule entry ID to delete. Verify with cw_get_schedule_entry before deleting.

[ConnectWise] Retrieve a single schedule entry by ID. Returns full schedule entry details including member, type, date range, status, and associated ticket or activity. Requires a valid schedule entry ID — use cw_list_schedule_entries to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise schedule entry ID.

[ConnectWise] List calendars with optional filtering. Returns paginated calendar records including name, holiday list, and schedule details. Useful for discovering available calendars when creating or filtering schedule entries.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "name='Default Calendar'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List schedule entries for a specific member by identifier. A convenience tool that filters schedule entries to a single member. Use this to quickly see a technician's upcoming or recent schedule.

ParamTypeRequiredDefaultDescription
memberIdentifierstringyesThe ConnectWise member identifier (e.g., 'jsmith').
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List today's schedule entries for a specific member. Useful for daily planning and dispatch -- shows what a technician has scheduled for the current day.

ParamTypeRequiredDefaultDescription
memberIdentifierstringyesThe ConnectWise member identifier (e.g., 'jsmith').
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List schedule entries with optional filtering and sorting. Returns paginated schedule entries including member, type, date range, and status. Use this to browse scheduled activities or narrow results before fetching full details with cw_get_schedule_entry.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'", "dateStart>=[2024-01-01T00:00:00Z]". Use '/' for nested fields, 'and'/'or' for boolean logic.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullSort order. Examples: "dateStart desc", "id asc". Use field names from the schedule entry object.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List future schedule entries starting from today. Useful for dispatch planning and capacity views -- shows all upcoming scheduled work across the team.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Update an existing schedule entry using JSON Patch operations. Requires a valid schedule entry ID — use cw_list_schedule_entries to find IDs. Returns the updated schedule entry. Moving an entry onto an existing booking hits the same SystemConflict rejection as create -- set allowScheduleConflicts to true to permit the overlap.

ParamTypeRequiredDefaultDescription
allowScheduleConflictsbooleannonullSet true to allow the updated entry to overlap an existing entry for the same member, which ConnectWise otherwise rejects with 'Schedule conflicts with Schedule Id #...'. Appends a replace operation for allowScheduleConflictsFlag. Omit (the default) to leave ConnectWise's conflict validation in force.
idintegeryesThe numeric ConnectWise schedule entry ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "dateEnd", "value": "2024-06-15T17:00:00Z"}]

Schedule Reference

ToolPlanAccessSummary
cw_discover_schedule_statusesFreeRead-onlyList all schedule statuses configured in ConnectWise.
cw_discover_schedule_typesFreeRead-onlyList all schedule types configured in ConnectWise.
cw_get_calendarFreeRead-onlyRetrieve a single calendar by ID.
cw_list_holiday_listsFreeRead-onlyList holiday lists with optional filtering.
cw_list_holidaysFreeRead-onlyList holidays within a specific holiday list.
cw_list_schedule_entry_countFreeRead-onlyGet a count of schedule entries matching optional conditions.
cw_search_schedule_entriesFreeRead-onlySearch schedule entries by member identifier.

[ConnectWise] List all schedule statuses configured in ConnectWise. Returns status IDs and names. Use to discover valid statuses when creating or filtering schedule entries. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all schedule types configured in ConnectWise. Returns type IDs and names. Use to discover valid schedule types when creating or filtering schedule entries. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Retrieve a single calendar by ID. Returns full calendar details including name, holiday list, and default schedule hours. Requires a valid calendar ID — use cw_list_calendars to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise calendar ID.

[ConnectWise] List holiday lists with optional filtering. Returns paginated holiday list records including name and associated holidays. Use to discover configured holiday schedules that affect SLA calculations and scheduling.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "name contains 'US'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List holidays within a specific holiday list. Returns holiday records including name, date, and hours off. Use to see which dates are configured as holidays for a given holiday list. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
holidayListIdintegeryesThe numeric ConnectWise holiday list ID. Use cw_list_holiday_lists to find valid IDs.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Get a count of schedule entries matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for understanding schedule density or checking result set size before paginating with cw_list_schedule_entries.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'", "dateStart>=[2024-01-01T00:00:00Z]". Use '/' for nested fields, 'and'/'or' for boolean logic.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Search schedule entries by member identifier. Returns matching schedule entries. Use this when you know the member but want to find their schedule entries.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against member identifier.

Procurement

ToolPlanAccessSummary
cw_bulk_create_po_line_itemsProDestructiveCreate multiple PO line items in a single bulk request.
cw_bulk_delete_po_line_itemsProDestructiveDelete multiple PO line items in a single request.
cw_bulk_replace_po_line_itemsProDestructiveReplace multiple PO line items in a single bulk PUT request.
cw_copy_catalog_itemProWriteCreate a copy of a catalog item.
cw_copy_purchase_orderProWriteCreate a copy of a purchase order.
cw_count_adjustment_detailsFreeRead-onlyCount detail lines on an adjustment.
cw_count_adjustment_typesFreeRead-onlyCount adjustment types matching an optional conditions filter.
cw_count_adjustment_types_infoFreeRead-onlyCount adjustment types at the info/count endpoint.
cw_count_adjustmentsFreeRead-onlyCount adjustments matching an optional conditions filter.
cw_count_catalog_componentsFreeRead-onlyCount components on a catalog bundle, optionally filtered by conditions.
cw_count_catalog_inventoryFreeRead-onlyCount inventory rows on a catalog item, optionally filtered by conditions.
cw_count_catalog_itemsFreeRead-onlyGet a count of catalog items matching optional conditions.
cw_count_catalog_items_endpointFreeRead-onlyCall the dedicated /procurement/catalog/count endpoint.
cw_count_catalog_items_infoFreeRead-onlyCount catalog items at the /procurement/catalog/info/count endpoint.
cw_count_catalog_min_stockFreeRead-onlyCount minimum-stock rows on a catalog item, optionally filtered by conditions.
cw_count_change_ordersFreeRead-onlyCount change orders.
cw_count_directional_syncsFreeRead-onlyCount directional syncs.
cw_count_invoice_groupingsFreeRead-onlyCount invoice groupings.
cw_count_manufacturersFreeRead-onlyCount manufacturers matching an optional conditions filter.
cw_count_manufacturers_infoFreeRead-onlyCount manufacturers at CW's /procurement/manufacturers/count/info endpoint.
cw_count_onhand_serialsFreeRead-onlyCount on-hand serial numbers matching an optional conditions filter.
cw_count_po_line_itemsFreeRead-onlyCount line items on a purchase order, optionally filtered.
cw_count_po_notesFreeRead-onlyCount notes on a purchase order, optionally filtered.
cw_count_po_quick_accessFreeRead-onlyRetrieve the quick-access count for a purchase order.
cw_count_po_status_email_templatesFreeRead-onlyCount email templates on a PO status.
cw_count_po_status_notificationsFreeRead-onlyCount notifications on a PO status.
cw_count_po_statusesFreeRead-onlyCount PO statuses matching an optional conditions filter.
cw_count_po_statuses_infoFreeRead-onlyCount PO statuses at the CW capital-I /Info/count endpoint.
cw_count_pricing_schedule_breaksFreeRead-onlyCount quantity-break rules on a pricing schedule detail.
cw_count_pricing_schedule_detailsFreeRead-onlyCount detail rows on a pricing schedule.
cw_count_pricing_schedulesFreeRead-onlyCount pricing schedules matching an optional conditions filter.
cw_count_procurement_categoriesFreeRead-onlyCount procurement categories matching an optional conditions filter.
cw_count_procurement_categories_infoFreeRead-onlyCount procurement categories at the info/count endpoint.
cw_count_procurement_settingsFreeRead-onlyCount procurement settings.
cw_count_procurement_subcategories_for_categoryFreeRead-onlyCount nested subcategories under a category, optionally filtered.
cw_count_procurement_subcategories_for_category_infoFreeRead-onlyCount nested subcategories at the info/count endpoint.
cw_count_product_componentsFreeRead-onlyCount components on a procurement product, optionally filtered.
cw_count_product_picking_shippingFreeRead-onlyCount picking/shipping detail rows on a procurement product.
cw_count_product_typesFreeRead-onlyCount product types matching an optional conditions filter.
cw_count_product_types_infoFreeRead-onlyCount product types at the info/count endpoint.
cw_count_productsFreeRead-onlyCount procurement products matching an optional conditions filter.
cw_count_purchase_ordersFreeRead-onlyGet a count of purchase orders matching optional conditions.
cw_count_purchase_orders_endpointFreeRead-onlyCall the dedicated /procurement/purchaseorders/count endpoint.
cw_count_purchase_orders_infoFreeRead-onlyCount purchase orders at the /procurement/purchaseorders/info/count endpoint.
cw_count_rma_actionsFreeRead-onlyCount RMA actions matching an optional conditions filter.
cw_count_rma_actions_infoFreeRead-onlyCount RMA actions at the /procurement/rmaActions/info/count endpoint.
cw_count_rma_dispositionsFreeRead-onlyCount RMA dispositions matching an optional conditions filter.
cw_count_rma_dispositions_infoFreeRead-onlyCount RMA dispositions at the info/count endpoint.
cw_count_rma_status_email_templatesFreeRead-onlyCount email templates on an RMA status, optionally filtered.
cw_count_rma_status_notificationsFreeRead-onlyCount notifications on an RMA status.
cw_count_rma_statusesFreeRead-onlyCount RMA statuses matching an optional conditions filter.
cw_count_rma_statuses_infoFreeRead-onlyCount RMA statuses at the info/count endpoint.
cw_count_rma_tagsFreeRead-onlyCount RMA tags matching an optional conditions filter.
cw_count_shipment_methodsFreeRead-onlyCount shipment methods matching an optional conditions filter.
cw_count_shipment_methods_infoFreeRead-onlyCount shipment methods at the info/count endpoint.
cw_count_subcategoriesFreeRead-onlyCount top-level subcategories matching an optional conditions filter.
cw_count_subcategories_infoFreeRead-onlyCount top-level subcategories at the info/count endpoint.
cw_count_unit_of_measuresFreeRead-onlyCount units of measure matching an optional conditions filter.
cw_count_uom_conversionsFreeRead-onlyCount UoM conversions on a unit of measure.
cw_count_warehouse_bin_inventoryFreeRead-onlyCount inventory-on-hand rows in a bin, optionally filtered.
cw_count_warehouse_binsFreeRead-onlyCount warehouse bins matching an optional conditions filter.
cw_count_warehouse_bins_infoFreeRead-onlyCount warehouse bins at the /procurement/warehouseBins/info/count endpoint.
cw_count_warehousesFreeRead-onlyCount warehouses matching an optional conditions filter.
cw_count_warehouses_infoFreeRead-onlyCount warehouses at the /procurement/warehouses/info/count endpoint.
cw_create_adjustmentProWriteCreate a new inventory adjustment.
cw_create_adjustment_detailProWriteAdd a detail line to an adjustment.
cw_create_adjustment_typeProWriteCreate a new adjustment type.
cw_create_catalog_componentProWriteAdd a component to a catalog bundle.
cw_create_catalog_itemProWriteCreate a new product catalog item.
cw_create_catalog_min_stockProWriteCreate a minimum-stock threshold for a catalog item in a specific warehouse.
cw_create_catalog_vendor_linkProWriteCreate a catalog-item-to-vendor association.
cw_create_change_orderProWriteCreate a new procurement change order.
cw_create_directional_syncProWriteCreate a new directional sync configuration.
cw_create_manufacturerProWriteCreate a new manufacturer.
cw_create_po_line_itemProDestructiveAdd a line item to an existing purchase order.
cw_create_po_noteProDestructiveAdd a note to a purchase order.
cw_create_po_statusProDestructiveCreate a new PO status.
cw_create_po_status_email_templateProDestructiveAttach a new email template to a PO status.
cw_create_po_status_notificationProDestructiveCreate a notification configuration on a PO status.
cw_create_pricing_scheduleProWriteCreate a new pricing schedule.
cw_create_pricing_schedule_breakProWriteAdd a quantity-break rule to a pricing schedule detail.
cw_create_pricing_schedule_detailProWriteAdd a detail rule to a pricing schedule.
cw_create_procurement_categoryProWriteCreate a new procurement category.
cw_create_procurement_subcategory_for_categoryProWriteCreate a subcategory nested under a procurement category.
cw_create_productProWriteCreate a procurement product attached to a ticket, project, opportunity, or sales order.
cw_create_product_componentProWriteAdd a component to a procurement product bundle.
cw_create_product_picking_shippingProWriteRecord a picking/shipping detail event for a procurement product.
cw_create_product_typeProWriteCreate a new product type.
cw_create_purchase_orderProDestructiveCreate a new purchase order.
cw_create_purchasing_demandProDestructiveSubmit a purchasing demand.
cw_create_rma_actionProWriteCreate a new RMA action.
cw_create_rma_dispositionProWriteCreate a new RMA disposition.
cw_create_rma_statusProWriteCreate a new RMA status.
cw_create_rma_status_email_templateProDestructiveAttach a new email template to an RMA status.
cw_create_rma_status_notificationProWriteCreate a notification configuration on an RMA status.
cw_create_rma_tagProWriteCreate a new RMA tag.
cw_create_shipment_methodProWriteCreate a new shipment method.
cw_create_subcategoryProWriteCreate a new top-level subcategory.
cw_create_unit_of_measureProWriteCreate a new unit of measure.
cw_create_uom_conversionProWriteCreate a new UoM conversion.
cw_create_warehouseProWriteCreate a new warehouse.
cw_create_warehouse_binProWriteCreate a new warehouse bin.
cw_delete_adjustmentProDestructivePermanently delete an inventory adjustment.
cw_delete_adjustment_detailProDestructivePermanently delete an adjustment detail line.
cw_delete_adjustment_typeProDestructivePermanently delete an adjustment type.
cw_delete_catalog_componentProDestructivePermanently remove a component from a catalog bundle.
cw_delete_catalog_itemProDestructivePermanently delete a catalog item by ID.
cw_delete_catalog_min_stockProDestructiveRemove a minimum-stock threshold.
cw_delete_catalog_vendorProDestructiveRemove a vendor link from a catalog item.
cw_delete_change_orderProDestructivePermanently delete a change order.
cw_delete_directional_syncProDestructivePermanently delete a directional sync.
cw_delete_invoice_groupingProDestructivePermanently delete an invoice grouping.
cw_delete_manufacturerProDestructivePermanently delete a manufacturer.
cw_delete_po_line_itemsProDestructiveDelete line items on a purchase order filtered by conditions.
cw_delete_po_noteProDestructivePermanently delete a PO note.
cw_delete_po_statusProDestructivePermanently delete a PO status.
cw_delete_po_status_email_templateProDestructivePermanently remove an email template from a PO status.
cw_delete_po_status_notificationProDestructivePermanently delete a PO status notification.
cw_delete_pricing_scheduleProDestructivePermanently delete a pricing schedule.
cw_delete_pricing_schedule_breakProDestructivePermanently delete a pricing schedule break.
cw_delete_pricing_schedule_detailProDestructivePermanently delete a pricing schedule detail.
cw_delete_procurement_categoryProDestructivePermanently delete a procurement category.
cw_delete_procurement_subcategory_for_categoryProDestructivePermanently delete a nested subcategory under a category.
cw_delete_productProDestructivePermanently delete a procurement product.
cw_delete_product_componentProDestructivePermanently remove a component from a product bundle.
cw_delete_product_picking_shippingProDestructivePermanently delete a picking/shipping detail record.
cw_delete_product_typeProDestructivePermanently delete a product type.
cw_delete_purchase_orderProDestructivePermanently delete a purchase order by ID.
cw_delete_rma_actionProDestructivePermanently delete an RMA action.
cw_delete_rma_dispositionProDestructivePermanently delete an RMA disposition.
cw_delete_rma_statusProDestructivePermanently delete an RMA status.
cw_delete_rma_status_email_templateProDestructivePermanently remove an email template from an RMA status.
cw_delete_rma_status_notificationProDestructivePermanently delete an RMA status notification.
cw_delete_rma_tagProDestructivePermanently delete an RMA tag.
cw_delete_shipment_methodProDestructivePermanently delete a shipment method.
cw_delete_subcategoryProDestructivePermanently delete a top-level subcategory.
cw_delete_unit_of_measureProDestructivePermanently delete a unit of measure.
cw_delete_uom_conversionProDestructivePermanently delete a UoM conversion.
cw_delete_warehouseProDestructivePermanently delete a warehouse.
cw_delete_warehouse_binProDestructivePermanently delete a warehouse bin.
cw_detach_productProDestructiveDetach a product from its current charge-to entity (ticket/project/etc) without deleting the product record.
cw_discover_manufacturersFreeRead-onlyList all manufacturers configured in ConnectWise.
cw_discover_po_statusesFreeRead-onlyList all purchase order statuses configured in ConnectWise.
cw_discover_procurement_categoriesFreeRead-onlyList all procurement categories configured in ConnectWise.
cw_discover_procurement_subcategoriesFreeRead-onlyList procurement subcategories for a specific category.
cw_discover_product_typesFreeRead-onlyList all product types configured in ConnectWise.
cw_discover_shipment_methodsFreeRead-onlyList all shipment methods configured in ConnectWise.
cw_discover_unit_of_measuresFreeRead-onlyList all units of measure configured in ConnectWise.
cw_discover_warehousesFreeRead-onlyList all warehouses configured in ConnectWise.
cw_get_adjustmentFreeRead-onlyRetrieve a single inventory adjustment by ID.
cw_get_adjustment_detailFreeRead-onlyRetrieve a single adjustment detail line item by ID.
cw_get_adjustment_typeFreeRead-onlyRetrieve a single adjustment type by ID.
cw_get_adjustment_type_infoFreeRead-onlyRetrieve the compact 'info' projection of an adjustment type.
cw_get_adjustment_type_usagesFreeRead-onlyRetrieve usage locations for an adjustment type.
cw_get_catalog_componentFreeRead-onlyRetrieve a single component on a catalog bundle item by ID.
cw_get_catalog_inventoryFreeRead-onlyRetrieve a single inventory record on a catalog item.
cw_get_catalog_itemFreeRead-onlyRetrieve a single catalog item by ID.
cw_get_catalog_item_infoFreeRead-onlyRetrieve the compact 'info' projection of a catalog item (reduced payload, suitable for selectors).
cw_get_catalog_min_stockFreeRead-onlyRetrieve a single minimum-stock threshold record for a catalog item by its ID.
cw_get_catalog_quantity_on_handFreeRead-onlyRetrieve the total quantity-on-hand for a catalog item by its string identifier (SKU), not numeric ID.
cw_get_directional_syncFreeRead-onlyRetrieve a single directional sync configuration.
cw_get_invoice_groupingFreeRead-onlyRetrieve a single invoice grouping by ID.
cw_get_invoice_grouping_usagesFreeRead-onlyRetrieve usage locations for an invoice grouping.
cw_get_manufacturerFreeRead-onlyRetrieve a single manufacturer by ID.
cw_get_manufacturer_infoFreeRead-onlyRetrieve the compact 'info' projection of a manufacturer.
cw_get_onhand_serialFreeRead-onlyRetrieve a single on-hand serial number record.
cw_get_po_line_itemFreeRead-onlyRetrieve a single purchase order line item by ID.
cw_get_po_noteFreeRead-onlyRetrieve a single PO note by ID.
cw_get_po_statusFreeRead-onlyRetrieve a single PO status by ID.
cw_get_po_status_email_templateFreeRead-onlyRetrieve a single email template attached to a PO status.
cw_get_po_status_infoFreeRead-onlyRetrieve the compact 'info' projection of a PO status.
cw_get_po_status_notificationFreeRead-onlyRetrieve a single notification on a PO status.
cw_get_po_status_usagesFreeRead-onlyRetrieve usage locations for a PO status.
cw_get_pricing_scheduleFreeRead-onlyRetrieve a single pricing schedule by ID.
cw_get_pricing_schedule_breakFreeRead-onlyRetrieve a single pricing schedule break.
cw_get_pricing_schedule_detailFreeRead-onlyRetrieve a single pricing schedule detail.
cw_get_procurement_categoryFreeRead-onlyRetrieve a single procurement category by ID.
cw_get_procurement_category_infoFreeRead-onlyRetrieve the compact 'info' projection of a procurement category.
cw_get_procurement_settingFreeRead-onlyRetrieve a single procurement setting by ID.
cw_get_procurement_subcategory_for_categoryFreeRead-onlyRetrieve a nested subcategory under a procurement category.
cw_get_procurement_subcategory_for_category_infoFreeRead-onlyRetrieve the compact 'info' projection of a nested subcategory.
cw_get_productFreeRead-onlyRetrieve a single procurement product by ID.
cw_get_product_componentFreeRead-onlyRetrieve a single component on a procurement product bundle.
cw_get_product_picking_shippingFreeRead-onlyRetrieve a single picking/shipping detail on a procurement product.
cw_get_product_typeFreeRead-onlyRetrieve a single product type by ID.
cw_get_product_type_infoFreeRead-onlyRetrieve the compact 'info' projection of a product type.
cw_get_product_type_usagesFreeRead-onlyRetrieve usage locations for a product type.
cw_get_purchase_orderFreeRead-onlyRetrieve a single purchase order by ID.
cw_get_purchase_order_infoFreeRead-onlyRetrieve the compact 'info' projection of a purchase order.
cw_get_rma_actionFreeRead-onlyRetrieve a single RMA action by ID.
cw_get_rma_action_infoFreeRead-onlyRetrieve the compact 'info' projection of an RMA action.
cw_get_rma_dispositionFreeRead-onlyRetrieve a single RMA disposition by ID.
cw_get_rma_disposition_infoFreeRead-onlyRetrieve the compact 'info' projection of an RMA disposition.
cw_get_rma_statusFreeRead-onlyRetrieve a single RMA status by ID.
cw_get_rma_status_email_templateFreeRead-onlyRetrieve a single email template on an RMA status.
cw_get_rma_status_infoFreeRead-onlyRetrieve the compact 'info' projection of an RMA status.
cw_get_rma_status_notificationFreeRead-onlyRetrieve a single notification on an RMA status.
cw_get_rma_status_usagesFreeRead-onlyRetrieve usage locations for an RMA status -- where in CW this status is currently referenced.
cw_get_rma_tagFreeRead-onlyRetrieve a single RMA tag by ID.
cw_get_rma_tag_defaultFreeRead-onlyRetrieve the default RMA tag configuration.
cw_get_shipment_methodFreeRead-onlyRetrieve a single shipment method by ID.
cw_get_shipment_method_infoFreeRead-onlyRetrieve the compact 'info' projection of a shipment method.
cw_get_shipment_method_usagesFreeRead-onlyRetrieve usage locations for a shipment method.
cw_get_subcategoryFreeRead-onlyRetrieve a single top-level subcategory by ID.
cw_get_subcategory_infoFreeRead-onlyRetrieve the compact 'info' projection of a top-level subcategory.
cw_get_subcategory_usagesFreeRead-onlyRetrieve usage locations for a top-level subcategory.
cw_get_unit_of_measureFreeRead-onlyRetrieve a single unit of measure by ID.
cw_get_uom_conversionFreeRead-onlyRetrieve a single UoM conversion by ID.
cw_get_warehouseFreeRead-onlyRetrieve a single warehouse by ID.
cw_get_warehouse_binFreeRead-onlyRetrieve a single warehouse bin by ID.
cw_get_warehouse_bin_infoFreeRead-onlyRetrieve the compact 'info' projection of a warehouse bin.
cw_get_warehouse_bin_inventoryFreeRead-onlyRetrieve a specific inventory-on-hand record in a bin by ID.
cw_get_warehouse_infoFreeRead-onlyRetrieve the compact 'info' projection of a warehouse (reduced payload for selectors).
cw_list_adjustment_detailsFreeRead-onlyList detail line items on an adjustment (per-item deltas).
cw_list_adjustment_type_usagesFreeRead-onlyRetrieve a detailed list of adjustment type usages via /usages/list.
cw_list_adjustment_typesFreeRead-onlyList configurable adjustment types (e.g., 'Physical Count', 'Damage Write-Off').
cw_list_adjustment_types_infoFreeRead-onlyList adjustment types using the compact 'info' projection.
cw_list_adjustmentsFreeRead-onlyList inventory adjustments.
cw_list_catalog_componentsFreeRead-onlyList bundled components for a catalog bundle item.
cw_list_catalog_inventoryFreeRead-onlyList inventory rows for a catalog item.
cw_list_catalog_itemsFreeRead-onlyList product catalog items with optional filtering.
cw_list_catalog_items_infoFreeRead-onlyList catalog items using the compact 'info' projection.
cw_list_catalog_min_stockFreeRead-onlyList minimum-stock thresholds per warehouse for a catalog item.
cw_list_catalog_vendorsFreeRead-onlyList the vendors associated with a catalog item.
cw_list_change_ordersFreeRead-onlyList procurement change orders.
cw_list_directional_syncsFreeRead-onlyList directional sync configurations (data flow rules to/from external systems).
cw_list_invoice_grouping_usagesFreeRead-onlyRetrieve a detailed list of invoice grouping usages via /usages/list.
cw_list_invoice_groupingsFreeRead-onlyList invoice grouping configurations (rules for grouping items on invoices).
cw_list_manufacturers_infoFreeRead-onlyList manufacturers using the compact 'info' projection.
cw_list_onhand_serialsFreeRead-onlyList serial numbers currently on hand across warehouses.
cw_list_open_purchase_ordersFreeRead-onlyList purchase orders with open or pending status.
cw_list_po_line_itemsFreeRead-onlyList line items for a specific purchase order.
cw_list_po_notesFreeRead-onlyList notes attached to a purchase order.
cw_list_po_status_email_templatesFreeRead-onlyList email templates attached to a PO status.
cw_list_po_status_notificationsFreeRead-onlyList notification configurations attached to a PO status.
cw_list_po_status_usagesFreeRead-onlyRetrieve a detailed list of PO status usages via /usages/list.
cw_list_po_statuses_infoFreeRead-onlyList PO statuses using the compact 'info' projection.
cw_list_pricing_schedule_breaksFreeRead-onlyList quantity-break rules on a pricing schedule detail (volume discount tiers).
cw_list_pricing_schedule_detailsFreeRead-onlyList detail rows on a pricing schedule (per-item or per-category rules).
cw_list_pricing_schedulesFreeRead-onlyList pricing schedules.
cw_list_procurement_categories_infoFreeRead-onlyList procurement categories using the compact 'info' projection.
cw_list_procurement_settingsFreeRead-onlyList system-level procurement settings.
cw_list_procurement_subcategories_for_category_infoFreeRead-onlyList nested subcategories under a category using the compact 'info' projection.
cw_list_product_componentsFreeRead-onlyList bundled components on a procurement product instance.
cw_list_product_picking_shippingFreeRead-onlyList picking and shipping detail records on a procurement product.
cw_list_product_type_usagesFreeRead-onlyRetrieve a detailed list of product type usages via /usages/list.
cw_list_product_types_infoFreeRead-onlyList product types using the compact 'info' projection.
cw_list_productsFreeRead-onlyList procurement products.
cw_list_purchase_ordersFreeRead-onlyList purchase orders with optional filtering.
cw_list_purchase_orders_infoFreeRead-onlyList purchase orders using the compact 'info' projection.
cw_list_rma_actionsFreeRead-onlyList RMA actions (e.g., 'Return for Refund', 'Repair and Return').
cw_list_rma_actions_infoFreeRead-onlyList RMA actions using the compact 'info' projection.
cw_list_rma_dispositionsFreeRead-onlyList RMA dispositions (final outcomes such as 'Scrap', 'Return to Stock').
cw_list_rma_dispositions_infoFreeRead-onlyList RMA dispositions using the compact 'info' projection.
cw_list_rma_status_email_templatesFreeRead-onlyList email templates attached to an RMA status.
cw_list_rma_status_notificationsFreeRead-onlyList notification configurations attached to an RMA status.
cw_list_rma_status_usagesFreeRead-onlyRetrieve a detailed list of RMA status usages via /usages/list.
cw_list_rma_statusesFreeRead-onlyList RMA statuses (workflow states for returns).
cw_list_rma_statuses_infoFreeRead-onlyList RMA statuses using the compact 'info' projection.
cw_list_rma_tagsFreeRead-onlyList RMA tag configurations.
cw_list_shipment_method_usagesFreeRead-onlyRetrieve a detailed list of shipment method usages via /usages/list.
cw_list_shipment_methods_infoFreeRead-onlyList shipment methods using the compact 'info' projection.
cw_list_subcategoriesFreeRead-onlyList subcategories at the top-level /procurement/subcategories endpoint (distinct from the nested /categories//subcategories path).
cw_list_subcategories_infoFreeRead-onlyList top-level subcategories using the compact 'info' projection.
cw_list_subcategory_usagesFreeRead-onlyRetrieve a detailed list of subcategory usages via /usages/list.
cw_list_uom_conversionsFreeRead-onlyList conversions defined on a unit of measure (e.g., 1 Box = 12 Each).
cw_list_vendor_purchase_ordersFreeRead-onlyList purchase orders for a specific vendor by name.
cw_list_warehouse_bin_inventoryFreeRead-onlyList inventory-on-hand records for a specific warehouse bin.
cw_list_warehouse_binsFreeRead-onlyList storage bins across warehouses.
cw_list_warehouse_bins_infoFreeRead-onlyList warehouse bins using the compact 'info' projection.
cw_list_warehouses_infoFreeRead-onlyList warehouses using the compact 'info' projection.
cw_rebatch_purchase_orderProDestructiveTrigger rebatching on a purchase order.
cw_replace_adjustmentProDestructiveReplace an adjustment wholesale via PUT.
cw_replace_adjustment_typeProDestructiveReplace an adjustment type wholesale via PUT.
cw_replace_catalog_componentProDestructiveReplace a catalog component wholesale via PUT.
cw_replace_catalog_itemProDestructiveReplace a catalog item wholesale via PUT.
cw_replace_catalog_min_stockProDestructiveReplace a catalog min-stock record wholesale via PUT.
cw_replace_catalog_vendorProDestructiveReplace a vendor link on a catalog item via PUT.
cw_replace_directional_syncProDestructiveReplace a directional sync wholesale via PUT.
cw_replace_invoice_groupingProDestructiveReplace an invoice grouping wholesale via PUT.
cw_replace_manufacturerProDestructiveReplace a manufacturer wholesale via PUT.
cw_replace_po_line_itemProDestructiveReplace a PO line item wholesale via PUT.
cw_replace_po_noteProDestructiveReplace a PO note wholesale via PUT.
cw_replace_po_statusProDestructiveReplace a PO status wholesale via PUT.
cw_replace_po_status_email_templateProDestructiveReplace a PO status email template wholesale via PUT.
cw_replace_po_status_notificationProDestructiveReplace a PO status notification wholesale via PUT.
cw_replace_pricing_scheduleProDestructiveReplace a pricing schedule wholesale via PUT.
cw_replace_pricing_schedule_breakProDestructiveReplace a pricing schedule break wholesale via PUT.
cw_replace_pricing_schedule_detailProDestructiveReplace a pricing schedule detail wholesale via PUT.
cw_replace_procurement_categoryProDestructiveReplace a procurement category wholesale via PUT.
cw_replace_procurement_settingProDestructiveReplace a procurement setting wholesale via PUT.
cw_replace_procurement_subcategory_for_categoryProDestructiveReplace a nested subcategory under a category wholesale via PUT.
cw_replace_productProDestructiveReplace a procurement product wholesale via PUT.
cw_replace_product_componentProDestructiveReplace a product component wholesale via PUT.
cw_replace_product_picking_shippingProDestructiveReplace a picking/shipping detail wholesale via PUT.
cw_replace_product_typeProDestructiveReplace a product type wholesale via PUT.
cw_replace_purchase_orderProDestructiveReplace a purchase order wholesale via PUT.
cw_replace_rma_actionProDestructiveReplace an RMA action wholesale via PUT.
cw_replace_rma_dispositionProDestructiveReplace an RMA disposition wholesale via PUT.
cw_replace_rma_statusProDestructiveReplace an RMA status wholesale via PUT.
cw_replace_rma_status_email_templateProDestructiveReplace an RMA status email template wholesale via PUT.
cw_replace_rma_status_notificationProDestructiveReplace an RMA status notification wholesale via PUT.
cw_replace_rma_tagProDestructiveReplace an RMA tag wholesale via PUT.
cw_replace_shipment_methodProDestructiveReplace a shipment method wholesale via PUT.
cw_replace_subcategoryProDestructiveReplace a top-level subcategory wholesale via PUT.
cw_replace_unit_of_measureProDestructiveReplace a unit of measure wholesale via PUT.
cw_replace_uom_conversionProDestructiveReplace a UoM conversion wholesale via PUT.
cw_replace_warehouseProDestructiveReplace a warehouse wholesale via PUT.
cw_replace_warehouse_binProDestructiveReplace a warehouse bin wholesale via PUT.
cw_search_catalog_itemsFreeRead-onlySearch product catalog items by identifier or description.
cw_search_purchase_ordersFreeRead-onlySearch purchase orders by PO number or vendor.
cw_unbatch_purchase_orderProDestructiveRemove a purchase order from its current accounting batch.
cw_update_adjustmentProWriteUpdate an adjustment using JSON Patch operations.
cw_update_adjustment_typeProWriteUpdate an adjustment type using JSON Patch operations.
cw_update_catalog_componentProWriteUpdate an existing catalog component using JSON Patch operations.
cw_update_catalog_itemProWriteUpdate an existing catalog item using JSON Patch operations.
cw_update_catalog_item_pricingProDestructiveApply a pricing update to a catalog item via CW's pricing endpoint.
cw_update_catalog_min_stockProWriteUpdate a catalog minimum-stock threshold using JSON Patch operations.
cw_update_catalog_vendorProWriteUpdate a vendor link on a catalog item using JSON Patch operations.
cw_update_change_orderProWriteUpdate a change order using JSON Patch operations.
cw_update_directional_syncProWriteUpdate a directional sync using JSON Patch operations.
cw_update_invoice_groupingProDestructiveUpdate an invoice grouping using JSON Patch operations.
cw_update_manufacturerProWriteUpdate a manufacturer using JSON Patch operations.
cw_update_po_line_itemProDestructiveUpdate a purchase order line item using JSON Patch operations.
cw_update_po_noteProDestructiveUpdate a PO note using JSON Patch operations.
cw_update_po_statusProDestructiveUpdate a PO status using JSON Patch operations.
cw_update_po_status_email_templateProDestructiveUpdate a PO status email template using JSON Patch operations.
cw_update_po_status_notificationProDestructiveUpdate a PO status notification using JSON Patch operations.
cw_update_pricing_scheduleProWriteUpdate a pricing schedule using JSON Patch operations.
cw_update_pricing_schedule_breakProWriteUpdate a pricing schedule break using JSON Patch operations.
cw_update_pricing_schedule_detailProWriteUpdate a pricing schedule detail using JSON Patch operations.
cw_update_procurement_categoryProWriteUpdate a procurement category using JSON Patch operations.
cw_update_procurement_settingProWriteUpdate a procurement setting using JSON Patch operations.
cw_update_procurement_subcategory_for_categoryProWriteUpdate a nested subcategory under a category using JSON Patch operations.
cw_update_productProWriteUpdate a procurement product using JSON Patch operations.
cw_update_product_componentProWriteUpdate a product component using JSON Patch operations.
cw_update_product_picking_shippingProWriteUpdate a picking/shipping detail using JSON Patch operations.
cw_update_product_typeProWriteUpdate a product type using JSON Patch operations.
cw_update_purchase_orderProDestructiveUpdate an existing purchase order using JSON Patch operations.
cw_update_rma_actionProWriteUpdate an RMA action using JSON Patch operations.
cw_update_rma_dispositionProWriteUpdate an RMA disposition using JSON Patch operations.
cw_update_rma_statusProWriteUpdate an RMA status using JSON Patch operations.
cw_update_rma_status_email_templateProDestructiveUpdate an RMA status email template using JSON Patch operations.
cw_update_rma_status_notificationProWriteUpdate an RMA status notification using JSON Patch operations.
cw_update_rma_tagProWriteUpdate an RMA tag using JSON Patch operations.
cw_update_shipment_methodProWriteUpdate a shipment method using JSON Patch operations.
cw_update_subcategoryProWriteUpdate a top-level subcategory using JSON Patch operations.
cw_update_unit_of_measureProWriteUpdate a unit of measure using JSON Patch operations.
cw_update_uom_conversionProWriteUpdate a UoM conversion using JSON Patch operations.
cw_update_warehouseProWriteUpdate a warehouse using JSON Patch operations.
cw_update_warehouse_binProWriteUpdate a warehouse bin using JSON Patch operations.

[ConnectWise] Create multiple PO line items in a single bulk request. Body is a JSON array of line items.

ParamTypeRequiredDefaultDescription
lineItemsJsonstringyesJSON array of line items. Example: [{"product":{"id":1},"quantity":2},{"product":{"id":2},"quantity":5}].
poIdintegeryesThe purchase order ID.

[ConnectWise] Delete multiple PO line items in a single request. Body is a JSON array of line item IDs or line-item references.

ParamTypeRequiredDefaultDescription
lineItemsJsonstringyesJSON array listing line items to delete.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
lineItemsJsonstringyesJSON array of line items with IDs for replacement.
poIdintegeryesThe purchase order ID.

[ConnectWise] Create a copy of a catalog item. Body is a copy-options payload (new identifier, description, etc.).

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe source ConnectWise catalog item ID to copy.
fieldsJsonstringyesCopy options as JSON, typically {"newIdentifier": "..."}.

[ConnectWise] Create a copy of a purchase order. Body is a copy-options payload.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesCopy options as JSON (typically to copy with defaults).
idintegeryesThe source purchase order ID.
ParamTypeRequiredDefaultDescription
adjustmentIdintegeryesThe parent adjustment ID.
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog bundle item ID.
conditionsstringnonullConnectWise conditions filter.

[ConnectWise] Count inventory rows on a catalog item, optionally filtered by conditions. Returns the CW count payload.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
conditionsstringnonullConnectWise conditions filter.

[ConnectWise] Get a count of catalog items matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for checking result set size before paginating with cw_list_catalog_items.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "category/name='Hardware'", "inactiveFlag=false". Use '/' for nested fields.

[ConnectWise] Call the dedicated /procurement/catalog/count endpoint. This is distinct from cw_count_catalog_items, which uses a list query with pageSize=1.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
conditionsstringnonullConnectWise conditions filter.

[ConnectWise] Count change orders. Note: swagger exposes count at the plural /procurement/changeorders/count path.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.

[ConnectWise] Count manufacturers at CW's /procurement/manufacturers/count/info endpoint. Swagger spells this differently than other count/info endpoints (no plain /info/count variant).

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
poIdintegeryesThe purchase order ID.

[ConnectWise] Retrieve the quick-access count for a purchase order. Returns CW's /quickAccess/count payload.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
idintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
detailIdintegeryesThe detail ID.
scheduleIdintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
scheduleIdintegeryesThe parent pricing schedule ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.

[ConnectWise] Get a count of purchase orders matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for checking result set size before paginating with cw_list_purchase_orders.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Open'", "vendor/identifier='Dell'". Use '/' for nested fields.

[ConnectWise] Call the dedicated /procurement/purchaseorders/count endpoint. Distinct from cw_count_purchase_orders (which is a list with pageSize=1).

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
uomIdintegeryesThe parent unit of measure ID.
ParamTypeRequiredDefaultDescription
binIdintegeryesThe warehouse bin ID.
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesAdjustment fields as JSON.
ParamTypeRequiredDefaultDescription
adjustmentIdintegeryesThe parent adjustment ID.
fieldsJsonstringyesDetail fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesAdjustment type fields as JSON.

[ConnectWise] Add a component to a catalog bundle. Returns the created component with its assigned ID.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog bundle item ID to attach the component to.
fieldsJsonstringyesComponent fields as JSON. Example: {"catalogItem": {"id": 123}, "quantity": 2}.

[ConnectWise] Create a new product catalog item. Requires at minimum an identifier and description. Returns the created catalog item with its assigned ID. This adds a new product to the catalog visible to procurement staff.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesCatalog item fields as JSON. Required: {"identifier": "...", "description": "..."}. Optional: category, subcategory, type, cost, price, vendor, manufacturer, productClass.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
fieldsJsonstringyesMin-stock fields as JSON. Example: {"warehouse": {"id": 1}, "minimumStock": 10}.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesChange order fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesDirectional sync fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesManufacturer fields as JSON.

[ConnectWise] Add a line item to an existing purchase order. Requires a valid purchase order ID and product information. Returns the created line item with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesLine item fields as JSON. Required: {"product": {"id": N}, "quantity": N}. Optional: description, cost, serialNumbers, vendorSku.
poIdintegeryesThe numeric ConnectWise purchase order ID to add the line item to.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesNote fields as JSON. Example: {"text": "Shipment expected 2026-05-01"}.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesPO status fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesEmail template fields as JSON.
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesNotification fields as JSON.
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesPricing schedule fields as JSON.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe detail ID.
fieldsJsonstringyesBreak fields as JSON.
scheduleIdintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesDetail fields as JSON.
scheduleIdintegeryesThe parent pricing schedule ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesCategory fields as JSON.
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
fieldsJsonstringyesSubcategory fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesProduct fields as JSON. Requires catalogItem, quantity, and chargeToId/chargeToType references.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesComponent fields as JSON.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesPicking/shipping detail fields as JSON.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesProduct type fields as JSON.

[ConnectWise] Create a new purchase order. Requires at minimum a vendor reference. Returns the created purchase order with its assigned ID and PO number. This creates a PO visible to procurement staff.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesPurchase order fields as JSON. Required: {"vendor": {"id": N}}. Optional: status, shippingMethod, shipDate, terms, notes, dropShipFlag.

[ConnectWise] Submit a purchasing demand. CW exposes only POST at /procurement/purchasingDemands -- there is no GET/list/delete.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesPurchasing demand fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesRMA action fields as JSON. Example: {"name": "Repair"}.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesRMA disposition fields as JSON. Example: {"name": "Scrap"}.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesRMA status fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesEmail template fields as JSON.
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesNotification fields as JSON.
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesRMA tag fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesShipment method fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesSubcategory fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesUnit of measure fields as JSON.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesConversion fields as JSON. Example: {"toUnit": {"id": 2}, "factor": 12}.
uomIdintegeryesThe parent unit of measure ID.

[ConnectWise] Create a new warehouse. Returns the created warehouse with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesWarehouse fields as JSON. Example: {"name": "Main Warehouse"}.

[ConnectWise] Create a new warehouse bin. Requires a warehouse reference.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesWarehouse bin fields as JSON. Example: {"warehouse": {"id": 1}, "name": "A1"}.
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment ID to delete.
ParamTypeRequiredDefaultDescription
adjustmentIdintegeryesThe parent adjustment ID.
detailIdintegeryesThe detail ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment type ID to delete.

[ConnectWise] Permanently remove a component from a catalog bundle. This cannot be undone.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog bundle item ID.
componentIdintegeryesThe component ID to delete.

[ConnectWise] Permanently delete a catalog item by ID. This cannot be undone. Verify the item with cw_get_catalog_item before deleting. Requires a valid catalog item ID.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise catalog item ID to delete. Verify with cw_get_catalog_item before deleting.

[ConnectWise] Remove a minimum-stock threshold. This cannot be undone.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
minStockIdintegeryesThe min-stock record ID to delete.

[ConnectWise] Remove a vendor link from a catalog item. This cannot be undone.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
vendorIdintegeryesThe vendor link record ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe change order ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe directional sync ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe invoice grouping ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe manufacturer ID to delete.

[ConnectWise] Delete line items on a purchase order filtered by conditions. Without conditions, CW deletes all line items on the PO.

ParamTypeRequiredDefaultDescription
conditionsstringnonullOptional ConnectWise conditions filter to narrow which line items are deleted.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
noteIdintegeryesThe note ID to delete.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe PO status ID to delete.
ParamTypeRequiredDefaultDescription
statusIdintegeryesThe PO status ID.
templateIdintegeryesThe email template ID to delete.
ParamTypeRequiredDefaultDescription
notificationIdintegeryesThe notification ID to delete.
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe pricing schedule ID to delete.
ParamTypeRequiredDefaultDescription
breakIdintegeryesThe break ID to delete.
detailIdintegeryesThe detail ID.
scheduleIdintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe detail ID to delete.
scheduleIdintegeryesThe parent pricing schedule ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe procurement category ID to delete.
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
subCategoryIdintegeryesThe nested subcategory ID to delete.

[ConnectWise] Permanently delete a procurement product. This cannot be undone.

ParamTypeRequiredDefaultDescription
idintegeryesThe procurement product ID to delete.
ParamTypeRequiredDefaultDescription
componentIdintegeryesThe component ID to delete.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe detail ID to delete.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe product type ID to delete.

[ConnectWise] Permanently delete a purchase order by ID. This cannot be undone. Verify the PO with cw_get_purchase_order before deleting. Requires a valid purchase order ID.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise purchase order ID to delete. Verify with cw_get_purchase_order before deleting.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA action ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA disposition ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA status ID to delete.
ParamTypeRequiredDefaultDescription
statusIdintegeryesThe RMA status ID.
templateIdintegeryesThe email template ID to delete.
ParamTypeRequiredDefaultDescription
notificationIdintegeryesThe notification ID to delete.
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA tag ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe shipment method ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe subcategory ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe unit of measure ID to delete.
ParamTypeRequiredDefaultDescription
conversionIdintegeryesThe conversion ID to delete.
uomIdintegeryesThe parent unit of measure ID.

[ConnectWise] Permanently delete a warehouse. This cannot be undone. Verify with cw_get_warehouse first.

ParamTypeRequiredDefaultDescription
idintegeryesThe warehouse ID to delete.

[ConnectWise] Permanently delete a warehouse bin. This cannot be undone.

ParamTypeRequiredDefaultDescription
idintegeryesThe warehouse bin ID to delete.
ParamTypeRequiredDefaultDescription
idintegeryesThe procurement product ID to detach.

[ConnectWise] List all manufacturers configured in ConnectWise. Returns manufacturer IDs and names. Use to discover valid manufacturers when creating or filtering catalog items. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all purchase order statuses configured in ConnectWise. Returns status IDs and names. Use to discover valid statuses when creating or filtering purchase orders. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all procurement categories configured in ConnectWise. Returns category IDs and names. Use to discover valid categories when creating or filtering catalog items. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List procurement subcategories for a specific category. Returns subcategory IDs and names. Requires a valid procurement category ID — use cw_discover_procurement_categories to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe numeric ConnectWise procurement category ID. Use cw_discover_procurement_categories to find valid IDs.
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all product types configured in ConnectWise. Returns type IDs and names. Use to discover valid product types when creating or filtering catalog items. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all shipment methods configured in ConnectWise. Returns method IDs and names. Use to discover valid shipping methods when creating purchase orders. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all units of measure configured in ConnectWise. Returns unit IDs and names (e.g., Each, Hour, Pack). Use to discover valid units when creating or updating catalog items. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all warehouses configured in ConnectWise. Returns warehouse IDs, names, and locations. Use to discover valid warehouses when creating purchase orders or managing inventory. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment ID.
ParamTypeRequiredDefaultDescription
adjustmentIdintegeryesThe parent adjustment ID.
detailIdintegeryesThe detail ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment type ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment type ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment type ID.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog bundle item ID.
componentIdintegeryesThe component ID on the bundle.

[ConnectWise] Retrieve a single inventory record on a catalog item. Returns the per-warehouse inventory detail. Requires valid catalog item and inventory IDs.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
inventoryIdintegeryesThe inventory record ID on that catalog item.

[ConnectWise] Retrieve a single catalog item by ID. Returns full catalog item details including identifier, description, category, subcategory, type, cost, price, vendor, and manufacturer info. Requires a valid catalog item ID — use cw_list_catalog_items to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise catalog item ID.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
minStockIdintegeryesThe min-stock record ID.

[ConnectWise] Retrieve the total quantity-on-hand for a catalog item by its string identifier (SKU), not numeric ID. Use this for quick stock lookups when you know the SKU.

ParamTypeRequiredDefaultDescription
catalogItemIdentifierstringyesThe catalog item identifier (SKU / product code string), e.g., 'LAPTOP-DELL-7420'.
ParamTypeRequiredDefaultDescription
idintegeryesThe directional sync ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe invoice grouping ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe invoice grouping ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe manufacturer ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe manufacturer ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe on-hand serial number record ID.
ParamTypeRequiredDefaultDescription
lineItemIdintegeryesThe line item ID.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
noteIdintegeryesThe note ID.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
statusIdintegeryesThe PO status ID.
templateIdintegeryesThe email template ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
notificationIdintegeryesThe notification ID.
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
breakIdintegeryesThe break ID.
detailIdintegeryesThe detail ID.
scheduleIdintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe detail ID.
scheduleIdintegeryesThe parent pricing schedule ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe procurement category ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe procurement category ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe procurement setting ID.
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
subCategoryIdintegeryesThe nested subcategory ID.
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
subCategoryIdintegeryesThe nested subcategory ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe numeric procurement product ID.
ParamTypeRequiredDefaultDescription
componentIdintegeryesThe component ID on that product.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe picking/shipping detail ID.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe product type ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe product type ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe product type ID.

[ConnectWise] Retrieve a single purchase order by ID. Returns full purchase order details including PO number, vendor, status, line items, shipping info, total, and dates. Requires a valid purchase order ID — use cw_list_purchase_orders to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise purchase order ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA action ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA action ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA disposition ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA disposition ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
statusIdintegeryesThe RMA status ID.
templateIdintegeryesThe email template ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
notificationIdintegeryesThe notification ID.
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA tag ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe shipment method ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe shipment method ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe shipment method ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe subcategory ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe subcategory ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe subcategory ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe unit of measure ID.
ParamTypeRequiredDefaultDescription
conversionIdintegeryesThe conversion ID.
uomIdintegeryesThe parent unit of measure ID.

[ConnectWise] Retrieve a single warehouse by ID. Returns warehouse name, location, default flag, and inactive status.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise warehouse ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe numeric warehouse bin ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe numeric warehouse bin ID.
ParamTypeRequiredDefaultDescription
binIdintegeryesThe warehouse bin ID.
inventoryIdintegeryesThe inventory-on-hand record ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise warehouse ID.
ParamTypeRequiredDefaultDescription
adjustmentIdintegeryesThe parent adjustment ID.
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment type ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List inventory adjustments. Returns adjustment records used to correct on-hand stock counts.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List bundled components for a catalog bundle item. Returns sub-item references, quantities, and pricing roll-up flags. Requires a valid catalog item ID.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog bundle item ID.
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List inventory rows for a catalog item. Returns per-warehouse on-hand, allocated, and on-order quantities. Requires a valid catalog item ID -- use cw_list_catalog_items to find IDs.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID whose inventory to list.
conditionsstringnonullConnectWise conditions filter. Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List product catalog items with optional filtering. Returns paginated catalog entries including identifier, description, category, cost, and price. Use this to browse the product catalog or narrow results before fetching full details with cw_get_catalog_item.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "identifier contains 'laptop'", "category/name='Hardware'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List catalog items using the compact 'info' projection. Smaller payload; good for pickers and bulk scans.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List minimum-stock thresholds per warehouse for a catalog item. Returns the reorder thresholds used for automatic replenishment.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the vendors associated with a catalog item. CW exposes this via /procurement/catalog/vendors/.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.

[ConnectWise] List procurement change orders. Note: swagger exposes this at the singular /procurement/changeorder path.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
idintegeryesThe invoice grouping ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List serial numbers currently on hand across warehouses. Read-only; use adjustments or sales processes to move them.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List purchase orders with open or pending status. Useful for procurement tracking -- shows POs that are still being processed or awaiting delivery.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List line items for a specific purchase order. Returns line item records including product, description, quantity, cost, and received status. Requires a valid purchase order ID — use cw_list_purchase_orders to find IDs. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
poIdintegeryesThe numeric ConnectWise purchase order ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
detailIdintegeryesThe pricing schedule detail ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
scheduleIdintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
scheduleIdintegeryesThe parent pricing schedule ID.

[ConnectWise] List pricing schedules. Pricing schedules define tiered pricing rules that apply across catalog items.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
productIdintegeryesThe procurement product ID (parent bundle).

[ConnectWise] List picking and shipping detail records on a procurement product. Tracks serial numbers, quantities picked, and shipping info.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe product type ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List procurement products. These are catalog-item instances attached to tickets, projects, opportunities, or sales orders. Distinct from catalog items.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Example: "chargeToType='Project' AND chargeToId=42".
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List purchase orders with optional filtering. Returns paginated purchase orders including PO number, vendor, status, total, and dates. Use this to browse purchase orders or narrow results before fetching full details with cw_get_purchase_order.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Open'", "vendor/identifier='Dell'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List RMA actions (e.g., 'Return for Refund', 'Repair and Return'). Configures how returned products flow through the RMA process.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List RMA dispositions (final outcomes such as 'Scrap', 'Return to Stock'). Uses CW's ALL-CAPS /procurement/RMADispositions path.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List email templates attached to an RMA status. Per CW swagger, list uses the capital-T `emailTemplates` path.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
idintegeryesThe shipment method ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
idintegeryesThe subcategory ID.
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
uomIdintegeryesThe parent unit of measure ID.

[ConnectWise] List purchase orders for a specific vendor by name. Useful for vendor relationship management -- shows all POs placed with a particular supplier.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
vendorNamestringyesThe vendor company name to filter by (exact or partial match).

[ConnectWise] List inventory-on-hand records for a specific warehouse bin. Shows per-item on-hand counts stored in that bin.

ParamTypeRequiredDefaultDescription
binIdintegeryesThe warehouse bin ID.
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List storage bins across warehouses. Returns bin name, warehouse, and default flag.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Example: "warehouse/id=1".
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List warehouses using the compact 'info' projection. Smaller payload, good for selectors.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Trigger rebatching on a purchase order. CW will recompute batch associations and re-post to GL.

ParamTypeRequiredDefaultDescription
idintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull adjustment JSON payload.
idintegeryesThe adjustment ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull adjustment type JSON payload.
idintegeryesThe adjustment type ID.

[ConnectWise] Replace a catalog component wholesale via PUT. Pass the full component body.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog bundle item ID.
componentIdintegeryesThe component ID on the bundle.
fieldsJsonstringyesFull component JSON payload.

[ConnectWise] Replace a catalog item wholesale via PUT. Pass the full catalog-item body.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
fieldsJsonstringyesFull catalog-item JSON payload.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
fieldsJsonstringyesFull min-stock JSON payload.
minStockIdintegeryesThe min-stock record ID to replace.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
fieldsJsonstringyesFull vendor-link JSON payload.
vendorIdintegeryesThe vendor link record ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull directional sync JSON payload.
idintegeryesThe directional sync ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull invoice grouping JSON payload.
idintegeryesThe invoice grouping ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull manufacturer JSON payload.
idintegeryesThe manufacturer ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull line item JSON payload.
lineItemIdintegeryesThe line item ID.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull note JSON payload.
noteIdintegeryesThe note ID.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull PO status JSON payload.
idintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull email template JSON payload.
statusIdintegeryesThe PO status ID.
templateIdintegeryesThe email template ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull notification JSON payload.
notificationIdintegeryesThe notification ID.
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull pricing schedule JSON payload.
idintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
breakIdintegeryesThe break ID.
detailIdintegeryesThe detail ID.
fieldsJsonstringyesFull break JSON payload.
scheduleIdintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe detail ID.
fieldsJsonstringyesFull detail JSON payload.
scheduleIdintegeryesThe parent pricing schedule ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull category JSON payload.
idintegeryesThe procurement category ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull setting JSON payload.
idintegeryesThe procurement setting ID.
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
fieldsJsonstringyesFull subcategory JSON payload.
subCategoryIdintegeryesThe nested subcategory ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull product JSON payload.
idintegeryesThe numeric procurement product ID.
ParamTypeRequiredDefaultDescription
componentIdintegeryesThe component ID.
fieldsJsonstringyesFull component JSON payload.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe picking/shipping detail ID.
fieldsJsonstringyesFull detail JSON payload.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull product type JSON payload.
idintegeryesThe product type ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull purchase order JSON payload.
idintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull RMA action JSON payload.
idintegeryesThe RMA action ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull disposition JSON payload.
idintegeryesThe RMA disposition ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull RMA status JSON payload.
idintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull email template JSON payload.
statusIdintegeryesThe RMA status ID.
templateIdintegeryesThe email template ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull notification JSON payload.
notificationIdintegeryesThe notification ID.
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull RMA tag JSON payload.
idintegeryesThe RMA tag ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull shipment method JSON payload.
idintegeryesThe shipment method ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull subcategory JSON payload.
idintegeryesThe subcategory ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull UoM JSON payload.
idintegeryesThe unit of measure ID.
ParamTypeRequiredDefaultDescription
conversionIdintegeryesThe conversion ID.
fieldsJsonstringyesFull conversion JSON payload.
uomIdintegeryesThe parent unit of measure ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull warehouse JSON payload.
idintegeryesThe numeric ConnectWise warehouse ID.
ParamTypeRequiredDefaultDescription
fieldsJsonstringyesFull warehouse bin JSON payload.
idintegeryesThe numeric warehouse bin ID.

[ConnectWise] Search product catalog items by identifier or description. Returns matching catalog entries. Use this when you know the product name or SKU but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against catalog item identifier and description.

[ConnectWise] Search purchase orders by PO number or vendor. Returns matching purchase orders. Use this when you know the PO number or vendor name but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against purchase order number or vendor identifier.
ParamTypeRequiredDefaultDescription
idintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe adjustment type ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog bundle item ID.
componentIdintegeryesThe component ID on the bundle.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "quantity", "value": 3}].

[ConnectWise] Update an existing catalog item using JSON Patch operations. Requires a valid catalog item ID — use cw_list_catalog_items to find IDs. Returns the updated catalog item.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise catalog item ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "price", "value": 99.99}]

[ConnectWise] Apply a pricing update to a catalog item via CW's pricing endpoint. Body is a pricing-change payload.

ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
fieldsJsonstringyesPricing update payload as JSON.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
minStockIdintegeryesThe min-stock record ID to update.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
catalogIdintegeryesThe ConnectWise catalog item ID.
patchJsonstringyesJSON array of patch operations.
vendorIdintegeryesThe vendor link record ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe change order ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe directional sync ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe invoice grouping ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe manufacturer ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
lineItemIdintegeryesThe line item ID to update.
patchJsonstringyesJSON array of patch operations.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
noteIdintegeryesThe note ID.
patchJsonstringyesJSON array of patch operations.
poIdintegeryesThe purchase order ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe PO status ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations.
statusIdintegeryesThe PO status ID.
templateIdintegeryesThe email template ID.
ParamTypeRequiredDefaultDescription
notificationIdintegeryesThe notification ID.
patchJsonstringyesJSON array of patch operations.
statusIdintegeryesThe PO status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe pricing schedule ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
breakIdintegeryesThe break ID.
detailIdintegeryesThe detail ID.
patchJsonstringyesJSON array of patch operations.
scheduleIdintegeryesThe pricing schedule ID.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe detail ID.
patchJsonstringyesJSON array of patch operations.
scheduleIdintegeryesThe parent pricing schedule ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe procurement category ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe procurement setting ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
categoryIdintegeryesThe parent procurement category ID.
patchJsonstringyesJSON array of patch operations.
subCategoryIdintegeryesThe nested subcategory ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe numeric procurement product ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
componentIdintegeryesThe component ID.
patchJsonstringyesJSON array of patch operations.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
detailIdintegeryesThe picking/shipping detail ID.
patchJsonstringyesJSON array of patch operations.
productIdintegeryesThe procurement product ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe product type ID.
patchJsonstringyesJSON array of patch operations.

[ConnectWise] Update an existing purchase order using JSON Patch operations. Requires a valid purchase order ID — use cw_list_purchase_orders to find IDs. Returns the updated purchase order.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise purchase order ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "status", "value": {"id": 2}}]
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA action ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA disposition ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA status ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations.
statusIdintegeryesThe RMA status ID.
templateIdintegeryesThe email template ID.
ParamTypeRequiredDefaultDescription
notificationIdintegeryesThe notification ID.
patchJsonstringyesJSON array of patch operations.
statusIdintegeryesThe RMA status ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe RMA tag ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe shipment method ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe subcategory ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
idintegeryesThe unit of measure ID.
patchJsonstringyesJSON array of patch operations.
ParamTypeRequiredDefaultDescription
conversionIdintegeryesThe conversion ID.
patchJsonstringyesJSON array of patch operations.
uomIdintegeryesThe parent unit of measure ID.
ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise warehouse ID.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "name", "value": "Warehouse A"}].
ParamTypeRequiredDefaultDescription
idintegeryesThe numeric warehouse bin ID.
patchJsonstringyesJSON array of patch operations.

Expenses

ToolPlanAccessSummary
cw_count_expense_entriesFreeRead-onlyGet a count of expense entries matching optional conditions.
cw_count_expense_reportsFreeRead-onlyGet a count of expense reports matching optional conditions.
cw_create_expense_entryProDestructiveCreate a new expense entry.
cw_delete_expense_entryProDestructivePermanently delete an expense entry by ID.
cw_discover_expense_typesFreeRead-onlyList all expense types configured in ConnectWise.
cw_get_expense_entryFreeRead-onlyRetrieve a single expense entry by ID.
cw_get_expense_reportFreeRead-onlyRetrieve a single expense report by ID.
cw_list_expense_entriesFreeRead-onlyList expense entries with optional filtering.
cw_list_expense_reportsFreeRead-onlyList expense reports with optional filtering.
cw_list_member_expensesFreeRead-onlyList expense entries for a specific member by identifier.
cw_list_pending_expense_reportsFreeRead-onlyList expense reports awaiting approval.
cw_search_expense_entriesFreeRead-onlySearch expense entries by member identifier or notes text.
cw_search_expense_reportsFreeRead-onlySearch expense reports by member identifier.
cw_update_expense_entryProDestructiveUpdate an existing expense entry using JSON Patch operations.

[ConnectWise] Get a count of expense entries matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for expense reporting dashboards or checking result set size before paginating with cw_list_expense_entries.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'", "amount>100". Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Get a count of expense reports matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for tracking expense report submission backlogs.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Open'", "member/identifier='jsmith'". Use '/' for nested fields.

[ConnectWise] Create a new expense entry. Requires at minimum a member reference, amount, and date. Returns the created expense entry with its assigned ID. This creates an expense record visible to accounting staff.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesExpense entry fields as JSON. Required: {"member": {"identifier": "..."}, "amount": N, "date": "yyyy-MM-dd"}. Optional: type, company, chargeToId, chargeToType, classification, paymentMethod, notes.

[ConnectWise] Permanently delete an expense entry by ID. This cannot be undone. Verify the entry with cw_get_expense_entry before deleting. Requires a valid expense entry ID.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise expense entry ID to delete. Verify with cw_get_expense_entry before deleting.

[ConnectWise] List all expense types configured in ConnectWise. Returns type IDs and names. Use to discover valid expense types when creating or filtering expense entries. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Retrieve a single expense entry by ID. Returns full expense entry details including member, amount, date, type, classification, company, charge-to reference, payment method, and notes. Requires a valid expense entry ID — use cw_list_expense_entries to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
idintegeryesThe numeric ConnectWise expense entry ID.

[ConnectWise] Retrieve a single expense report by ID. Returns full expense report details including member, status, total amount, entries, and approval info. Requires a valid expense report ID — use cw_list_expense_reports to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise expense report ID.

[ConnectWise] List expense entries with optional filtering. Returns paginated expense records including member, amount, date, type, company, and charge-to references. Use this to browse expense entries or narrow results before fetching full details with cw_get_expense_entry.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'", "amount>100", "date>=[2024-01-01]". Use '/' for nested fields, 'and'/'or' for boolean logic.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List expense reports with optional filtering. Returns paginated expense report records including member, status, total, and date range. Use to browse submitted expense reports or track approval status.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "member/identifier='jsmith'", "status/name='Open'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List expense entries for a specific member by identifier. A convenience tool that filters expenses to a single member. Useful for reviewing a technician's or salesperson's submitted expenses.

ParamTypeRequiredDefaultDescription
memberIdentifierstringyesThe ConnectWise member identifier (e.g., 'jsmith').
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List expense reports awaiting approval. Returns expense reports with status 'Open' that need manager review. Useful for finance workflow management and approval queue monitoring.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search expense entries by member identifier or notes text. Returns matching expense entries. Use this when you know the member or keyword but want to find related expense records.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against member identifier or notes.

[ConnectWise] Search expense reports by member identifier. Returns matching expense reports. Use this when you want to find expense report submissions for a specific member.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against member identifier.

[ConnectWise] Update an existing expense entry using JSON Patch operations. Requires a valid expense entry ID — use cw_list_expense_entries to find IDs. Returns the updated expense entry.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise expense entry ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "amount", "value": 150.00}]

Marketing

ToolPlanAccessSummary
cw_count_campaignsFreeRead-onlyGet a count of marketing campaigns matching optional conditions.
cw_create_campaignProWriteCreate a new marketing campaign.
cw_delete_campaignProDestructivePermanently delete a marketing campaign by ID.
cw_discover_campaign_statusesFreeRead-onlyList all campaign statuses configured in ConnectWise.
cw_discover_campaign_subtypesFreeRead-onlyList all campaign sub-types configured in ConnectWise.
cw_discover_campaign_typesFreeRead-onlyList all campaign types configured in ConnectWise.
cw_get_campaignFreeRead-onlyRetrieve a single marketing campaign by ID.
cw_get_marketing_groupFreeRead-onlyRetrieve a single marketing group by ID.
cw_list_active_campaignsFreeRead-onlyList marketing campaigns with active status.
cw_list_campaign_activitiesFreeRead-onlyList sales activities linked to a specific campaign.
cw_list_campaignsFreeRead-onlyList marketing campaigns with optional filtering.
cw_list_marketing_group_companiesFreeRead-onlyList companies associated with a marketing group.
cw_list_marketing_group_contactsFreeRead-onlyList contacts associated with a marketing group.
cw_list_marketing_groupsFreeRead-onlyList marketing groups with optional filtering.
cw_search_campaignsFreeRead-onlySearch marketing campaigns by name.
cw_update_campaignProWriteUpdate an existing marketing campaign using JSON Patch operations.

[ConnectWise] Get a count of marketing campaigns matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for marketing dashboards or checking result set size.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='Active'". Use '/' for nested fields.

[ConnectWise] Create a new marketing campaign. Requires at minimum a name. Returns the created campaign with its assigned ID. This creates a campaign record visible to marketing staff.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesCampaign fields as JSON. Required: {"name": "..."}. Optional: type, subType, status, startDate, endDate, budget, locationId, notes.

[ConnectWise] Permanently delete a marketing campaign by ID. This cannot be undone. Verify the campaign with cw_get_campaign before deleting. Requires a valid campaign ID.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise campaign ID to delete. Verify with cw_get_campaign before deleting.

[ConnectWise] List all campaign statuses configured in ConnectWise. Returns status IDs and names. Use to discover valid campaign statuses when creating or filtering campaigns. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all campaign sub-types configured in ConnectWise. Returns sub-type IDs and names. Use to discover valid campaign sub-types when creating or filtering campaigns. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all campaign types configured in ConnectWise. Returns type IDs and names. Use to discover valid campaign types when creating or filtering campaigns. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Retrieve a single marketing campaign by ID. Returns full campaign details including name, type, sub-type, status, start/end dates, budget, actual cost, revenue, and notes. Requires a valid campaign ID — use cw_list_campaigns to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise campaign ID.

[ConnectWise] Retrieve a single marketing group by ID. Returns full group details including name, type, and associated companies and contacts. Requires a valid marketing group ID — use cw_list_marketing_groups to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise marketing group ID.

[ConnectWise] List marketing campaigns with active status. Useful for reviewing currently running marketing initiatives. Returns only campaigns where status is 'Active'.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List sales activities linked to a specific campaign. A convenience tool that filters activities by campaign ID. Useful for tracking campaign effectiveness and follow-up activity.

ParamTypeRequiredDefaultDescription
campaignIdintegeryesThe numeric ConnectWise campaign ID.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List marketing campaigns with optional filtering. Returns paginated campaign records including name, type, status, start/end dates, and budget. Use this to browse campaigns or narrow results before fetching full details with cw_get_campaign.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "name contains 'Q4'", "status/name='Active'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List companies associated with a marketing group. Returns company records linked to the specified group. Use to see which companies are targeted by a marketing group. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
groupIdintegeryesThe numeric ConnectWise marketing group ID. Use cw_list_marketing_groups to find valid IDs.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List contacts associated with a marketing group. Returns contact records linked to the specified group. Use to see which individual contacts are targeted by a marketing group. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
groupIdintegeryesThe numeric ConnectWise marketing group ID. Use cw_list_marketing_groups to find valid IDs.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List marketing groups with optional filtering. Returns paginated group records including name, type, and member counts. Use to discover target audience groups for campaigns. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] Search marketing campaigns by name. Returns matching campaigns. Use this when you know the campaign name but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against campaign name.

[ConnectWise] Update an existing marketing campaign using JSON Patch operations. Requires a valid campaign ID — use cw_list_campaigns to find IDs. Returns the updated campaign.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise campaign ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "status", "value": {"name": "Active"}}]

Knowledge Base

ToolPlanAccessSummary
cw_count_kb_articlesFreeRead-onlyGet a count of knowledge base articles matching optional conditions.
cw_create_kb_articleProWriteCreate a new knowledge base article.
cw_discover_kb_categoriesFreeRead-onlyList all knowledge base categories.
cw_discover_kb_subcategoriesFreeRead-onlyList all knowledge base subcategories.
cw_get_kb_articleFreeRead-onlyRetrieve a single knowledge base article by ID.
cw_list_kb_articlesFreeRead-onlyList knowledge base articles with optional filtering.
cw_list_recent_kb_articlesFreeRead-onlyList the most recently created knowledge base articles.
cw_search_kb_articlesFreeRead-onlySearch knowledge base articles by title or content keyword.
cw_update_kb_articleProWriteUpdate an existing knowledge base article using JSON Patch operations.

[ConnectWise] Get a count of knowledge base articles matching optional conditions. Returns ConnectWise's own count as {"count":N}, from the resource's /count route. Useful for measuring KB coverage or checking result set size.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "category/name='Network'". Use '/' for nested fields.

[ConnectWise] Create a new knowledge base article. Requires a title and content. Call cw_discover_kb_categories first to find valid category/subcategory IDs. Returns the created article with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesArticle fields as JSON. Required: {"title": "...", "issue": "...", "resolution": "..."}. Optional: category, subCategory, board.

[ConnectWise] List all knowledge base categories. Returns category IDs and names. Categories organize KB articles into logical groups. Call this to discover valid category values before creating articles with cw_create_kb_article.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all knowledge base subcategories. Returns subcategory IDs, names, and parent category references. Subcategories provide a second level of KB article organization under categories. Call this to discover valid subcategory values.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Retrieve a single knowledge base article by ID. Returns full article details including title, issue, resolution, category, and subcategory. Use cw_list_kb_articles to find valid article IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric KB article ID. Use cw_list_kb_articles to find valid IDs.

[ConnectWise] List knowledge base articles with optional filtering. Returns paginated article summaries including ID, title, and category. Use this to browse available KB content or narrow results before fetching full articles with cw_get_kb_article.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "status/name='New'", "company/id=123 and priority/name!='Low'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the most recently created knowledge base articles. Useful for reviewing new documentation additions and ensuring KB coverage is up to date. Ordered by creation date descending.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search knowledge base articles by title or content keyword. Returns matching articles. Use this for natural-language KB lookups when troubleshooting issues.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against article title, issue, and resolution fields.

[ConnectWise] Update an existing knowledge base article using JSON Patch operations. Requires a valid article ID — use cw_list_kb_articles to find IDs. Returns the updated article.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric KB article ID to update.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "resolution", "value": "Updated resolution text"}]

Workflows

ToolPlanAccessSummary
cw_get_workflowFreeRead-onlyRetrieve a single workflow by ID.
cw_list_workflow_eventsFreeRead-onlyList events configured for a workflow.
cw_list_workflow_triggersFreeRead-onlyList triggers configured for a workflow.
cw_list_workflowsFreeRead-onlyList automation workflows with optional filtering.
cw_search_workflowsFreeRead-onlySearch workflows by name.

[ConnectWise] Retrieve a single workflow by ID. Returns full workflow details including name, table reference, activation status, and batch interval. Requires a valid workflow ID — use cw_list_workflows to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise workflow ID.

[ConnectWise] List events configured for a workflow. Returns event records including event type, execution order, and notification settings. Use to understand what actions a workflow performs when triggered. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
workflowIdintegeryesThe numeric ConnectWise workflow ID. Use cw_list_workflows to find valid IDs.

[ConnectWise] List triggers configured for a workflow. Returns trigger records including trigger type, expected fields, and conditions. Use to understand what activates a workflow. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).
workflowIdintegeryesThe numeric ConnectWise workflow ID. Use cw_list_workflows to find valid IDs.

[ConnectWise] List automation workflows with optional filtering. Returns paginated workflow records including name, table reference, and activation status. Use this to discover configured workflows or audit automation rules.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "name contains 'Ticket'", "activateFlag=true". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search workflows by name. Returns matching workflow records. Use this when you know the workflow name but not the numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against workflow name.

System Discovery

ToolPlanAccessSummary
cw_download_documentFreeRead-onlyDownload the content of a system document by id.
cw_get_documentFreeRead-onlyGet document metadata by ID including title, filename, and linked record info.
cw_list_documentsFreeRead-onlyList documents attached to a specific record.
cw_list_locationsFreeRead-onlyList system locations with optional filtering and pagination.
cw_search_documentsFreeRead-onlySearch documents by title within a specific record.

[ConnectWise] Download the content of a system document by id. You get a time-limited download link plus the content type, file name and size, not the bytes themselves. The envelope keys are sasUrl, contentType, suggestedFileName, sizeBytes and expiresAt, and the link is valid for 15 minutes. Fetch it before it expires, because nothing in StackJack keeps a copy. Use this for the .eml, .txt and .pdf attachments on service tickets and other records, where the other document tools return metadata only. Document ids come from cw_list_ticket_documents, cw_list_documents or cw_search_documents.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise document ID.

[ConnectWise] Get document metadata by ID including title, filename, and linked record info. Requires a valid document ID — use cw_list_documents to find IDs.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise document ID.

[ConnectWise] List documents attached to a specific record. Returns document IDs, titles, and metadata. recordType and recordId are REQUIRED — the ConnectWise system/documents endpoint is entity-scoped and returns a 400 error without them. Use the parent record's type (e.g. 'Ticket', 'Company', 'Contact', 'Project') and its numeric ID.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "title contains 'SOP'". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
recordIdintegeryesThe numeric ID of the parent record.
recordTypestringyesThe type of the parent record the documents are attached to (e.g. 'Ticket', 'Company', 'Contact', 'Project').

[ConnectWise] List system locations with optional filtering and pagination. Returns location IDs and names. Use these values when filtering or assigning location-scoped data such as members and tickets.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "name='Main Office'". Use '/' for nested fields.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search documents by title within a specific record. Returns matching document records. recordType and recordId are REQUIRED — the ConnectWise system/documents endpoint is entity-scoped and returns a 400 error without them. Use the parent record's type (e.g. 'Ticket', 'Company', 'Contact', 'Project') and its numeric ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
recordIdintegeryesThe numeric ID of the parent record.
recordTypestringyesThe type of the parent record the documents are attached to (e.g. 'Ticket', 'Company', 'Contact', 'Project').
searchstringyesSearch text to match against document title.

System Utilities

ToolPlanAccessSummary
cw_count_callbacksFreeRead-onlyCount total registered callback entries (webhooks), with optional active/inactive filtering.
cw_create_callbackProWriteRegister a new callback entry (webhook).
cw_delete_callbackProDestructivePermanently delete a callback entry (webhook) by ID.
cw_list_active_callbacksFreeRead-onlyList only active callback entries (webhooks) that are currently enabled.
cw_list_audit_trailFreeRead-onlyList the audit-trail history for ONE record.
cw_list_callbacksFreeRead-onlyList registered callback entries (webhooks) with optional filtering.
cw_list_custom_reportsFreeRead-onlyList all custom reports configured in ConnectWise.
cw_list_recent_audit_entriesFreeRead-onlyList recent audit-trail entries for ONE record from the last N days, most-recent first.
cw_list_security_rolesFreeRead-onlyList all security roles configured in ConnectWise.
cw_list_standard_notesFreeRead-onlyList all standard/canned notes configured in ConnectWise.
cw_list_user_defined_fieldsFreeRead-onlyList user-defined fields (UDFs) with optional filtering.
cw_search_audit_trailFreeRead-onlySearch the audit-trail history of ONE record.
cw_search_user_defined_fieldsFreeRead-onlySearch user-defined fields by caption (the field's display label).

[ConnectWise] Count total registered callback entries (webhooks), with optional active/inactive filtering. Returns the count and a list of callbacks. Use for quick integration audits.

ParamTypeRequiredDefaultDescription
activeOnlybooleannofalseFilter to active callbacks only (default false = all callbacks).

[ConnectWise] Register a new callback entry (webhook). Creates a callback that will POST event notifications to the specified URL when the configured object type changes. Returns the created callback with its assigned ID.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesCallback fields as JSON. Required: {"url": "https://...", "objectId": N, "type": "ticket", "level": "owner"}. The URL must be HTTPS.

[ConnectWise] Permanently delete a callback entry (webhook) by ID. This cannot be undone and will stop event notifications to the registered URL. Verify the callback with cw_list_callbacks before deleting.

ParamTypeRequiredDefaultDescription
idintegeryesThe numeric ConnectWise callback ID to delete. Verify with cw_list_callbacks before deleting.

[ConnectWise] List only active callback entries (webhooks) that are currently enabled. Returns callback records filtered to active status. Use to audit which integrations are actively receiving event notifications.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the audit-trail history for ONE record. ConnectWise scopes the audit trail per record, so you MUST supply both the record type and its numeric id (a bare/global list is not supported and returns an error). Returns a JSON array of audit entries (text, enteredDate, enteredBy, auditType, auditSubType, auditSource). There is no system-wide / cross-record audit query in ConnectWise Manage.

ParamTypeRequiredDefaultDescription
conditionsstringnonullOptional ConnectWise conditions filter applied within this record's trail (advanced; leave empty for the full trail).
idintegeryesNumeric id of the record whose audit history to fetch (e.g. ticket number 1236718).
orderBystringnonullOptional orderBy, e.g. "enteredDate desc".
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
typestringyesRecord type. One of: Ticket, Contact, Company, Opportunity, Time, Activity, ProductCatalog, ProjectTicket, Purchasing, Configuration, Schedule, Agreement, AgreementAddition, Project, Invoice, PurchaseOrder, Expense, ProductItem, Survey, Member, PurchaseOrderLineItem, Site.

[ConnectWise] List registered callback entries (webhooks) with optional filtering. Returns paginated callback records including URL, object type, and level. Use to audit which integrations receive event notifications from ConnectWise.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "type='ticket'", "url contains 'webhook'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List all custom reports configured in ConnectWise. Returns report IDs, names, and module references. Use to discover available custom reports for data analysis. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List recent audit-trail entries for ONE record from the last N days, most-recent first. ConnectWise scopes the audit trail per record and has no system-wide 'recent changes' feed, so you MUST supply the record type and id; the day-window filter and sort are applied on the StackJack side. Returns the matching audit entries as a JSON array.

ParamTypeRequiredDefaultDescription
daysintegerno7Number of days to look back (default 7).
idintegeryesNumeric id of the record whose recent audit history to list (e.g. ticket number 1236718).
typestringyesRecord type. One of: Ticket, Contact, Company, Opportunity, Time, Activity, ProductCatalog, ProjectTicket, Purchasing, Configuration, Schedule, Agreement, AgreementAddition, Project, Invoice, PurchaseOrder, Expense, ProductItem, Survey, Member, PurchaseOrderLineItem, Site.

[ConnectWise] List all security roles configured in ConnectWise. Returns role IDs, names, and admin flags. Use to understand the permission structure or validate role assignments. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List all standard/canned notes configured in ConnectWise. Returns note IDs, names, and content. Use to discover pre-written note templates available for ticket notes, activities, and other records. PAGINATED: 50 per page by default, 200 maximum; reach later pages with page=2, page=3 and so on, and narrow the result set with conditions instead of paging through everything.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter (ConnectWise syntax, not OData). Example: "name like 'A%'". Use '/' for nested fields.
pageintegerno1Page number for pagination (default 1).
pageSizeintegerno50Number of results per page (default 50, max 200).

[ConnectWise] List user-defined fields (UDFs) with optional filtering. Returns paginated UDF records including field name, caption, type, and entry method. Use to discover custom fields configured in the ConnectWise instance.

ParamTypeRequiredDefaultDescription
conditionsstringnonullConnectWise conditions filter. Examples: "caption contains 'Asset'", "entryMethod='EntryField'". Use '/' for nested fields, 'and'/'or' for boolean logic.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Search the audit-trail history of ONE record. ConnectWise scopes the audit trail per record and offers no cross-record / global audit search, so you MUST supply the record type and id; the search text is matched (case-insensitive substring) against each entry's text and enteredBy fields on the StackJack side. Returns the matching audit entries as a JSON array.

ParamTypeRequiredDefaultDescription
idintegeryesNumeric id of the record whose audit history to search (e.g. ticket number 1236718).
searchstringyesSearch text matched (case-insensitive substring) against each entry's text or enteredBy.
typestringyesRecord type. One of: Ticket, Contact, Company, Opportunity, Time, Activity, ProductCatalog, ProjectTicket, Purchasing, Configuration, Schedule, Agreement, AgreementAddition, Project, Invoice, PurchaseOrder, Expense, ProductItem, Survey, Member, PurchaseOrderLineItem, Site.

[ConnectWise] Search user-defined fields by caption (the field's display label). Returns matching UDF records. Use this when you know the custom field's label but want to find its details and ID.

ParamTypeRequiredDefaultDescription
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
searchstringyesSearch text to match against the UDF caption (display label).

Analytics

ToolPlanAccessSummary
cw_board_performance_comparisonFreeRead-onlyTicket volume and average resolution time per service board.
cw_first_response_time_analyticsFreeRead-onlyFirst response time over a SAMPLE of the newest tickets in a range.
cw_open_ticket_age_distributionFreeRead-onlyOpen tickets grouped by age bucket: 0-7d, 8-14d, 15-30d, 31-60d, 60d+.
cw_open_ticket_summaryFreeRead-onlyOpen tickets grouped by board, priority and age bucket.
cw_priority_distributionFreeRead-onlyOpen ticket count per priority level.
cw_stale_ticket_reportFreeRead-onlyIdentify open tickets with no activity beyond a threshold.
cw_team_workload_balanceFreeRead-onlyOpen ticket counts and share per member.
cw_ticket_aging_reportFreeRead-onlyOpen tickets grouped by the UTC week they were created.
cw_ticket_resolution_analyticsFreeRead-onlyResolution time for closed tickets in a date range.
cw_ticket_source_analysisFreeRead-onlyTicket volume by creation source for a date range.
cw_ticket_volume_trendsFreeRead-onlyTicket volume per period, counted by ConnectWise over the whole period.
cw_unassigned_ticket_reportFreeRead-onlyUnassigned open tickets, counted and grouped by board.

[ConnectWise] Ticket volume and average resolution time per service board. Walks every page in the look-back window with a coverage block; avgResolutionHours is null, never 0, without closed tickets. The coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated; when truncated is true every per-board figure is a lower bound. closedWithResolutionData says how many tickets each average is over. totalBoards is over every board seen; the boards array lists at most 200, busiest first, with a returnedCount. The window and all timestamps are UTC.

ParamTypeRequiredDefaultDescription
daysintegerno30Number of days to look back (default 30, clamped to 1-3650).
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] First response time over a SAMPLE of the newest tickets in a range. The coverage block gives the sample size and ConnectWise's count for the range; truncated is true when they differ. Its totalAvailable is null when the count read fails, which is not zero. Every statistic is null, never 0, when no sampled ticket has a note. CAVEAT: the first note on a ConnectWise ticket is frequently the ticket's OWN initial description, created with the ticket, so measured times can read near zero -- treat them as a floor. Timestamps are compared in UTC. Makes 2+N API calls, default N=20.

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format.
sampleSizeintegerno20Maximum tickets to sample for note fetching (default 20, clamped to 1-50). The sample is the newest tickets in the range, not a random draw.
startDatestringyesStart date in yyyy-MM-dd format.

[ConnectWise] Open tickets grouped by age bucket: 0-7d, 8-14d, 15-30d, 31-60d, 60d+. Walks every page and reports a coverage block; when coverage.truncated is true every bucket is a lower bound. The coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated. Ages are measured in UTC from the moment of the call, so a bucket depends on time of day rather than on local midnight. totalTickets counts only tickets with a parseable dateEntered; undatedTickets reports the rest, which appear in no bucket.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Open tickets grouped by board, priority and age bucket. Walks every page with a coverage block; when coverage.truncated is true every group count is a lower bound. The coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated. byBoard and byPriority list at most 200 groups each, largest first, with boardsReturnedCount and prioritiesReturnedCount beside them; byAge always carries all six buckets. Ages are measured in UTC from the moment of the call, and undatedTickets counts tickets with no parseable dateEntered, which appear in no age bucket.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Open ticket count per priority level. Walks every page with a coverage block; when coverage.truncated is true each count is a lower bound and the shares are only the sample's shape. The coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated. totalPriorities is over every priority seen; the priorities array lists at most 200, largest first, with a returnedCount.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Identify open tickets with no activity beyond a threshold. Returns tickets sorted by days since last update. Use for daily triage.

ParamTypeRequiredDefaultDescription
pageSizeintegerno50Maximum results (default 50, max 200).
staleDaysintegerno7Days of inactivity to consider stale (default 7).

[ConnectWise] Open ticket counts and share per member. Walks every page of tickets and members with a coverage block for each; when ticketCoverage.truncated is true each count is a lower bound. Each coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated. The top-level truncated flag reflects the TICKET walk only, because a truncated member directory costs owner NAMES, not counts -- read memberDirectoryCoverage for that. memberCount is over every member holding open work; the members array lists at most 200, busiest first, with a returnedCount. A share is null, never 0, when there is nothing to divide by.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request for the TICKET walk (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of open tickets either way. The member directory is always paged at 200, so a smaller value here cannot shrink the name lookup.

[ConnectWise] Open tickets grouped by the UTC week they were created. Walks every page with a coverage block; when coverage.truncated is true every week's count is a lower bound. The coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated. Weeks are Monday-start and bucketed in UTC, so a ticket created late on a Sunday evening local time can land in the following week. weeklyBreakdown lists at most 200 weeks, OLDEST first, with a returnedCount, and undatedTickets counts tickets with no parseable dateEntered.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Resolution time for closed tickets in a date range. Walks every page in the range with a coverage block; every statistic is null, never 0, when nothing closed. The coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated; when truncated is true the figures describe only the tickets analyzed. Returns average, median, fastest and slowest resolution hours, compared in UTC.

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format. Defines the end of the analysis period.
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.
startDatestringyesStart date in yyyy-MM-dd format. Defines the beginning of the analysis period.

[ConnectWise] Ticket volume by creation source for a date range. Walks every page in the range with a coverage block; when coverage.truncated is true the shares describe only the tickets analyzed. The coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated. totalTickets is the number analyzed across every page and is the denominator for every share. Date bounds are UTC.

ParamTypeRequiredDefaultDescription
endDatestringnonullEnd date in yyyy-MM-dd format (default: today).
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.
startDatestringnonullStart date in yyyy-MM-dd format (default: 30 days ago).

[ConnectWise] Unassigned open tickets, counted and grouped by board. Walks every page with a coverage block; totalUnassigned is the full count, while the tickets array is a 200-row sample. The coverage block carries analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched and truncated; when truncated is true the counts are a lower bound. The walk pages by id for cross-request determinism; the tickets array is then sorted OLDEST FIRST and capped at 200 with a returnedCount, and byBoard lists at most 200 boards with its own boardsReturnedCount.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

Advanced Analytics

ToolPlanAccessSummary
cw_agreement_coverage_gapsProRead-onlyIdentify companies with open tickets but no agreement in force.
cw_agreement_renewal_forecastProRead-onlyList agreements expiring within N days, plus those already past their end date.
cw_agreement_utilization_trackerProRead-onlyTrack agreement hours used vs budgeted.
cw_billing_leakage_detectionProRead-onlyFind billable time not yet invoiced, alongside the invoiced revenue for the same period.
cw_cross_board_ticket_flowProRead-onlyCompare ticket volume and resolution across all boards.
cw_csat_reportProRead-onlyCustomer satisfaction report across every service survey.
cw_dispatch_optimizerProRead-onlyWorkload-based dispatch suggestions for unassigned tickets.
cw_mean_time_metricsProRead-onlyCalculate MTTR (Mean Time To Resolve) and MTBF (Mean Time Between Failures per company) for closed tickets in a date range.
cw_member_utilization_reportProRead-onlyAnalyze member utilization showing billable vs total hours and utilization rate against a target.
cw_overdue_ticket_reportProRead-onlyTickets past their SLA resolution target.
cw_project_burn_rateProRead-onlyAnalyze project hours burned vs budgeted with projected completion.
cw_repeat_caller_analysisProRead-onlyIdentify companies and contacts with the highest ticket volume.
cw_resource_capacity_planningProRead-onlyMember availability vs scheduled work and open ticket assignments.
cw_sla_compliance_dashboardProRead-onlySLA compliance metrics for closed tickets in a date range.
cw_ticket_category_trendsProRead-onlyTrack ticket type and subtype distribution over a date range.
cw_time_entry_anomaly_detectionProRead-onlyFlag unusual time entries including entries over 12 hours, weekend entries, zero-hour entries, and potential duplicates.
cw_timesheet_summaryProRead-onlySummarize time entries by member and company for a date range.
cw_top_time_consumersProRead-onlyMembers and companies with the most hours logged in a date range.
cw_unbilled_time_reportProRead-onlyFind billable time entries that have not been invoiced.
cw_weekend_work_reportProRead-onlyTime entries logged on weekends (Saturday and Sunday) in a date range.

[ConnectWise] Identify companies with open tickets but no agreement in force. Cross-references companies with open tickets against companies holding an agreement that is neither cancelled nor Expired/Inactive. Use for upselling agreement coverage. BOTH SIDES MUST BE COMPLETE FOR THIS ANSWER TO BE SAFE. A truncated AGREEMENT read invents coverage gaps -- a company whose only agreement sits past the page ceiling looks uncovered -- so when the agreement walk is truncated the gap list is suppressed entirely rather than published with false positives. A truncated TICKET read only misses gaps, which is stated but not suppressed. Both walks report a coverage block. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] List agreements expiring within N days, plus those already past their end date. Use for renewal pipeline management and proactive customer outreach. Walks every page of non-cancelled agreements (up to 10 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated -- so a renewal pipeline built from this is never quietly missing agreements past the first page. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
daysintegerno90Number of days to look ahead for expiring agreements (default 90).

[ConnectWise] Track agreement hours used vs budgeted. Returns per-agreement metrics showing hours consumed against billableHoursLimit. HOURS ARE ATTRIBUTED FROM A GLOBAL TIME-ENTRY READ, so this tool is only meaningful when that read completes. It walks every time entry carrying an agreement (up to 50 pages of 200) and, if the ceiling binds, sets usedHours, remainingHours, utilizationPercent and status to NULL for every agreement rather than attributing an arbitrary 10,000 entries -- a partial global read cannot be split per agreement, and a partial usedHours would read as a real consumption figure. Check timeEntryCoverage.truncated first. Only agreements in force are listed: an agreementStatus of Expired, Cancelled or Inactive is excluded and reported separately. An agreement with no billableHoursLimit has no budget to be utilized against, so its utilizationPercent is null and its status is "No Budget Set" -- it used to report 0% "On Track". Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Find billable time not yet invoiced, alongside the invoiced revenue for the same period. Use for billing reconciliation before month-end close. Walks every page of both dimensions (up to 50 pages of 200 each) and reports a coverage block per dimension -- analyzed, totalAvailable, pagesFetched, truncated. When truncated is true, totalUninvoicedBillableHours is a LOWER BOUND on the leakage, which is the direction that matters for this tool. totalInvoicedRevenue sums each invoice's `total` and is TAX-INCLUSIVE; use cw_company_financial_summary for an ex-VAT figure. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format.
startDatestringyesStart date in yyyy-MM-dd format.

[ConnectWise] Compare ticket volume and resolution across all boards. Identifies overloaded boards by showing open count, closed count, and average resolution hours per board. Use for capacity planning and board rebalancing. This reads EVERY ticket in the instance, not a date range, so on any established MSP it will hit the 50-page ceiling (10,000 tickets) and report truncated:true with the real total from ConnectWise's count endpoint. Board comparisons drawn from a truncated read are unsafe -- the analyzed slice is not evenly distributed across boards -- so check coverage.truncated before using them. A board's avgResolutionHours is null when none of its analyzed closed tickets carries both timestamps, never 0. Note: makes 1+ API calls internally.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Customer satisfaction report across every service survey. Walks each survey's results to exhaustion (shared 50-page budget across all surveys, 200 per page) and reports coverage per survey, so a truncated read is visible instead of silently complete. Scores are derived from each response's top-level totalPoints, NOT from a `score` field (there is none) and NOT from question IDs, which differ per survey and per instance -- one survey may score -1/0/1/3 out of 4 points while another scores 0=positive/1=neutral/2=negative out of 100. Each survey is scored against ITS OWN maximum: percentAtMaxPoints is the top-box CSAT (the share of responses at the survey's best possible score) and is the only figure pooled across surveys, because it is scale-free. A survey whose responses are all identical has no observable scale, so its scores are null with a note rather than a misleading 100. No per-member breakdown: survey results carry no member reference, and attributing 13,000 responses would need one ticket lookup each. Use the ticketId on each response with cw_get_ticket if you need owner attribution.

[ConnectWise] Workload-based dispatch suggestions for unassigned tickets. Analyzes open ticket distribution across active members and suggests assignments based on current capacity. Returns members ranked by available capacity, plus up to 20 unassigned tickets as examples. Walks every page of open tickets (up to 50 pages of 200) and of active members (up to 10) and reports a coverage block -- analyzed, totalAvailable, pagesFetched, truncated. A truncated walk means the per-member workload counts are a lower bound and the ranking may be wrong, which the response states rather than implying a complete picture. Note: makes 2+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Calculate MTTR (Mean Time To Resolve) and MTBF (Mean Time Between Failures per company) for closed tickets in a date range. Use for operational KPI reporting. Walks every page of closed tickets in the range (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. MTBF in particular is meaningless on a truncated read, because the gaps between a company's tickets depend on having all of them. Both figures are NULL when there is nothing to average, never 0 -- a zero MTTR would read as instant resolution. MTTA is not computed here; use cw_first_response_time_analytics. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format.
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.
startDatestringyesStart date in yyyy-MM-dd format.

[ConnectWise] Analyze member utilization showing billable vs total hours and utilization rate against a target. Returns per-member metrics for capacity planning and identifying under- or over-utilized staff. Walks every page of matching time entries (up to 50 pages of 200) and of active members (up to 10 pages of 200), and reports entriesAnalyzed against totalMatchingEntries so any truncation is visible in the output. Note: Makes 3+ API calls internally (one count plus one per page).

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format. Defines the end of the analysis period.
startDatestringyesStart date in yyyy-MM-dd format. Defines the beginning of the analysis period.
targetUtilizationintegerno70Target utilization percentage (default 70). Members below this are flagged as under-utilized.

[ConnectWise] Tickets past their SLA resolution target. Compares open ticket age against SLA resolve hours and returns tickets that have exceeded their target, worst first. overdueCount is over every ticket analyzed; overdueTickets lists at most 200 of them with a returnedCount, so a large backlog cannot blow the platform result-size cap. Walks every page of open tickets (up to 50 pages of 200) and every SLA definition, and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. A breach list that quietly stops at 200 open tickets hides exactly the tickets it exists to surface, so when truncated is true overdueCount is a lower bound and the response says so. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Analyze project hours burned vs budgeted with projected completion. Walks every page of the project's time entries (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. A project with no estimatedHours has no budget to burn against, so burnPercent, remainingHours and status are NULL rather than the 0% "On Track" they used to report. Likewise dailyBurnRate and estimatedDaysRemaining are null when the time entries span no measurable elapsed period. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
projectIdintegeryesThe ConnectWise project ID to analyze.

[ConnectWise] Identify companies and contacts with the highest ticket volume. Groups tickets in a lookback window by company and by contact and ranks by volume. Use for identifying frequent callers that may need proactive support or root-cause investigation. Walks every page of tickets in the window (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. This ranking is only trustworthy when truncated is false: an arbitrary 200 of several thousand tickets ranks whichever companies happened to land on page one. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
daysintegerno90Number of days to look back (default 90).
minTicketsintegerno3Minimum tickets to be considered a repeat caller (default 3).
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Member availability vs scheduled work and open ticket assignments. Compares active members against scheduled entries in the horizon and open ticket load to assess capacity. Walks every page of all three dimensions (open tickets up to 50 pages of 200; members and schedule entries up to 10) and reports a coverage block per dimension -- analyzed, totalAvailable, pagesFetched, truncated. Per-member load counts are a lower bound whenever a dimension is truncated, so the capacity ranking may be wrong; the response says so rather than implying a complete picture. Note: makes 3+ API calls internally.

ParamTypeRequiredDefaultDescription
daysintegerno7Number of days ahead to check schedules (default 7).

[ConnectWise] SLA compliance metrics for closed tickets in a date range. Returns compliance rates, breach counts, and near-miss counts based on SLA resolution targets. Use for management reporting and service quality assessment. Walks every page of closed tickets in the range (up to 50 pages of 200) and every SLA definition, and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. Compliance rates are null when no closed ticket in the range carries an SLA with a resolution target, because there is nothing to be compliant against; a zero would read as total non-compliance. Note: makes 2+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format. Defines the end of the analysis period.
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.
startDatestringyesStart date in yyyy-MM-dd format. Defines the beginning of the analysis period.

[ConnectWise] Flag unusual time entries including entries over 12 hours, weekend entries, zero-hour entries, and potential duplicates. Use for time entry auditing and data quality checks. Walks every page of entries in the window (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. An audit tool that silently reads only the first 200 entries of a month misses most of what it is looking for, so when truncated is true the anomaly counts are a lower bound and the response says so. Weekend and hour-of-day tests are evaluated in UTC. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
daysintegerno30Number of days to look back (default 30).

[ConnectWise] Summarize time entries by member and company for a date range. Returns total hours, billable hours, and per-member/company breakdowns. Use for payroll review, billing reconciliation, or management reporting. Walks every page of matching time entries (up to 50 pages of 200) and reports entriesAnalyzed against totalMatchingEntries so any truncation is visible in the output. Note: Makes 2+ API calls internally (one count plus one per page).

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format. Defines the end of the timesheet period.
startDatestringyesStart date in yyyy-MM-dd format. Defines the beginning of the timesheet period.

[ConnectWise] Members and companies with the most hours logged in a date range. Returns ranked lists of top time consumers by member and by company. Use for billing review and resource allocation analysis. Walks every page of entries in the range (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. A ranking built from an arbitrary 200 of several thousand entries ranks whoever landed on page one, so check truncated before trusting the order. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format.
startDatestringyesStart date in yyyy-MM-dd format.
topNintegerno20Number of top results to return (default 20).

[ConnectWise] Find billable time entries that have not been invoiced. Returns unbilled entries grouped by company with total hours. Use for billing reconciliation and revenue recovery. Walks every page of matching entries (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated -- because unbilled time at a busy MSP routinely exceeds one page, and a single-page total understates the revenue at risk. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Time entries logged on weekends (Saturday and Sunday) in a date range. Returns per-member weekend hours and entry counts. Use for overtime tracking, work-life balance monitoring, or billing review. Walks every page of entries in the range (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. Weekend entries are a small slice of a month's time, so a single-page read finds almost none of them; when truncated is true the weekend totals are a lower bound and the response says so. Saturday/Sunday is determined in UTC, so an instance whose technicians work in a distant timezone will see entries near midnight fall on the adjacent day. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format.
startDatestringyesStart date in yyyy-MM-dd format.

Premium Analytics

ToolPlanAccessSummary
cw_agreement_profitability_analysisProRead-onlyAnalyze agreement profitability by comparing agreement revenue to labour cost from time entries.
cw_client_health_scoreProRead-onlyComposite client health score (0-100) based on ticket volume, resolution time, open ticket age, and agreement status.
cw_client_retention_analysisProRead-onlyIdentify at-risk clients based on agreement expiry and declining ticket engagement.
cw_company_offboarding_auditProRead-onlyCheck a company for open items before offboarding: open tickets, agreements in force, open projects, and configurations.
cw_customer_lifetime_valueProRead-onlyCalculate total invoice revenue per company to estimate customer lifetime value.
cw_effective_hourly_rateProRead-onlyCalculate effective hourly rate by comparing invoiced revenue to billable hours logged.
cw_monthly_recurring_revenueProRead-onlyCalculate MRR from agreements in force with recurring billing, normalized to a monthly figure.
cw_pipeline_revenue_forecastProRead-onlyWeighted pipeline revenue forecast from open opportunities.
cw_procurement_spend_analysisProRead-onlyAnalyze purchase order spending by vendor and status.
cw_profitability_leaderboardProRead-onlyRank companies by profitability (invoice revenue minus estimated time cost).
cw_project_portfolio_healthProRead-onlyProject portfolio health dashboard comparing budget vs actual hours across active projects.
cw_qbr_data_packProRead-onlyComprehensive quarterly business review data pack for a client.
cw_revenue_per_employeeProRead-onlyCalculate total invoiced revenue divided by active member count for a date range.
cw_service_margin_analysisProRead-onlyAnalyze revenue vs labour cost per company by comparing invoiced amounts to time entries at a cost rate.

[ConnectWise] Analyze agreement profitability by comparing agreement revenue to labour cost from time entries. Returns revenue, estimated cost, margin, and effective hourly rate. Use to evaluate whether specific agreements are profitable. Walks every page of the agreement's time entries (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. A truncated read UNDERSTATES labour cost and therefore OVERSTATES margin, which is the direction that loses money, so the response says so. An agreement with no billAmount yields null margin and null effective rate rather than a margin equal to the negative of the cost. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
agreementIdintegeryesThe ConnectWise agreement ID to analyze. Use cw_list_agreements to find valid IDs.
hourlyRatenumberno75Hourly cost rate for labor cost estimation (default 75.00).

[ConnectWise] Composite client health score (0-100) based on ticket volume, resolution time, open ticket age, and agreement status. Returns an overall score with per-dimension breakdowns. Use to identify at-risk clients or prepare for QBR meetings. Tickets and agreements are walked to exhaustion (tickets up to 50 pages of 200, agreements up to 10) and each dimension carries a coverage block: analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. A truncated read means the SCORE ITSELF is computed over a sample -- the response says so rather than presenting a complete-looking number. avgResolutionHours is null when no ticket in the window closed; the score then falls to its lowest band and resolutionScoreBasis says why. agreementCoverage counts only agreements in force: an agreementStatus of Expired, Cancelled or Inactive does not count, and countedAgreements/excludedAgreements list exactly which agreements drove the score. Note: makes roughly 5 API calls plus one per page.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID to analyze. Use cw_list_companies to find valid IDs.
lookbackDaysintegerno90Number of days to look back for scoring (default 90).

[ConnectWise] Identify at-risk clients based on agreement expiry and declining ticket engagement. Flags companies with agreements ending soon or already expired, combined with low recent ticket activity. totalActiveAgreements counts only agreements in force -- Expired, Cancelled and Inactive ones are excluded and listed separately, so a client whose contract lapsed is not reported as covered. Both dimensions are walked to exhaustion (agreements up to 10 pages of 200, 90-day tickets up to 50) and carry a coverage block. A truncated TICKET read is the dangerous direction: unseen tickets make a client look disengaged and inflate its risk level to High, so the response says so. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
expiryWindowDaysintegerno90Days ahead to check for expiring agreements (default 90).

[ConnectWise] Check a company for open items before offboarding: open tickets, agreements in force, open projects, and configurations. Returns a checklist of items that need resolution. Counts come from ConnectWise's own count endpoints rather than a page length capped at 200, so a company with 900 open tickets no longer reports 200. Agreements are walked so that agreementStatus is honoured: an Expired agreement is not a blocker to offboarding, and the ones excluded on that basis are listed. readyToOffboard is null, never true, if any count could not be read -- "no blockers found" and "could not check" must not look the same on a decision this destructive. Note: makes 4+ API calls internally.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID to audit for offboarding.

[ConnectWise] Calculate total invoice revenue per company to estimate customer lifetime value. Ranks companies by total spend. Use for identifying top accounts and revenue concentration risk. This reads EVERY invoice in the instance with no date bound, so on any established MSP it will hit the 50-page ceiling (10,000 invoices) and report truncated:true. CONCENTRATION FIGURES FROM A TRUNCATED READ ARE UNSAFE: revenueShare is a percentage of the invoices analyzed, not of the company's history, so a client that looks like 40% of revenue may be an artifact of which invoices were fetched. revenueShare is withheld entirely when the walk truncates; per-company totals remain as lower bounds. totalRevenue sums each invoice's `total` and is TAX-INCLUSIVE. Note: makes 1+ API calls internally.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Calculate effective hourly rate by comparing invoiced revenue to billable hours logged. Returns actual rate, target variance, and per-company hours. Use to assess overall service delivery profitability. Both dimensions are walked to exhaustion (up to 50 pages of 200 each) and carry a coverage block. This is a RATIO of two independently truncatable totals, so if either walk truncates the rate is meaningless -- it is returned as null with a note rather than as a plausible number. totalRevenue sums each invoice's `total` and is TAX-INCLUSIVE, which inflates the rate wherever VAT applies; use cw_company_financial_summary for an ex-VAT figure. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format. Defines the end of the analysis period.
startDatestringyesStart date in yyyy-MM-dd format. Defines the beginning of the analysis period.
targetRatenumberyesTarget hourly rate for comparison (e.g. 150.00). The report shows variance against this target.

[ConnectWise] Calculate MRR from agreements in force with recurring billing, normalized to a monthly figure. Returns total MRR, agreement count, and per-agreement breakdown. Walks every page of non-cancelled agreements (up to 10 pages of 200) and reports a coverage block; a truncated walk makes MRR a LOWER BOUND and says so. EXPIRED AGREEMENTS ARE EXCLUDED -- they were previously counted, which is how a lapsed contract kept contributing to reported recurring revenue -- and the excluded ones are listed with their status. An agreement whose billingCycle ConnectWise does not name is assumed MONTHLY, and the count of such assumptions is reported rather than hidden. Note: makes 1+ API calls internally.

[ConnectWise] Weighted pipeline revenue forecast from open opportunities. Calculates expected revenue by multiplying each opportunity's value by its probability percentage. Returns per-stage and overall forecasts. An opportunity whose probability ConnectWise does not name is weighted at an ASSUMED 50%; opportunitiesWithAssumedProbability reports how many of the forecast rests on that guess. Use for sales forecasting and pipeline reviews.

[ConnectWise] Analyze purchase order spending by vendor and status. Groups purchase orders by vendor to show spending distribution. Use for vendor management and procurement optimization. Walks every page of purchase orders (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. spendShare is a percentage of the purchase orders ANALYZED, so it is withheld when the walk truncates: a share of a partial denominator is a different number, not a smaller one. Note: makes 1+ API calls internally.

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Rank companies by profitability (invoice revenue minus estimated time cost). Compares invoiced revenue against time logged at a given hourly cost rate. Returns per-company profit and margin. Both dimensions are walked to exhaustion (up to 50 pages of 200 each) and carry a coverage block. THE RANKING IS THE POINT AND TRUNCATION BREAKS IT: a truncated invoice read understates revenue while a truncated time read understates cost, so companies move in opposite directions and the order becomes an artifact of which pages were fetched. The response flags this rather than presenting a leaderboard that looks authoritative. marginPercent is null for a company with no revenue in the period, not 0%. revenue sums each invoice's `total` and is TAX-INCLUSIVE. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format.
hourlyRatenumberno75Hourly cost rate for labor estimation (default 75.00).
startDatestringyesStart date in yyyy-MM-dd format.

[ConnectWise] Project portfolio health dashboard comparing budget vs actual hours across active projects. Returns per-project budget utilization, overrun alerts, and portfolio status. HOURS ARE ATTRIBUTED FROM A GLOBAL TIME-ENTRY READ, so this is only meaningful when that read completes. It walks every time entry carrying a project (up to 50 pages of 200) and, if the ceiling binds, sets actualHours, remainingHours, utilizationPercent and status to NULL for every project rather than attributing an arbitrary 10,000 entries -- a partial global read cannot be split per project. Check timeEntryCoverage.truncated first. A project with no estimatedHours has no budget to utilize against, so its utilizationPercent is null and its status is "No Budget Set" -- it used to report 0% "On Track". Note: makes 2+ API calls internally.

[ConnectWise] Comprehensive quarterly business review data pack for a client. Returns ticket volume and resolution metrics, time logged, agreement status, and configuration counts. Every dimension is walked to exhaustion (tickets and time entries up to 50 pages of 200, agreements and configurations up to 10) and carries its own coverage block: analyzed, totalAvailable from ConnectWise's own count endpoint, pagesFetched, truncated. When truncated is true the derived figures are a LOWER BOUND over the records analyzed, never a period total. Averages and medians are null when there is nothing to average -- a zero there would be indistinguishable from a real measurement. agreementSummary.activeAgreements excludes agreements whose agreementStatus is Expired, Cancelled or Inactive, and lists exactly which agreements were counted and which were excluded so the number is auditable. ticketMetrics.openTickets counts tickets OPENED IN THIS QUARTER that are still open; currentlyOpenTickets is the company's whole open backlog regardless of when it was raised, which is usually the figure a QBR wants. Note: makes roughly 6 API calls plus one per page.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID to generate QBR data for. Use cw_list_companies to find valid IDs.
quarterEndstringyesQuarter end date in yyyy-MM-dd format (e.g. '2025-03-31' for Q1 2025).
quarterStartstringyesQuarter start date in yyyy-MM-dd format (e.g. '2025-01-01' for Q1 2025).

[ConnectWise] Calculate total invoiced revenue divided by active member count for a date range. Use for profitability benchmarking. Both dimensions are walked to exhaustion (invoices up to 50 pages of 200, members up to 10) and carry a coverage block. This is a RATIO of two independently truncatable totals, so if either walk truncates the metric is withheld as null with a note rather than published as a plausible number. totalRevenue sums each invoice's `total` and is TAX-INCLUSIVE. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
endDatestringyesEnd date in yyyy-MM-dd format.
startDatestringyesStart date in yyyy-MM-dd format.

[ConnectWise] Analyze revenue vs labour cost per company by comparing invoiced amounts to time entries at a cost rate. Returns margin and margin percentage per company. Both dimensions are walked to exhaustion (up to 50 pages of 200 each) and carry a coverage block. A truncated INVOICE read understates revenue and a truncated TIME read understates cost, so on a truncated run the margins move in opposite directions and the response says so. A company with revenue but no invoices in the period has a null marginPercent, not 0%. revenue sums each invoice's `total` and is TAX-INCLUSIVE, which overstates margin wherever VAT applies. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
costRatenumberno75Hourly cost rate for labor cost estimation (default 75.00).
endDatestringyesEnd date in yyyy-MM-dd format.
startDatestringyesStart date in yyyy-MM-dd format.

Cross-Domain

ToolPlanAccessSummary
cw_board_health_dashboardProRead-onlyHealth metrics for a specific service board: open ticket count, average age, SLA compliance estimate, and top assignees.
cw_bulk_status_summaryProRead-onlyCounts of open items across all domains for a company: open tickets, agreements in force, open projects, open opportunities, and configurations.
cw_company_financial_summaryProRead-onlyTotal invoiced revenue, total hours logged, agreement value, and open ticket count for a company.
cw_entity_relationship_mapProRead-onlyShow relationships between a company's tickets, agreements, projects, opportunities, contacts, and configurations.
cw_new_client_onboarding_statusProRead-onlyCheck what's been set up for a new client: contacts, sites, configurations, and agreements.
cw_technician_dashboardProRead-onlyToday's schedule entries, open assigned tickets, and time logged today for a specific member.
cw_ticket_handoff_analysisProRead-onlyAnalyze resolution patterns for closed tickets, identifying tickets with unusually long resolution times and board distribution.
cw_weekly_operations_reportProRead-onlyTickets opened and closed in the last 7 days plus time logged, as a weekly operations snapshot for management review.

[ConnectWise] Health metrics for a specific service board: open ticket count, average age, SLA compliance estimate, and top assignees. Use for board-level performance monitoring. Walks every page of the board's open tickets (up to 50 pages of 200) and every SLA definition, and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. avgAgeHours and complianceRate are null when there is nothing to measure, never 0: a zero average age would read as a board whose tickets were all raised this instant, and a zero compliance rate as total SLA failure. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_list_service_boards to find valid IDs.

[ConnectWise] Counts of open items across all domains for a company: open tickets, agreements in force, open projects, open opportunities, and configurations. Use for a quick company health snapshot. EVERY COUNT COMES FROM ConnectWise's OWN COUNT ENDPOINT, not from the length of a page. Previously each number was an array length capped at 200, so a company with 900 open tickets reported exactly 200 -- and totalOpenItems compounded four such caps into one plausible-looking total. Agreements are the exception: they are walked so that agreementStatus can be honoured, since a count endpoint cannot exclude Expired ones. A count that ConnectWise did not answer is null, never 0, and totalOpenItems is null if any of its parts is. Note: makes 5+ API calls internally.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID to summarize.

[ConnectWise] Total invoiced revenue, total hours logged, agreement value, and open ticket count for a company. Every dimension is walked to exhaustion and carries a coverage block (analyzed, totalAvailable, pagesFetched, truncated); when truncated is true the totals are a LOWER BOUND, not a company lifetime figure. TAX BASIS: totalInvoiced is each invoice's `total`, which is TAX-INCLUSIVE -- at 25% VAT it runs about a quarter above the money actually billed for work. totalInvoicedExVat sums the invoices' own `subtotal` (falling back to total minus salesTax) and is the figure to compare against labour cost or agreement value; it is NULL when no invoice carried either field, never 0. totalInvoicedExVatBasis breaks down how many invoices came from each path INCLUDING how many were excluded for having neither, so a partial sum is never mistaken for a complete one. KNOWN CONNECTWISE CAVEATS, not defects here: an invoice with invoiceType "Agreement" commonly reports agreementAmount 0.00 with the money sitting in productTotal instead; and unless the instance syncs payments back from its accounting package, every invoice reports payments 0.00 and balance equal to the full total, so outstanding balance cannot be derived from these records. Neither figure is emitted rather than emitting an unusable number. agreements counts only agreements in force -- an agreementStatus of Expired, Cancelled or Inactive does not count -- and lists which were counted and which excluded. Note: makes roughly 6 API calls plus one per page.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.

[ConnectWise] Show relationships between a company's tickets, agreements, projects, opportunities, contacts, and configurations. Returns totals plus open/closed splits for each entity type linked to the company. Every dimension is walked to exhaustion (tickets up to 50 pages of 200, the rest up to 10) and carries its own coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated -- so a company with 900 tickets no longer reports 200. The agreements split reports active (in force), expired-or-inactive, and cancelled as three separate numbers, because a lapsed agreement was previously counted as active. Note: makes 6+ API calls internally.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID to map relationships for.

[ConnectWise] Check what's been set up for a new client: contacts, sites, configurations, and agreements. Returns counts and details for each category with an overall readiness score. Contact and configuration counts come from ConnectWise's own count endpoints rather than a page length capped at 200. "Agreements in place" counts only agreements in force -- Expired, Cancelled and Inactive ones do not make a client onboarded -- and the excluded ones are listed. A step whose count could not be read reports complete:null (NOT false, which would read as a missing step on a healthy client) and readinessScore is withheld unless every check ran; allChecksRan says which case you are in. Note: makes 4+ API calls internally.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.

[ConnectWise] Today's schedule entries, open assigned tickets, and time logged today for a specific member. Use for technician daily briefings or self-service dashboards. All three dimensions are walked to exhaustion (open tickets up to 50 pages of 200; today's schedule and time entries up to 10) and carry a coverage block, so a technician with more than 200 open tickets no longer sees exactly 200. Schedule entries are returned in dateStart order (the walk itself pages by id for determinism) and capped at 200 rows with a returnedCount. Note: makes 3+ API calls internally.

ParamTypeRequiredDefaultDescription
memberIdintegeryesThe ConnectWise member ID to build a dashboard for.

[ConnectWise] Analyze resolution patterns for closed tickets, identifying tickets with unusually long resolution times and board distribution. Walks every page of closed tickets in the window (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. The ">2x average" threshold is computed from the tickets analyzed, so on a truncated read both the average and the outlier list describe a sample rather than the window; avgResolutionHours is null when no analyzed ticket carries both timestamps, never 0. Note: does NOT detect individual reassignment events; it uses resolution time as a proxy for handoff complexity. Makes 1+ API calls internally.

ParamTypeRequiredDefaultDescription
daysintegerno30Number of days to look back (default 30).
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Tickets opened and closed in the last 7 days plus time logged, as a weekly operations snapshot for management review. All three dimensions are walked to exhaustion (up to 50 pages of 200 each) and carry a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. netChange is the difference between two walked totals, so it is only meaningful when neither side truncated; the response says so. A busy MSP opens well over 200 tickets a week, which is precisely when the previous single-page read reported 200 opened, 200 closed and a net change of exactly zero. Note: makes 3+ API calls internally.

Intelligence

ToolPlanAccessSummary
cw_after_hours_impact_reportProRead-onlyAnalyze time logged outside standard business hours (before 8 AM or after 6 PM, and weekends).
cw_company_360_viewProRead-onlyComprehensive 360-degree view of a company: company details, open tickets, agreements, contacts, and configurations in a single composite call.
cw_company_onboarding_checklistProRead-onlyEvaluate onboarding completeness for a company.
cw_company_risk_assessmentProRead-onlyChurn risk score (0-100) for a company based on 90-day ticket volume, stale open tickets, and agreement coverage.
cw_configuration_lifecycle_trackerProRead-onlyAssets approaching warranty expiry or with high ticket correlation.
cw_daily_operations_briefingProRead-onlyDaily operations summary: new tickets (last 24h), SLA warning tickets (open > 4 hours), stale tickets (no update in 7+ days), and the unassigned queue.
cw_escalation_risk_scorerProRead-onlyScore open tickets by escalation risk based on age, priority, assignment and staleness.
cw_knowledge_article_recommendationProRead-onlyGiven a ticket ID, find knowledge base articles with matching keywords.
cw_proactive_maintenance_alertsProRead-onlyConfigurations with recent tickets suggesting maintenance needs.
cw_recurring_issue_detectorProRead-onlyDetect recurring issues by grouping tickets by company and type.
cw_resource_skill_matcherProRead-onlyGiven a ticket, find SKILLS whose names match the ticket's type/subtype keywords.
cw_revenue_leakage_scanProRead-onlyIdentify potential revenue leakage: billable time entries not yet invoiced, and zero-hour entries that may indicate logging errors.
cw_schedule_gap_analysisProRead-onlyFind unscheduled time blocks for members by comparing schedule entries against a workday.
cw_similar_ticket_finderProRead-onlyFind tickets with similar summaries to a given ticket.
cw_sla_breach_alertsProRead-onlyIdentify open tickets at risk of SLA breach.
cw_ticket_triage_assistProRead-onlyTriage assistance for a ticket.
cw_time_prediction_modelProRead-onlyBased on similar past tickets (same type, same board), estimate time to resolve.

[ConnectWise] Analyze time logged outside standard business hours (before 8 AM or after 6 PM, and weekends). Returns after-hours time entries grouped by member and day of week. Use for overtime analysis and staffing decisions. Walks every page of entries in the window (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. After-hours entries are a small slice of a month's time, so a single-page read finds almost none of them; when truncated is true these totals are a lower bound. Timestamps are compared in UTC, so an instance whose technicians work in a distant timezone will shift the business-hours window. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
businessEndintegerno18Business hours end (default 18, meaning 6 PM).
businessStartintegerno8Business hours start (default 8, meaning 8 AM).
daysintegerno30Number of days to look back (default 30).

[ConnectWise] Comprehensive 360-degree view of a company: company details, open tickets, agreements, contacts, and configurations in a single composite call. Use for account reviews or before customer calls. Each dimension is walked to exhaustion (open tickets up to 50 pages of 200; agreements, contacts and configurations up to 10) and carries a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated -- so the COUNTS are complete. THE ROWS ARE A SAMPLE: each list is capped at 200 with a matching returnedCount, because emitting four full walks verbatim would exceed the platform result-size cap and fail the entire call. Use the per-domain list tools (cw_list_tickets, cw_list_contacts, cw_list_configurations, cw_list_agreements) to page through any dimension in full. Note: makes 5+ API calls internally.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.

[ConnectWise] Evaluate onboarding completeness for a company. Checks for contacts, configurations, an agreement in force, and site information, and returns a checklist with completion status. Contact, configuration and agreement counts come from ConnectWise's own count endpoints, so a company with 900 contacts reports 900 rather than the capped 200 an unpaginated list returned. The agreement check ignores agreements whose agreementStatus is Expired, Cancelled or Inactive -- a lapsed contract is not a contract in place. An item whose count could not be read reports complete:null (NOT false, which would read as an unmet requirement on a healthy client) and completionRate is withheld unless every check ran; allChecksRan says which case you are in. Note: makes 6 API calls internally.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.

[ConnectWise] Churn risk score (0-100) for a company based on 90-day ticket volume, stale open tickets, and agreement coverage. A higher score indicates greater churn risk. Returns the overall risk score with per-dimension breakdowns. Tickets and agreements are walked to exhaustion (tickets up to 50 pages of 200, agreements up to 10) and each dimension carries a coverage block: analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. A truncated ticket read UNDERSTATES volume risk, so the response says so instead of returning a complete-looking score. agreementCoverage counts only agreements in force -- an agreementStatus of Expired, Cancelled or Inactive does not count -- and countedAgreements/excludedAgreements list exactly which agreements drove the score. This tool does NOT score SLA compliance; use cw_sla_compliance_dashboard for that. Note: makes roughly 4 API calls plus one per page.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID.

[ConnectWise] Assets approaching warranty expiry or with high ticket correlation. Identifies configurations nearing end of warranty and those generating the most tickets in the last 180 days. Walks every page of configurations (up to 10 pages of 200) and of tickets in that window (up to 50), and reports a coverage block per dimension -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. A truncated configuration read means assets whose warranty is expiring were never examined at all, which is the failure this tool exists to prevent, so the response says so. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
warrantyWindowDaysintegerno90Days ahead to check for warranty expiry (default 90).

[ConnectWise] Daily operations summary: new tickets (last 24h), SLA warning tickets (open > 4 hours), stale tickets (no update in 7+ days), and the unassigned queue. EACH count COMES FROM ConnectWise's OWN COUNT ENDPOINT, so it is the true size of the bucket. The accompanying tickets array is a SAMPLE of at most 200 -- the newest for the new-ticket bucket, the oldest for the three backlog buckets, which is where attention belongs -- and returnedCount says how many are listed. Previously count was the array length, so any bucket over 200 reported exactly 200 and a queue of 900 unassigned tickets read as 200. Note: makes 8 API calls internally.

[ConnectWise] Score open tickets by escalation risk based on age, priority, assignment and staleness. Returns a ranked list of tickets most likely to escalate. Use for proactive service management. Walks every page of open tickets (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. A risk list that quietly stops at 200 open tickets hides exactly the ones it exists to surface, so when truncated is true the counts are a lower bound and the response says so. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
pageSizeintegerno200Records fetched per ConnectWise request (default 200, the ConnectWise maximum; clamped to 1-200). This is a PAGE size, NOT a cap on the analysis: the tool walks every page of the matching set either way. Lower it only to make each individual request smaller.

[ConnectWise] Given a ticket ID, find knowledge base articles with matching keywords. Fetches the ticket summary and searches KB articles for relevant matches. Use for suggesting solutions to technicians. Note: Makes 2 API calls internally.

ParamTypeRequiredDefaultDescription
ticketIdintegeryesThe numeric ConnectWise ticket ID to find KB articles for.

[ConnectWise] Configurations with recent tickets suggesting maintenance needs. Correlates configurations with recent tickets to identify assets generating repeated issues. Walks every page of configurations (up to 10 pages of 200) and of tickets in the window (up to 50), and reports a coverage block per dimension -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. Threshold counting is exactly what a truncated read breaks: an asset with 6 tickets can fall under a minTickets of 2 if only 1 of them lands in the analyzed slice, so absence of an alert is NOT evidence of a healthy asset when truncated is true. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
daysintegerno30Days to look back for ticket correlation (default 30).
minTicketsintegerno2Minimum tickets per config to flag (default 2).

[ConnectWise] Detect recurring issues by grouping tickets by company and type. Identifies patterns where the same issue type recurs for a company beyond a minimum occurrence threshold. Use to identify systemic problems that need permanent resolution. Walks every page of tickets in the window (up to 50 pages of 200) and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. Occurrence counting is exactly the thing a truncated read breaks: a pattern that recurs 8 times can fall under a minOccurrences of 3 if only 2 of its tickets land in the analyzed slice, so check truncated before concluding an issue is NOT recurring. Note: makes 1+ API calls internally (one per page, plus a count only when more than one page exists).

ParamTypeRequiredDefaultDescription
daysintegerno90Number of days to look back (default 90).
minOccurrencesintegerno3Minimum number of occurrences to flag as recurring (default 3).

[ConnectWise] Given a ticket, find SKILLS whose names match the ticket's type/subtype keywords. Walks every page of the instance's skill catalogue (up to 10 pages of 200) and reports how many were checked, so a matching skill past the first 200 is no longer silently missed. This does NOT resolve members: it returns skill names to feed into cw_list_member_skills. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
ticketIdintegeryesThe numeric ConnectWise ticket ID to match skills for.

[ConnectWise] Identify potential revenue leakage: billable time entries not yet invoiced, and zero-hour entries that may indicate logging errors. Returns uninvoiced billable entries grouped by company plus zero-value time entries. The uninvoiced dimension is walked to exhaustion (up to 50 pages of 200) because an under-reported leakage figure is the failure this tool exists to prevent; it carries a coverage block with the true total from ConnectWise's count endpoint. The zero-hour dimension reports its true count from the same endpoint and lists at most 200 example entries -- previously its count was the array length, so any instance with more than 200 zero-hour entries reported exactly 200. Note: makes 3+ API calls internally.

[ConnectWise] Find unscheduled time blocks for members by comparing schedule entries against a workday. Returns members with the most available (unscheduled) time. Walks every page of active members and of schedule entries in the horizon (up to 10 pages of 200 each) and reports a coverage block per dimension. A truncated SCHEDULE read is the dangerous direction here: unseen entries make a member look free, so the response says so rather than sending work to someone who is already booked. Note: makes 2+ API calls internally.

ParamTypeRequiredDefaultDescription
daysintegerno5Number of days ahead to analyze (default 5).
workHoursPerDayintegerno8Expected work hours per day (default 8).

[ConnectWise] Find tickets with similar summaries to a given ticket. Fetches the ticket, extracts keywords, and searches for matching closed tickets. Use for finding prior resolutions to similar issues. Note: Makes 2 API calls internally.

ParamTypeRequiredDefaultDescription
maxResultsintegerno10Maximum similar tickets to return (default 10).
ticketIdintegeryesThe numeric ConnectWise ticket ID to find similar tickets for.

[ConnectWise] Identify open tickets at risk of SLA breach. Compares open ticket age against SLA resolution targets and flags tickets that have exceeded or are approaching (>80%) their SLA window. The breached and atRisk COUNTS are over every ticket analyzed; each ticket LIST is capped at 200 rows with a returnedCount, so a large backlog cannot blow the platform result-size cap. Walks every page of open tickets (up to 50 pages of 200) and every SLA definition, and reports a coverage block -- analyzed, totalAvailable from ConnectWise's count endpoint, pagesFetched, truncated. An alert list that quietly stops at 200 open tickets hides exactly the breaches it exists to surface, so when truncated is true the counts are a lower bound and the response says so. Note: makes 2+ API calls internally.

[ConnectWise] Triage assistance for a ticket. Fetches the ticket details, finds similar resolved tickets (by summary keyword matching), and lists member skills to suggest an assignee. Returns the ticket, up to 5 similar resolved tickets, and available member skills. Note: Makes 3 API calls internally.

ParamTypeRequiredDefaultDescription
ticketIdintegeryesThe numeric ConnectWise ticket ID to triage.

[ConnectWise] Based on similar past tickets (same type, same board), estimate time to resolve. Samples the 50 most recently closed matching tickets and computes the average, median and range of their calendar hours from open to close. With no similar closed ticket, every prediction field is NULL and confidence is "Insufficient data" -- previously they were all 0, which reads as a prediction of instant resolution. Note: makes 2 API calls internally.

ParamTypeRequiredDefaultDescription
ticketIdintegeryesThe numeric ConnectWise ticket ID to predict time for.

Member Administration

ToolPlanAccessSummary
cw_update_memberProDestructiveDESTRUCTIVE: update a ConnectWise member (a live user of your PSA) with JSON Patch operations.

[ConnectWise] DESTRUCTIVE: update a ConnectWise member (a live user of your PSA) with JSON Patch operations. Returns the updated member. Why this is destructive: a member is a signed-in person, and this route changes their security role, license class, inactive flag (which locks them out), e-mail, default board, time approver and expense approver, all effective at once and with no undo from here. Read the member with cw_get_member first and patch only the fields you mean to change. Paths use ConnectWise field names, for example [{"op": "replace", "path": "/title", "value": "Service Lead"}] or [{"op": "replace", "path": "/securityRole", "value": {"id": 7}}]. Never send a password this way unless you mean to reset it.

ParamTypeRequiredDefaultDescription
memberIdintegeryesThe numeric ConnectWise member ID to update. Use cw_list_members or cw_search_members to find IDs.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/title", "value": "Service Lead"}].

Company Note Management

ToolPlanAccessSummary
cw_delete_company_noteProDestructivePermanently delete a company note.

[ConnectWise] Permanently delete a company note. This cannot be undone. Verify the note with cw_list_company_notes before deleting.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe ConnectWise company ID.
noteIdintegeryesThe note ID to delete. Verify with cw_list_company_notes before deleting.

Raw Requests

ToolPlanAccessSummary
cw_raw_getFreeWriteSend one GET to any ConnectWise PSA API path and return the response exactly as ConnectWise sent it.
cw_raw_requestProDestructiveDESTRUCTIVE: send one POST, PUT, PATCH or DELETE to any ConnectWise PSA API path and return the response exactly as ConnectWise sent it.

[ConnectWise] Send one GET to any ConnectWise PSA API path and return the response exactly as ConnectWise sent it. This is the escape hatch for anything the typed cw_ tools do not cover yet. It never bypasses a tool's own gate: your connector subscription, endpoint tool selection, plan and billing all still apply, and ConnectWise still authorizes on the API member's own security role, so this returns exactly what that member could read anyway. Prefer the typed tool when one exists: it names its filters as arguments and its description says what the answer means. The path is relative to the API root (https:///v4_6_release/apis/3.0/) and must start with company, configurations, expense, finance, marketing, procurement, project, sales, schedule, service, system or time, for example service/boards/12/statuses. It may carry its own query string, passed through untouched: conditions uses ConnectWise's own filter language (status/name='Open' and closedFlag=false), NOT OData; page and pageSize page it. The path check reads the whole string, query included: a '#', '..', '://' or backslash anywhere is refused. Percent-encode a '#' in a conditions value as %23 and the colon of a URL as %3A; a value containing '..' cannot be sent here, so use the typed tool's conditions argument for it. Two ConnectWise GETs act rather than read (system/authAnvils/testConnection and system/managementNetworkSecurities//testCredentials run a live connection test), which is why this tool is not marked read-only, and a raw read is never auto-retried on a server error. A route that answers a file (an invoice PDF, an image, a document download) is refused before the file is read: use cw_get_invoice_pdf or cw_download_document, which return a download link. A JSON answer larger than 16 MB is refused too; narrow it with pageSize, conditions or a fields list.

ParamTypeRequiredDefaultDescription
pathstringyesThe path relative to the API root, for example service/tickets/123/notes or company/companies?conditions=identifier='ACME'. No scheme, no host, no '..'.

[ConnectWise] DESTRUCTIVE: send one POST, PUT, PATCH or DELETE to any ConnectWise PSA API path and return the response exactly as ConnectWise sent it. Why this is destructive: the blast radius is whatever path you name. A DELETE removes the record with no recycle bin, a PUT replaces every field you leave out, a ticket or note write can e-mail a customer, a time, expense, invoice or agreement write changes what someone is billed or paid, and a member write changes who can sign in. None of that is recoverable from here. It never bypasses a tool's own gate: subscription, endpoint tool selection, plan, billing and the agent consent gate all still apply, and ConnectWise still authorizes on the API member's own security role. Prefer the typed tool when one exists. The path is relative to the API root and must start with company, configurations, expense, finance, marketing, procurement, project, sales, schedule, service, system or time. Updates are PATCH with a JSON Patch array, for example [{"op":"replace","path":"/summary","value":"New summary"}]; POST and PUT take the resource object; a few bulk DELETEs take a body such as {"ids":[1,2]}. GET is refused: use cw_raw_get. A success with no body arrives as {"success":true}, which means accepted, not confirmed: re-read the object to see the result.

ParamTypeRequiredDefaultDescription
bodystringnonullOptional. The request body as JSON, or omit for none. Sent to ConnectWise untouched.
methodstringyesThe HTTP verb: POST, PUT, PATCH or DELETE. GET is refused; use cw_raw_get.
pathstringyesThe path relative to the API root, for example service/tickets/123. No scheme, no host, no '..'.

Ticket Finance & All Notes

ToolPlanAccessSummary
cw_count_ticket_all_notesFreeRead-onlyCount every note on a service ticket, of every kind cw_list_ticket_all_notes returns.
cw_get_ticket_financeFreeRead-onlyGet the billing view of a service ticket (ConnectWise's TicketFinance): billing method, hourly rate, work role and type, whether time, expenses and products bill, estimated revenue and cost, bill-to…
cw_list_ticket_all_notesFreeRead-onlyList every note on a service ticket in one stream (ConnectWise's TicketAllNote), time-entry notes included: each row carries its noteType, its description, internal-analysis and resolution flags, and…

[ConnectWise] Count every note on a service ticket, of every kind cw_list_ticket_all_notes returns. Returns ConnectWise's own {"count":N}. Requires a valid ticket ID.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
ticketIdintegeryesThe numeric ConnectWise service ticket ID.

[ConnectWise] Get the billing view of a service ticket (ConnectWise's TicketFinance): billing method, hourly rate, work role and type, whether time, expenses and products bill, estimated revenue and cost, bill-to company, contact and site, billing terms, tax code, currency, and the four 2026.11 bill flags (billTicketSeparately, billTicketOnlyAfterClosed, billUnapprovedTimeAndExpenses, restrictDownPayment). Use it before invoicing a ticket or when time is not billing as expected. Requires a valid ticket ID -- use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
ticketIdintegeryesThe numeric ConnectWise service ticket ID.

[ConnectWise] List every note on a service ticket in one stream (ConnectWise's TicketAllNote), time-entry notes included: each row carries its noteType, its description, internal-analysis and resolution flags, and timeStart and timeEnd when it came from time. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow. Requires a valid ticket ID -- use cw_list_tickets to find IDs.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ticketIdintegeryesThe numeric ConnectWise service ticket ID.

Ticket Bundles

ToolPlanAccessSummary
cw_attach_child_ticketsProDestructiveDESTRUCTIVE: attach tickets as children of a parent service ticket (a ticket bundle).
cw_detach_child_ticketsProDestructiveDESTRUCTIVE: detach child tickets from a parent service ticket (new in 2026.11).

[ConnectWise] DESTRUCTIVE: attach tickets as children of a parent service ticket (a ticket bundle). Why this is destructive: it changes how the tickets relate, and a bundle's children are handled together with their parent in ConnectWise. Check the tickets with cw_get_ticket first. Undo with cw_detach_child_tickets.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object naming the child tickets. Example: {"childTicketIds": [1234, 1235]}.
ticketIdintegeryesThe numeric ConnectWise ticket ID of the PARENT ticket.

[ConnectWise] DESTRUCTIVE: detach child tickets from a parent service ticket (new in 2026.11). Why this is destructive: the detached tickets leave the bundle and are no longer handled together with the parent. Check the bundle first. Undo with cw_attach_child_tickets.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object naming the child tickets to detach. Example: {"childTicketIds": [1234]}.
ticketIdintegeryesThe numeric ConnectWise ticket ID of the PARENT ticket.

Ticket Contact Authentication

ToolPlanAccessSummary
cw_count_ticket_contact_authenticationsFreeRead-onlyCount caller-verification records across service tickets.
cw_get_ticket_contact_authenticationFreeRead-onlyGet the caller-verification record for one service ticket: the contact authenticated, who authenticated them and when.
cw_list_ticket_contact_authenticationsFreeRead-onlyList caller-verification records across service tickets (new in 2026.11): which contact was authenticated on which ticket, by whom and when.

[ConnectWise] Count caller-verification records across service tickets. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Get the caller-verification record for one service ticket: the contact authenticated, who authenticated them and when. The 2026.11 spec names this path parameter TicketId.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
ticketIdintegeryesThe numeric ConnectWise service ticket ID.

[ConnectWise] List caller-verification records across service tickets (new in 2026.11): which contact was authenticated on which ticket, by whom and when. Use it to check whether a caller was verified before acting on a request. Filter by ticket with conditions, e.g. serviceRecId=1234. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

Project Ticket Finance & Notes

ToolPlanAccessSummary
cw_count_all_project_ticket_notesFreeRead-onlyCount notes across all project tickets (new in 2026.11).
cw_count_project_ticket_all_notesFreeRead-onlyCount every note on a project ticket (new in 2026.11).
cw_get_project_ticket_financeFreeRead-onlyGet the billing view of a project ticket (new in 2026.11, ConnectWise's ProjectTicketFinance): billing method, hourly rate, work role and type, whether time, expenses and products bill, and the…
cw_list_all_project_ticket_notesFreeRead-onlyList notes across ALL project tickets at once (new in 2026.11), rather than one ticket at a time.
cw_list_project_ticket_all_notesFreeRead-onlyList every note on a project ticket in one stream (ConnectWise's TicketAllNote), time-entry notes included: each row carries its noteType and its description, internal-analysis and resolution flags.

[ConnectWise] Count notes across all project tickets (new in 2026.11). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count every note on a project ticket (new in 2026.11). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
ticketIdintegeryesThe numeric ConnectWise project ticket ID.

[ConnectWise] Get the billing view of a project ticket (new in 2026.11, ConnectWise's ProjectTicketFinance): billing method, hourly rate, work role and type, whether time, expenses and products bill, and the subcontractor fields. Requires a valid project ticket ID -- use cw_list_project_tickets to find IDs.

ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
ticketIdintegeryesThe numeric ConnectWise project ticket ID.

[ConnectWise] List notes across ALL project tickets at once (new in 2026.11), rather than one ticket at a time. Narrow with conditions, e.g. ticketId=1234 or dateCreated>[2026-09-01T00:00:00Z]. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List every note on a project ticket in one stream (ConnectWise's TicketAllNote), time-entry notes included: each row carries its noteType and its description, internal-analysis and resolution flags. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ticketIdintegeryesThe numeric ConnectWise project ticket ID.

Service Template Resources

ToolPlanAccessSummary
cw_count_service_template_resourcesFreeRead-onlyCount the resources on a service template.
cw_create_service_template_resourceProWriteAdd a resource (a member to schedule, with hours, times, reminder and recurrence) to a service template.
cw_get_service_template_resourceFreeRead-onlyGet one resource on a service template by ID.
cw_list_service_template_resourcesFreeRead-onlyList the resources (scheduled members) on a service template (new in 2026.11): member, start and end, hours, schedule status, reminder settings and recurrence.
cw_replace_service_template_resourceProDestructiveDESTRUCTIVE: replace a resource on a service template wholesale (PUT).
cw_update_service_template_resourceProWriteUpdate a resource on a service template using JSON Patch operations.

[ConnectWise] Count the resources on a service template. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
templateIdintegeryesThe numeric ConnectWise service template ID. Use cw_list_service_templates to find IDs.

[ConnectWise] Add a resource (a member to schedule, with hours, times, reminder and recurrence) to a service template. The spec has no DELETE for template resources, so plan before adding one.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the resource. Example: {"member": {"id": 12}, "hours": 1.5, "isTicketOwner": false, "reminderFlag": true, "reminderMinutes": 15}.
templateIdintegeryesThe numeric ConnectWise service template ID. Use cw_list_service_templates to find IDs.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
resourceIdintegeryesThe numeric resource ID on that template. Use cw_list_service_template_resources to find IDs.
templateIdintegeryesThe numeric ConnectWise service template ID. Use cw_list_service_templates to find IDs.

[ConnectWise] List the resources (scheduled members) on a service template (new in 2026.11): member, start and end, hours, schedule status, reminder settings and recurrence. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
templateIdintegeryesThe numeric ConnectWise service template ID. Use cw_list_service_templates to find IDs.

[ConnectWise] DESTRUCTIVE: replace a resource on a service template wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read it with cw_get_service_template_resource and send the whole object back; use cw_update_service_template_resource to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesThe complete resource object as JSON.
resourceIdintegeryesThe numeric resource ID on that template. Use cw_list_service_template_resources to find IDs.
templateIdintegeryesThe numeric ConnectWise service template ID. Use cw_list_service_templates to find IDs.

[ConnectWise] Update a resource on a service template using JSON Patch operations. Returns the updated resource.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/hours", "value": 2}].
resourceIdintegeryesThe numeric resource ID on that template. Use cw_list_service_template_resources to find IDs.
templateIdintegeryesThe numeric ConnectWise service template ID. Use cw_list_service_templates to find IDs.

Setup Usages

ToolPlanAccessSummary
cw_get_configuration_type_question_usagesFreeRead-onlyShow where a configuration type question is used (new in 2026.11): the records that reference it, by type and count.
cw_get_rma_action_usagesFreeRead-onlyShow where an RMA action is used (new in 2026.11), by record type and count.
cw_get_rma_disposition_usagesFreeRead-onlyShow where an RMA disposition is used (new in 2026.11), by record type and count.
cw_list_configuration_type_question_usagesFreeRead-onlyList the individual records that use a configuration type question (new in 2026.11).
cw_list_rma_action_usagesFreeRead-onlyList the individual records that use an RMA action (new in 2026.11).
cw_list_rma_disposition_usagesFreeRead-onlyList the individual records that use an RMA disposition (new in 2026.11).

[ConnectWise] Show where a configuration type question is used (new in 2026.11): the records that reference it, by type and count. Check this before deleting or renaming a question.

ParamTypeRequiredDefaultDescription
questionIdintegeryesThe numeric question ID. Use cw_discover_configuration_type_questions to find IDs.
typeIdintegeryesThe numeric configuration type ID. Use cw_discover_configuration_types to find IDs.

[ConnectWise] Show where an RMA action is used (new in 2026.11), by record type and count. Check this before deleting an action.

ParamTypeRequiredDefaultDescription
actionIdintegeryesThe numeric RMA action ID. Use cw_list_rma_actions to find IDs.

[ConnectWise] Show where an RMA disposition is used (new in 2026.11), by record type and count. Check this before deleting a disposition.

ParamTypeRequiredDefaultDescription
dispositionIdintegeryesThe numeric RMA disposition ID. Use cw_list_rma_dispositions to find IDs.

[ConnectWise] List the individual records that use a configuration type question (new in 2026.11). PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
questionIdintegeryesThe numeric question ID.
typeIdintegeryesThe numeric configuration type ID.

[ConnectWise] List the individual records that use an RMA action (new in 2026.11). PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
actionIdintegeryesThe numeric RMA action ID.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the individual records that use an RMA disposition (new in 2026.11). PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
dispositionIdintegeryesThe numeric RMA disposition ID.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

Schedule Reminder Times

ToolPlanAccessSummary
cw_count_schedule_reminder_times_infoFreeRead-onlyCount the schedule reminder times.
cw_get_schedule_reminder_time_infoFreeRead-onlyGet one schedule reminder time by ID.
cw_list_schedule_reminder_times_infoFreeRead-onlyList the schedule reminder times (new in 2026.11): the reminder times a schedule entry can use, with their names and which is the default.

[ConnectWise] Count the schedule reminder times. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
reminderTimeIdintegeryesThe numeric reminder time ID. Use cw_list_schedule_reminder_times_info to find IDs.

[ConnectWise] List the schedule reminder times (new in 2026.11): the reminder times a schedule entry can use, with their names and which is the default. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

Finance Documents

ToolPlanAccessSummary
cw_create_standard_invoiceProDestructiveDESTRUCTIVE: create a standard invoice from a sales order or a service ticket (new in 2026.11).
cw_download_company_statement_pdfProRead-onlyDownload a company's account statement as a PDF (new in 2026.11).

[ConnectWise] DESTRUCTIVE: create a standard invoice from a sales order or a service ticket (new in 2026.11). Why this is destructive: it raises a real invoice against the customer. Review the ticket with cw_get_ticket_finance first. Send salesOrderRecId for a sales order or ticketRecId for a ticket.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object. Example: {"ticketRecId": 1234, "invoiceShippedOnly": false, "invoiceDate": "2026-10-01T00:00:00Z"} or {"salesOrderRecId": 55, "invoiceShippedOnly": true, "invoiceDate": "2026-10-01T00:00:00Z"}.

[ConnectWise] Download a company's account statement as a PDF (new in 2026.11). You get a time-limited download link plus the content type, file name and size, not the bytes themselves. The envelope keys are sasUrl, contentType, suggestedFileName, sizeBytes and expiresAt, and the link is valid for 15 minutes. ConnectWise renders the statement through its Reporting Services: a 502 means the report server did not return a PDF, not that the company or your credential is wrong.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID the statement is addressed to (its "To" address). Use cw_list_companies to find IDs.
ownerLevelIdintegernonullOptional owner level (location) id. Omit it and ConnectWise resolves it from the company and its open receivables.

Expense Report Attachments

ToolPlanAccessSummary
cw_list_expense_report_attachmentsFreeRead-onlyList the receipts attached to an expense report for one member (new in 2026.11): expense type, date, amount and a fileURL per receipt.

[ConnectWise] List the receipts attached to an expense report for one member (new in 2026.11): expense type, date, amount and a fileURL per receipt. The file itself is at fileURL; this returns metadata and links, not bytes. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
memberIdintegeryesThe numeric ConnectWise member ID whose receipts to list.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
reportIdintegeryesThe numeric expense report ID. Use cw_list_expense_reports to find IDs.

Standard Reports

ToolPlanAccessSummary
cw_get_report_header_company_nameFreeRead-onlyGet the company name ConnectWise prints on report headers (new in 2026.11).
cw_run_standard_reportFreeRead-onlyRun a ConnectWise standard report by its numeric ID and return its columns and rows (new in 2026.11).
cw_run_standard_report_by_linkFreeRead-onlyRun a ConnectWise standard report by its report LINK name and return its columns and rows (new in 2026.11).

[ConnectWise] Run a ConnectWise standard report by its numeric ID and return its columns and rows (new in 2026.11). A POST that only reads. Report parameters go in parametersJson as string values; the report's own definition says which it takes. A large report may exceed the result cap. Use cw_run_standard_report_by_link when you have the report link instead of the ID.

ParamTypeRequiredDefaultDescription
parametersJsonstringnonullOptional JSON object of report parameters, every value a string. Example: {"dateStart": "2026-09-01", "dateEnd": "2026-09-30"}. Omit it for none.
reportIdintegeryesThe numeric standard report ID.

Custom Field Infos

ToolPlanAccessSummary
cw_bulk_delete_custom_field_infosProDestructiveDESTRUCTIVE: delete several custom field definitions in one call (new in 2026.11).
cw_delete_custom_field_infoProDestructiveDESTRUCTIVE: delete a custom field definition (new in 2026.11).
cw_list_custom_field_infosFreeRead-onlyList the custom field definitions (customFieldInfos): each field's caption, type, entry method, screen and pod.

[ConnectWise] DESTRUCTIVE: delete several custom field definitions in one call (new in 2026.11). Why this is destructive: each field is removed from ConnectWise, and the API documents no way to restore them. ConnectWise answers a per-id result (207 Multi-Status), returned as it came, so check it for ids that did not delete.

ParamTypeRequiredDefaultDescription
idsJsonstringyesJSON object listing the ids. Example: {"ids": [101, 102]}.

[ConnectWise] DESTRUCTIVE: delete a custom field definition (new in 2026.11). Why this is destructive: the field is removed from ConnectWise, and the API documents no way to restore it. Check it with cw_list_custom_field_infos first.

ParamTypeRequiredDefaultDescription
customFieldInfoIdintegeryesThe numeric custom field definition ID.

[ConnectWise] List the custom field definitions (customFieldInfos): each field's caption, type, entry method, screen and pod. Use it to find a field id or caption before filtering with customFieldConditions. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

User-Defined Field Screens

ToolPlanAccessSummary
cw_list_user_defined_field_screen_podsFreeRead-onlyList the screen pods a user-defined (custom) field can be placed on (new in 2026.11).
cw_list_user_defined_field_screensFreeRead-onlyList the screens a user-defined (custom) field can be placed on (new in 2026.11).

[ConnectWise] List the screen pods a user-defined (custom) field can be placed on (new in 2026.11). PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the screens a user-defined (custom) field can be placed on (new in 2026.11). PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

My Recent Items

ToolPlanAccessSummary
cw_list_my_recent_itemsFreeRead-onlyList the recent items of the logged-in member (new in 2026.11).
cw_upsert_my_recent_itemProWriteAdd or refresh an entry on the logged-in member's recent-items list (new in 2026.11).

[ConnectWise] List the recent items of the logged-in member (new in 2026.11). Over the API the logged-in member is the integration's API member, not a person. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] Add or refresh an entry on the logged-in member's recent-items list (new in 2026.11). Over the API that member is the integration's API member. ConnectWise keeps at most 30 per item type and trims the oldest. recId must be the target record's id and greater than zero.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object for the item. Example: {"itemType": "Ticket", "recId": 1234, "description": "Printer offline"}.

Workflow Trigger Catalog

ToolPlanAccessSummary
cw_list_workflow_table_type_trigger_optionsFreeRead-onlyList the value options for one workflow trigger of a table type (new in 2026.11), the choices the workflow editor offers for that trigger.
cw_list_workflow_table_type_triggersFreeRead-onlyList the triggers a workflow can use for one table type (new in 2026.11), the catalog the workflow editor shows.
cw_test_workflow_draftFreeRead-onlyTest a workflow definition without saving it (new in 2026.11): ConnectWise evaluates the draft's conditions and returns the rows that would match, with a total count.

[ConnectWise] List the value options for one workflow trigger of a table type (new in 2026.11), the choices the workflow editor offers for that trigger. As with the trigger catalog, page and pageSize are omitted unless you pass them.

ParamTypeRequiredDefaultDescription
boardIdintegernonullOptional board id, with the same meaning as srBoardRecId on the trigger catalog.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
customFieldIdintegernonullOptional. Limits the options to the catalog row for that custom field.
departmentIdintegernonullOptional billing unit (department) id.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
locationIdintegernonullOptional owner level (location) id.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegernonullOptional page number. Omit it with pageSize to receive the whole catalog in one answer.
pageSizeintegernonullOptional page size (max 200). Omit it to receive the whole catalog: ConnectWise answers the full list only when no page size is sent.
tableTypeIdintegeryesThe numeric workflow table type ID.
triggerIdintegeryesThe numeric trigger ID from cw_list_workflow_table_type_triggers.

[ConnectWise] List the triggers a workflow can use for one table type (new in 2026.11), the catalog the workflow editor shows. ConnectWise answers the WHOLE catalog only when no page size is sent, so page and pageSize are omitted unless you pass them. Refine with srBoardRecId, ownerLevelRecId and billingUnitRecId.

ParamTypeRequiredDefaultDescription
billingUnitRecIdintegernonullOptional billing unit (department) id for custom-field trigger rows.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
ownerLevelRecIdintegernonullOptional owner level (location) id for custom-field trigger rows.
pageintegernonullOptional page number. Omit it with pageSize to receive the whole catalog in one answer.
pageSizeintegernonullOptional page size (max 200). Omit it to receive the whole catalog: ConnectWise answers the full list only when no page size is sent.
srBoardRecIdintegernonullOptional. 0 for no board, or a board id to refine ticket-style triggers. Omit it to union the board-specific trigger families.
tableTypeIdintegeryesThe numeric workflow table type ID.

[ConnectWise] Test a workflow definition without saving it (new in 2026.11): ConnectWise evaluates the draft's conditions and returns the rows that would match, with a total count. A POST that is documented to answer matches only; that it runs none of the workflow's actions is read from the schema, not yet observed live.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object with the draft workflow, the event to test and options. Example: {"workflow": , "event": , "testOptions": {"maxResults": 25}}.

Knowledge Base Setup

ToolPlanAccessSummary
cw_count_knowledge_base_categoriesFreeRead-onlyCount knowledge base categories.
cw_count_knowledge_base_sub_categoriesFreeRead-onlyCount knowledge base sub categories.
cw_create_kb_categoryProWriteCreate a knowledge base category.
cw_create_kb_subcategoryProWriteCreate a knowledge base subcategory.
cw_delete_kb_articleProDestructiveDESTRUCTIVE: permanently delete a knowledge base article.
cw_delete_kb_categoryProDestructiveDESTRUCTIVE: permanently delete a knowledge base category.
cw_delete_kb_subcategoryProDestructiveDESTRUCTIVE: permanently delete a knowledge base subcategory.
cw_get_kb_categoryFreeRead-onlyGet one knowledge base category by ID.
cw_get_kb_subcategoryFreeRead-onlyGet one knowledge base subcategory by ID.
cw_get_kb_subcategory_usagesFreeRead-onlyShow where a knowledge base subcategory is used: the record types that reference it and how many of each.
cw_list_kb_subcategory_usagesFreeRead-onlyList the individual records that use a knowledge base subcategory.
cw_replace_kb_articleProDestructiveDESTRUCTIVE: replace a knowledge base article wholesale (PUT).
cw_replace_kb_categoryProDestructiveDESTRUCTIVE: replace a knowledge base category wholesale (PUT).
cw_replace_kb_subcategoryProDestructiveDESTRUCTIVE: replace a knowledge base subcategory wholesale (PUT).
cw_update_kb_categoryProWriteUpdate a knowledge base category with JSON Patch operations.
cw_update_kb_subcategoryProWriteUpdate a knowledge base subcategory with JSON Patch operations.

[ConnectWise] Count knowledge base categories. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count knowledge base sub categories. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a knowledge base category. Returns the created record with its ID. The body is ConnectWise's KnowledgeBaseCategory object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's KnowledgeBaseCategory. Read an existing record to see its shape.

[ConnectWise] Create a knowledge base subcategory. Returns the created record with its ID. The body is ConnectWise's KnowledgeBaseSubCategory object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's KnowledgeBaseSubCategory. Read an existing record to see its shape.

[ConnectWise] DESTRUCTIVE: permanently delete a knowledge base article. This cannot be undone.

ParamTypeRequiredDefaultDescription
knowledgeBaseArticleIdintegeryesThe numeric ID of the knowledge base article.

[ConnectWise] DESTRUCTIVE: permanently delete a knowledge base category. This cannot be undone.

ParamTypeRequiredDefaultDescription
knowledgeBaseCategoryIdintegeryesThe numeric ID of the knowledge base category.

[ConnectWise] DESTRUCTIVE: permanently delete a knowledge base subcategory. This cannot be undone. Check where it is used with cw_get_kb_subcategory_usages first.

ParamTypeRequiredDefaultDescription
knowledgeBaseSubCategoryIdintegeryesThe numeric ID of the knowledge base subcategory.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
knowledgeBaseCategoryIdintegeryesThe numeric ID of the knowledge base category.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
knowledgeBaseSubCategoryIdintegeryesThe numeric ID of the knowledge base subcategory.

[ConnectWise] Show where a knowledge base subcategory is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
knowledgeBaseSubCategoryIdintegeryesThe numeric ID of the knowledge base subcategory.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the individual records that use a knowledge base subcategory. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
knowledgeBaseSubCategoryIdintegeryesThe numeric ID of the knowledge base subcategory.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] DESTRUCTIVE: replace a knowledge base article wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's KnowledgeBaseArticle. Read an existing record to see its shape.
knowledgeBaseArticleIdintegeryesThe numeric ID of the knowledge base article.

[ConnectWise] DESTRUCTIVE: replace a knowledge base category wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_kb_category to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's KnowledgeBaseCategory. Read an existing record to see its shape.
knowledgeBaseCategoryIdintegeryesThe numeric ID of the knowledge base category.

[ConnectWise] DESTRUCTIVE: replace a knowledge base subcategory wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_kb_subcategory to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's KnowledgeBaseSubCategory. Read an existing record to see its shape.
knowledgeBaseSubCategoryIdintegeryesThe numeric ID of the knowledge base subcategory.

[ConnectWise] Update a knowledge base category with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
knowledgeBaseCategoryIdintegeryesThe numeric ID of the knowledge base category.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].

[ConnectWise] Update a knowledge base subcategory with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
knowledgeBaseSubCategoryIdintegeryesThe numeric ID of the knowledge base subcategory.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].

SLAs & Priorities

ToolPlanAccessSummary
cw_count_prioritiesFreeRead-onlyCount priorities.
cw_count_sla_prioritiesFreeRead-onlyCount SLA priorities on an SLA.
cw_count_slasFreeRead-onlyCount SLAs.
cw_count_slas_infoFreeRead-onlyCount SLAs (the info shape).
cw_create_priorityProWriteCreate a priority.
cw_create_slaProWriteCreate an SLA.
cw_create_sla_priorityProWriteCreate an SLA priority on an SLA.
cw_delete_priorityProDestructiveDESTRUCTIVE: permanently delete a priority.
cw_delete_slaProDestructiveDESTRUCTIVE: permanently delete an SLA.
cw_delete_sla_priorityProDestructiveDESTRUCTIVE: permanently delete an SLA priority on an SLA.
cw_get_priority_usagesFreeRead-onlyShow where a priority is used: the record types that reference it and how many of each.
cw_get_sla_infoFreeRead-onlyGet one SLA in ConnectWise's lightweight info shape: ids, names and flags.
cw_get_sla_priorityFreeRead-onlyGet one SLA priority on an SLA by ID.
cw_get_sla_usagesFreeRead-onlyShow where an SLA is used: the record types that reference it and how many of each.
cw_list_priority_usagesFreeRead-onlyList the individual records that use a priority.
cw_list_sla_usagesFreeRead-onlyList the individual records that use an SLA.
cw_list_slas_infoFreeRead-onlyList SLAs in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records.
cw_replace_priorityProDestructiveDESTRUCTIVE: replace a priority wholesale (PUT).
cw_replace_slaProDestructiveDESTRUCTIVE: replace an SLA wholesale (PUT).
cw_replace_sla_priorityProDestructiveDESTRUCTIVE: replace an SLA priority on an SLA wholesale (PUT).
cw_update_priorityProWriteUpdate a priority with JSON Patch operations.
cw_update_slaProWriteUpdate an SLA with JSON Patch operations.
cw_update_sla_priorityProWriteUpdate an SLA priority on an SLA with JSON Patch operations.

[ConnectWise] Count priorities. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count SLA priorities on an SLA. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
slaIdintegeryesThe numeric ConnectWise SLA ID. Use cw_discover_slas to find IDs.

[ConnectWise] Count SLAs. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count SLAs (the info shape). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a priority. Returns the created record with its ID. The body is ConnectWise's Priority object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's Priority. Read an existing record to see its shape.

[ConnectWise] Create an SLA. Returns the created record with its ID. The body is ConnectWise's SLA object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's SLA. Read an existing record to see its shape.

[ConnectWise] Create an SLA priority on an SLA. Returns the created record with its ID. The body is ConnectWise's SLAPriority object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's SLAPriority. Read an existing record to see its shape.
slaIdintegeryesThe numeric ConnectWise SLA ID. Use cw_discover_slas to find IDs.

[ConnectWise] DESTRUCTIVE: permanently delete a priority. This cannot be undone. Check where it is used with cw_get_priority_usages first.

ParamTypeRequiredDefaultDescription
priorityIdintegeryesThe numeric ID of the priority.

[ConnectWise] DESTRUCTIVE: permanently delete an SLA. This cannot be undone. Check where it is used with cw_get_sla_usages first.

ParamTypeRequiredDefaultDescription
slaIdintegeryesThe numeric ID of the SLA.

[ConnectWise] DESTRUCTIVE: permanently delete an SLA priority on an SLA. This cannot be undone.

ParamTypeRequiredDefaultDescription
priorityIdintegeryesThe numeric ID of the SLA priority.
slaIdintegeryesThe numeric ConnectWise SLA ID. Use cw_discover_slas to find IDs.

[ConnectWise] Show where a priority is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
priorityIdintegeryesThe numeric ID of the priority.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
slaIdintegeryesThe numeric ID of the SLA.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
priorityIdintegeryesThe numeric ID of the SLA priority.
slaIdintegeryesThe numeric ConnectWise SLA ID. Use cw_discover_slas to find IDs.

[ConnectWise] Show where an SLA is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
slaIdintegeryesThe numeric ID of the SLA.

[ConnectWise] List the individual records that use a priority. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
priorityIdintegeryesThe numeric ID of the priority.

[ConnectWise] List the individual records that use an SLA. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
slaIdintegeryesThe numeric ID of the SLA.

[ConnectWise] List SLAs in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] DESTRUCTIVE: replace a priority wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_priority to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's Priority. Read an existing record to see its shape.
priorityIdintegeryesThe numeric ID of the priority.

[ConnectWise] DESTRUCTIVE: replace an SLA wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_sla to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's SLA. Read an existing record to see its shape.
slaIdintegeryesThe numeric ID of the SLA.

[ConnectWise] DESTRUCTIVE: replace an SLA priority on an SLA wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_sla_priority to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's SLAPriority. Read an existing record to see its shape.
priorityIdintegeryesThe numeric ID of the SLA priority.
slaIdintegeryesThe numeric ConnectWise SLA ID. Use cw_discover_slas to find IDs.

[ConnectWise] Update a priority with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
priorityIdintegeryesThe numeric ID of the priority.

[ConnectWise] Update an SLA with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
slaIdintegeryesThe numeric ID of the SLA.

[ConnectWise] Update an SLA priority on an SLA with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
priorityIdintegeryesThe numeric ID of the SLA priority.
slaIdintegeryesThe numeric ConnectWise SLA ID. Use cw_discover_slas to find IDs.

Service Board Setup

ToolPlanAccessSummary
cw_count_board_itemsFreeRead-onlyCount board items on a service board.
cw_count_board_statusesFreeRead-onlyCount board statuses on a service board.
cw_count_board_statuses_infoFreeRead-onlyCount board statuses on a service board (the info shape).
cw_count_board_subtypesFreeRead-onlyCount board subtypes on a service board.
cw_count_board_subtypes_infoFreeRead-onlyCount board subtypes on a service board (the info shape).
cw_count_board_typesFreeRead-onlyCount board types on a service board.
cw_count_boardsFreeRead-onlyCount boards.
cw_count_service_board_teamsFreeRead-onlyCount service board teams on a service board.
cw_count_service_board_teams_infoFreeRead-onlyCount service board teams on a service board (the info shape).
cw_create_boardProWriteCreate a board.
cw_create_board_itemProWriteCreate a board item on a service board.
cw_create_board_statusProWriteCreate a board status on a service board.
cw_create_board_subtypeProWriteCreate a board subtype on a service board.
cw_create_board_typeProWriteCreate a board type on a service board.
cw_create_service_board_teamProWriteCreate a service board team on a service board.
cw_delete_boardProDestructiveDESTRUCTIVE: permanently delete a board.
cw_delete_board_itemProDestructiveDESTRUCTIVE: permanently delete a board item on a service board.
cw_delete_board_statusProDestructiveDESTRUCTIVE: permanently delete a board status on a service board.
cw_delete_board_subtypeProDestructiveDESTRUCTIVE: permanently delete a board subtype on a service board.
cw_delete_board_typeProDestructiveDESTRUCTIVE: permanently delete a board type on a service board.
cw_delete_service_board_teamProDestructiveDESTRUCTIVE: permanently delete a service board team on a service board.
cw_get_board_itemFreeRead-onlyGet one board item on a service board by ID.
cw_get_board_item_usagesFreeRead-onlyShow where a board item is used: the record types that reference it and how many of each.
cw_get_board_statusFreeRead-onlyGet one board status on a service board by ID.
cw_get_board_status_infoFreeRead-onlyGet one board status on a service board in ConnectWise's lightweight info shape: ids, names and flags.
cw_get_board_status_usagesFreeRead-onlyShow where a board status is used: the record types that reference it and how many of each.
cw_get_board_subtypeFreeRead-onlyGet one board subtype on a service board by ID.
cw_get_board_subtype_infoFreeRead-onlyGet one board subtype on a service board in ConnectWise's lightweight info shape: ids, names and flags.
cw_get_board_subtype_usagesFreeRead-onlyShow where a board subtype is used: the record types that reference it and how many of each.
cw_get_board_typeFreeRead-onlyGet one board type on a service board by ID.
cw_get_board_type_usagesFreeRead-onlyShow where a board type is used: the record types that reference it and how many of each.
cw_get_board_usagesFreeRead-onlyShow where a board is used: the record types that reference it and how many of each.
cw_get_service_board_teamFreeRead-onlyGet one service board team on a service board by ID.
cw_get_service_board_team_infoFreeRead-onlyGet one service board team on a service board in ConnectWise's lightweight info shape: ids, names and flags.
cw_list_board_item_usagesFreeRead-onlyList the individual records that use a board item.
cw_list_board_status_usagesFreeRead-onlyList the individual records that use a board status.
cw_list_board_statuses_infoFreeRead-onlyList board statuses on a service board in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records.
cw_list_board_subtype_usagesFreeRead-onlyList the individual records that use a board subtype.
cw_list_board_subtypes_infoFreeRead-onlyList board subtypes on a service board in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records.
cw_list_board_type_usagesFreeRead-onlyList the individual records that use a board type.
cw_list_board_usagesFreeRead-onlyList the individual records that use a board.
cw_list_service_board_team_usagesFreeRead-onlyList the individual records that use a service board team.
cw_list_service_board_teams_infoFreeRead-onlyList service board teams on a service board in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records.
cw_replace_boardProDestructiveDESTRUCTIVE: replace a board wholesale (PUT).
cw_replace_board_itemProDestructiveDESTRUCTIVE: replace a board item on a service board wholesale (PUT).
cw_replace_board_statusProDestructiveDESTRUCTIVE: replace a board status on a service board wholesale (PUT).
cw_replace_board_subtypeProDestructiveDESTRUCTIVE: replace a board subtype on a service board wholesale (PUT).
cw_replace_board_typeProDestructiveDESTRUCTIVE: replace a board type on a service board wholesale (PUT).
cw_replace_service_board_teamProDestructiveDESTRUCTIVE: replace a service board team on a service board wholesale (PUT).
cw_update_boardProWriteUpdate a board with JSON Patch operations.
cw_update_board_itemProWriteUpdate a board item on a service board with JSON Patch operations.
cw_update_board_statusProWriteUpdate a board status on a service board with JSON Patch operations.
cw_update_board_subtypeProWriteUpdate a board subtype on a service board with JSON Patch operations.
cw_update_board_typeProWriteUpdate a board type on a service board with JSON Patch operations.
cw_update_service_board_teamProWriteUpdate a service board team on a service board with JSON Patch operations.

[ConnectWise] Count board items on a service board. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count board statuses on a service board. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count board statuses on a service board (the info shape). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
serviceBoardIdintegeryesThe numeric ConnectWise service board ID.

[ConnectWise] Count board subtypes on a service board. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count board subtypes on a service board (the info shape). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count board types on a service board. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count boards. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count service board teams on a service board. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count service board teams on a service board (the info shape). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a board. Returns the created record with its ID. The body is ConnectWise's Board object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's Board. Read an existing record to see its shape.

[ConnectWise] Create a board item on a service board. Returns the created record with its ID. The body is ConnectWise's BoardItem object.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardItem. Read an existing record to see its shape.

[ConnectWise] Create a board status on a service board. Returns the created record with its ID. The body is ConnectWise's BoardStatus object.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardStatus. Read an existing record to see its shape.

[ConnectWise] Create a board subtype on a service board. Returns the created record with its ID. The body is ConnectWise's BoardSubType object.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardSubType. Read an existing record to see its shape.

[ConnectWise] Create a board type on a service board. Returns the created record with its ID. The body is ConnectWise's BoardType object.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardType. Read an existing record to see its shape.

[ConnectWise] Create a service board team on a service board. Returns the created record with its ID. The body is ConnectWise's BoardTeam object.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardTeam. Read an existing record to see its shape.

[ConnectWise] DESTRUCTIVE: permanently delete a board. This cannot be undone. Check where it is used with cw_get_board_usages first.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ID of the board.

[ConnectWise] DESTRUCTIVE: permanently delete a board item on a service board. This cannot be undone. Check where it is used with cw_get_board_item_usages first.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
itemIdintegeryesThe numeric ID of the board item.

[ConnectWise] DESTRUCTIVE: permanently delete a board status on a service board. This cannot be undone. Check where it is used with cw_get_board_status_usages first.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
statusIdintegeryesThe numeric ID of the board status.

[ConnectWise] DESTRUCTIVE: permanently delete a board subtype on a service board. This cannot be undone. Check where it is used with cw_get_board_subtype_usages first.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
subtypeIdintegeryesThe numeric ID of the board subtype.

[ConnectWise] DESTRUCTIVE: permanently delete a board type on a service board. This cannot be undone. Check where it is used with cw_get_board_type_usages first.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
typeIdintegeryesThe numeric ID of the board type.

[ConnectWise] DESTRUCTIVE: permanently delete a service board team on a service board. This cannot be undone.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
teamIdintegeryesThe numeric ID of the service board team.
ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
itemIdintegeryesThe numeric ID of the board item.

[ConnectWise] Show where a board item is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
itemIdintegeryesThe numeric ID of the board item.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
statusIdintegeryesThe numeric ID of the board status.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
serviceBoardIdintegeryesThe numeric ConnectWise service board ID.
statusIdintegeryesThe numeric ID of the board status.

[ConnectWise] Show where a board status is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
statusIdintegeryesThe numeric ID of the board status.
ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
subtypeIdintegeryesThe numeric ID of the board subtype.
ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
boardSubTypeIdintegeryesThe numeric ID of the board subtype.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.

[ConnectWise] Show where a board subtype is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
subtypeIdintegeryesThe numeric ID of the board subtype.
ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
typeIdintegeryesThe numeric ID of the board type.

[ConnectWise] Show where a board type is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
typeIdintegeryesThe numeric ID of the board type.

[ConnectWise] Show where a board is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ID of the board.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
teamIdintegeryesThe numeric ID of the service board team.
ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
boardTeamIdintegeryesThe numeric ID of the service board team.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.

[ConnectWise] List the individual records that use a board item. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
itemIdintegeryesThe numeric ID of the board item.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the individual records that use a board status. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
statusIdintegeryesThe numeric ID of the board status.

[ConnectWise] List board statuses on a service board in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
serviceBoardIdintegeryesThe numeric ConnectWise service board ID.

[ConnectWise] List the individual records that use a board subtype. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
subtypeIdintegeryesThe numeric ID of the board subtype.

[ConnectWise] List board subtypes on a service board in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the individual records that use a board type. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
typeIdintegeryesThe numeric ID of the board type.

[ConnectWise] List the individual records that use a board. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ID of the board.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the individual records that use a service board team. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
teamIdintegeryesThe numeric ID of the service board team.

[ConnectWise] List service board teams on a service board in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] DESTRUCTIVE: replace a board wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_board to change single fields.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ID of the board.
fieldsJsonstringyesJSON object: ConnectWise's Board. Read an existing record to see its shape.

[ConnectWise] DESTRUCTIVE: replace a board item on a service board wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_board_item to change single fields.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardItem. Read an existing record to see its shape.
itemIdintegeryesThe numeric ID of the board item.

[ConnectWise] DESTRUCTIVE: replace a board status on a service board wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_board_status to change single fields.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardStatus. Read an existing record to see its shape.
statusIdintegeryesThe numeric ID of the board status.

[ConnectWise] DESTRUCTIVE: replace a board subtype on a service board wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_board_subtype to change single fields.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardSubType. Read an existing record to see its shape.
subtypeIdintegeryesThe numeric ID of the board subtype.

[ConnectWise] DESTRUCTIVE: replace a board type on a service board wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_board_type to change single fields.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardType. Read an existing record to see its shape.
typeIdintegeryesThe numeric ID of the board type.

[ConnectWise] DESTRUCTIVE: replace a service board team on a service board wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_service_board_team to change single fields.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's BoardTeam. Read an existing record to see its shape.
teamIdintegeryesThe numeric ID of the service board team.

[ConnectWise] Update a board with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ID of the board.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].

[ConnectWise] Update a board item on a service board with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
itemIdintegeryesThe numeric ID of the board item.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].

[ConnectWise] Update a board status on a service board with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
statusIdintegeryesThe numeric ID of the board status.

[ConnectWise] Update a board subtype on a service board with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
subtypeIdintegeryesThe numeric ID of the board subtype.

[ConnectWise] Update a board type on a service board with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
typeIdintegeryesThe numeric ID of the board type.

[ConnectWise] Update a service board team on a service board with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
boardIdintegeryesThe numeric ConnectWise service board ID. Use cw_discover_boards to find IDs.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
teamIdintegeryesThe numeric ID of the service board team.

Service Setup Tables

ToolPlanAccessSummary
cw_count_impactsFreeRead-onlyCount impacts.
cw_count_service_codesFreeRead-onlyCount service codes.
cw_count_service_locationsFreeRead-onlyCount service locations.
cw_count_service_locations_infoFreeRead-onlyCount service locations (the info shape).
cw_count_service_sourcesFreeRead-onlyCount service sources.
cw_count_service_sources_infoFreeRead-onlyCount service sources (the info shape).
cw_count_severitiesFreeRead-onlyCount severities.
cw_create_service_codeProWriteCreate a service code.
cw_create_service_locationProWriteCreate a service location.
cw_create_service_sourceProWriteCreate a service source.
cw_delete_service_codeProDestructiveDESTRUCTIVE: permanently delete a service code.
cw_delete_service_locationProDestructiveDESTRUCTIVE: permanently delete a service location.
cw_delete_service_sourceProDestructiveDESTRUCTIVE: permanently delete a service source.
cw_get_impactFreeRead-onlyGet one impact by ID.
cw_get_service_codeFreeRead-onlyGet one service code by ID.
cw_get_service_locationFreeRead-onlyGet one service location by ID.
cw_get_service_location_infoFreeRead-onlyGet one service location in ConnectWise's lightweight info shape: ids, names and flags.
cw_get_service_location_usagesFreeRead-onlyShow where a service location is used: the record types that reference it and how many of each.
cw_get_service_sourceFreeRead-onlyGet one service source by ID.
cw_get_service_source_infoFreeRead-onlyGet one service source in ConnectWise's lightweight info shape: ids, names and flags.
cw_get_service_source_usagesFreeRead-onlyShow where a service source is used: the record types that reference it and how many of each.
cw_get_severityFreeRead-onlyGet one severity by ID.
cw_list_service_location_usagesFreeRead-onlyList the individual records that use a service location.
cw_list_service_locations_infoFreeRead-onlyList service locations in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records.
cw_list_service_source_usagesFreeRead-onlyList the individual records that use a service source.
cw_list_service_sources_infoFreeRead-onlyList service sources in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records.
cw_replace_impactProDestructiveDESTRUCTIVE: replace an impact wholesale (PUT).
cw_replace_service_codeProDestructiveDESTRUCTIVE: replace a service code wholesale (PUT).
cw_replace_service_locationProDestructiveDESTRUCTIVE: replace a service location wholesale (PUT).
cw_replace_service_sourceProDestructiveDESTRUCTIVE: replace a service source wholesale (PUT).
cw_replace_severityProDestructiveDESTRUCTIVE: replace a severity wholesale (PUT).
cw_update_impactProWriteUpdate an impact with JSON Patch operations.
cw_update_service_codeProWriteUpdate a service code with JSON Patch operations.
cw_update_service_locationProWriteUpdate a service location with JSON Patch operations.
cw_update_service_sourceProWriteUpdate a service source with JSON Patch operations.
cw_update_severityProWriteUpdate a severity with JSON Patch operations.

[ConnectWise] Count impacts. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count service codes. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count service locations. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count service locations (the info shape). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count service sources. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count service sources (the info shape). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count severities. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a service code. Returns the created record with its ID. The body is ConnectWise's Code object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's Code. Read an existing record to see its shape.

[ConnectWise] Create a service location. Returns the created record with its ID. The body is ConnectWise's ServiceLocation object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's ServiceLocation. Read an existing record to see its shape.

[ConnectWise] Create a service source. Returns the created record with its ID. The body is ConnectWise's Source object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's Source. Read an existing record to see its shape.

[ConnectWise] DESTRUCTIVE: permanently delete a service code. This cannot be undone.

ParamTypeRequiredDefaultDescription
codeIdintegeryesThe numeric ID of the service code.

[ConnectWise] DESTRUCTIVE: permanently delete a service location. This cannot be undone. Check where it is used with cw_get_service_location_usages first.

ParamTypeRequiredDefaultDescription
locationIdintegeryesThe numeric ID of the service location.

[ConnectWise] DESTRUCTIVE: permanently delete a service source. This cannot be undone. Check where it is used with cw_get_service_source_usages first.

ParamTypeRequiredDefaultDescription
sourceIdintegeryesThe numeric ID of the service source.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
impactIdintegeryesThe numeric ID of the impact.
ParamTypeRequiredDefaultDescription
codeIdintegeryesThe numeric ID of the service code.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
locationIdintegeryesThe numeric ID of the service location.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
serviceLocationIdintegeryesThe numeric ID of the service location.

[ConnectWise] Show where a service location is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
locationIdintegeryesThe numeric ID of the service location.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
sourceIdintegeryesThe numeric ID of the service source.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
sourceIdintegeryesThe numeric ID of the service source.

[ConnectWise] Show where a service source is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
sourceIdintegeryesThe numeric ID of the service source.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
severityIdintegeryesThe numeric ID of the severity.

[ConnectWise] List the individual records that use a service location. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
locationIdintegeryesThe numeric ID of the service location.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List service locations in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List the individual records that use a service source. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
sourceIdintegeryesThe numeric ID of the service source.

[ConnectWise] List service sources in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] DESTRUCTIVE: replace an impact wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_impact to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's Impact. Read an existing record to see its shape.
impactIdintegeryesThe numeric ID of the impact.

[ConnectWise] DESTRUCTIVE: replace a service code wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_service_code to change single fields.

ParamTypeRequiredDefaultDescription
codeIdintegeryesThe numeric ID of the service code.
fieldsJsonstringyesJSON object: ConnectWise's Code. Read an existing record to see its shape.

[ConnectWise] DESTRUCTIVE: replace a service location wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_service_location to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's ServiceLocation. Read an existing record to see its shape.
locationIdintegeryesThe numeric ID of the service location.

[ConnectWise] DESTRUCTIVE: replace a service source wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_service_source to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's Source. Read an existing record to see its shape.
sourceIdintegeryesThe numeric ID of the service source.

[ConnectWise] DESTRUCTIVE: replace a severity wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_severity to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's Severity. Read an existing record to see its shape.
severityIdintegeryesThe numeric ID of the severity.

[ConnectWise] Update an impact with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
impactIdintegeryesThe numeric ID of the impact.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].

[ConnectWise] Update a service code with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
codeIdintegeryesThe numeric ID of the service code.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].

[ConnectWise] Update a service location with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
locationIdintegeryesThe numeric ID of the service location.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].

[ConnectWise] Update a service source with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
sourceIdintegeryesThe numeric ID of the service source.

[ConnectWise] Update a severity with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
severityIdintegeryesThe numeric ID of the severity.

Service Surveys

ToolPlanAccessSummary
cw_count_service_survey_resultsFreeRead-onlyCount service survey results on a survey.
cw_count_service_surveysFreeRead-onlyCount service surveys.
cw_create_service_surveyProWriteCreate a service survey.
cw_create_service_survey_resultProWriteCreate a service survey result on a survey.
cw_delete_service_surveyProDestructiveDESTRUCTIVE: permanently delete a service survey.
cw_delete_service_survey_resultProDestructiveDESTRUCTIVE: permanently delete a service survey result on a survey.
cw_get_service_surveyFreeRead-onlyGet one service survey by ID.
cw_get_service_survey_resultFreeRead-onlyGet one service survey result on a survey by ID.
cw_get_service_survey_usagesFreeRead-onlyShow where a service survey is used: the record types that reference it and how many of each.
cw_list_service_survey_usagesFreeRead-onlyList the individual records that use a service survey.
cw_replace_service_surveyProDestructiveDESTRUCTIVE: replace a service survey wholesale (PUT).
cw_replace_service_survey_resultProDestructiveDESTRUCTIVE: replace a service survey result on a survey wholesale (PUT).
cw_update_service_surveyProWriteUpdate a service survey with JSON Patch operations.
cw_update_service_survey_resultProWriteUpdate a service survey result on a survey with JSON Patch operations.

[ConnectWise] Count service survey results on a survey. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
surveyIdintegeryesThe numeric ConnectWise survey ID.

[ConnectWise] Count service surveys. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a service survey. Returns the created record with its ID. The body is ConnectWise's ServiceSurvey object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's ServiceSurvey. Read an existing record to see its shape.

[ConnectWise] Create a service survey result on a survey. Returns the created record with its ID. The body is ConnectWise's SurveyResult object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's SurveyResult. Read an existing record to see its shape.
surveyIdintegeryesThe numeric ConnectWise survey ID.

[ConnectWise] DESTRUCTIVE: permanently delete a service survey. This cannot be undone. Check where it is used with cw_get_service_survey_usages first.

ParamTypeRequiredDefaultDescription
surveyIdintegeryesThe numeric ID of the service survey.

[ConnectWise] DESTRUCTIVE: permanently delete a service survey result on a survey. This cannot be undone.

ParamTypeRequiredDefaultDescription
resultIdintegeryesThe numeric ID of the service survey result.
surveyIdintegeryesThe numeric ConnectWise survey ID.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
surveyIdintegeryesThe numeric ID of the service survey.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
resultIdintegeryesThe numeric ID of the service survey result.
surveyIdintegeryesThe numeric ConnectWise survey ID.

[ConnectWise] Show where a service survey is used: the record types that reference it and how many of each. Check this before deleting or renaming it.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
surveyIdintegeryesThe numeric ID of the service survey.

[ConnectWise] List the individual records that use a service survey. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).
surveyIdintegeryesThe numeric ID of the service survey.

[ConnectWise] DESTRUCTIVE: replace a service survey wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_service_survey to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's ServiceSurvey. Read an existing record to see its shape.
surveyIdintegeryesThe numeric ID of the service survey.

[ConnectWise] DESTRUCTIVE: replace a service survey result on a survey wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_service_survey_result to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's SurveyResult. Read an existing record to see its shape.
resultIdintegeryesThe numeric ID of the service survey result.
surveyIdintegeryesThe numeric ConnectWise survey ID.

[ConnectWise] Update a service survey with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
surveyIdintegeryesThe numeric ID of the service survey.

[ConnectWise] Update a service survey result on a survey with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
resultIdintegeryesThe numeric ID of the service survey result.
surveyIdintegeryesThe numeric ConnectWise survey ID.

Service Template Records

ToolPlanAccessSummary
cw_count_service_templatesFreeRead-onlyCount service templates.
cw_count_service_templates_infoFreeRead-onlyCount service templates (the info shape).
cw_create_service_templateProWriteCreate a service template.
cw_delete_service_templateProDestructiveDESTRUCTIVE: permanently delete a service template.
cw_get_service_template_infoFreeRead-onlyGet one service template in ConnectWise's lightweight info shape: ids, names and flags.
cw_list_service_templates_infoFreeRead-onlyList service templates in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records.
cw_replace_service_templateProDestructiveDESTRUCTIVE: replace a service template wholesale (PUT).
cw_update_service_templateProWriteUpdate a service template with JSON Patch operations.

[ConnectWise] Count service templates. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count service templates (the info shape). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a service template. Returns the created record with its ID. The body is ConnectWise's ServiceTemplate object.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's ServiceTemplate. Read an existing record to see its shape.

[ConnectWise] DESTRUCTIVE: permanently delete a service template. This cannot be undone.

ParamTypeRequiredDefaultDescription
templateIdintegeryesThe numeric ID of the service template.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
serviceTemplateIdintegeryesThe numeric ID of the service template.

[ConnectWise] List service templates in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] DESTRUCTIVE: replace a service template wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_service_template to change single fields.

ParamTypeRequiredDefaultDescription
fieldsJsonstringyesJSON object: ConnectWise's ServiceTemplate. Read an existing record to see its shape.
templateIdintegeryesThe numeric ID of the service template.

[ConnectWise] Update a service template with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].
templateIdintegeryesThe numeric ID of the service template.

Company Group Memberships

ToolPlanAccessSummary
cw_count_company_group_membershipsFreeRead-onlyCount company group memberships on a company.
cw_create_company_group_membershipProWriteCreate a company group membership on a company.
cw_delete_company_group_membershipProDestructiveDESTRUCTIVE: permanently delete a company group membership on a company.
cw_get_company_group_membershipFreeRead-onlyGet one company group membership on a company by ID.
cw_replace_company_group_membershipProDestructiveDESTRUCTIVE: replace a company group membership on a company wholesale (PUT).
cw_update_company_group_membershipProWriteUpdate a company group membership on a company with JSON Patch operations.

[ConnectWise] Count company group memberships on a company. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Create a company group membership on a company. Returns the created record with its ID. The body is ConnectWise's CompanyGroup object.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's CompanyGroup. Read an existing record to see its shape.

[ConnectWise] DESTRUCTIVE: permanently delete a company group membership on a company. This cannot be undone.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
groupIdintegeryesThe numeric ID of the company group membership.
ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
groupIdintegeryesThe numeric ID of the company group membership.

[ConnectWise] DESTRUCTIVE: replace a company group membership on a company wholesale (PUT). Why this is destructive: every field you leave out is reset, not kept. Read the record first and send the whole object back. Use cw_update_company_group_membership to change single fields.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's CompanyGroup. Read an existing record to see its shape.
groupIdintegeryesThe numeric ID of the company group membership.

[ConnectWise] Update a company group membership on a company with JSON Patch operations. Returns the updated record.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
groupIdintegeryesThe numeric ID of the company group membership.
patchJsonstringyesJSON array of patch operations. Example: [{"op": "replace", "path": "/name", "value": "New name"}].

Company Info & Defaults

ToolPlanAccessSummary
cw_count_companies_infoFreeRead-onlyCount companies (the info shape).
cw_count_company_info_typesFreeRead-onlyCount company info types.
cw_get_company_info_typeFreeRead-onlyGet one company info type by ID.
cw_get_default_companyFreeRead-onlyGet the default company record, as ConnectWise answers it at company/companies/default (a Company object).
cw_list_companies_infoFreeRead-onlyList companies in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records.
cw_list_company_info_typesFreeRead-onlyList company info types.

[ConnectWise] Count companies (the info shape). Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count company info types. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
typeIdintegeryesThe numeric ID of the company info type.
ParamTypeRequiredDefaultDescription
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.

[ConnectWise] List companies in ConnectWise's lightweight info shape: ids, names and flags, cheaper than the full records. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

[ConnectWise] List company info types. PAGINATED: 50 per page by default, 200 maximum; use page for later pages and conditions to narrow.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
orderBystringnonullOptional sort, e.g. name asc or id desc.
pageintegerno1Page number (default 1).
pageSizeintegerno50Results per page (default 50, max 200).

Company Management Reports

ToolPlanAccessSummary
cw_count_company_management_report_notificationsFreeRead-onlyCount company management report notifications on a company.
cw_count_company_management_summary_reportsFreeRead-onlyCount company management summary reports on a company.
cw_create_company_management_report_notificationProDestructiveDESTRUCTIVE: create a company management report notification on a company.
cw_create_company_management_report_setupProWriteCreate a company management report setup on a company.
cw_create_company_management_summary_reportProWriteCreate a company management summary report on a company.
cw_delete_company_management_report_notificationProDestructiveDESTRUCTIVE: permanently delete a company management report notification on a company.
cw_delete_company_management_summary_reportProDestructiveDESTRUCTIVE: permanently delete a company management summary report on a company.
cw_get_company_management_report_notificationFreeRead-onlyGet one company management report notification on a company by ID.
cw_get_company_management_summary_reportFreeRead-onlyGet one company management summary report on a company by ID.
cw_list_company_management_report_notificationsFreeRead-onlyList company management report notifications on a company.
cw_list_company_management_report_setupFreeRead-onlyList company management report setup on a company.
cw_list_company_management_summary_reportsFreeRead-onlyList company management summary reports on a company.
cw_replace_company_management_report_notificationProDestructiveDESTRUCTIVE: replace a company management report notification on a company wholesale (PUT).
cw_replace_company_management_report_setupProDestructiveDESTRUCTIVE: replace a company management report setup on a company wholesale (PUT).
cw_replace_company_management_summary_reportProDestructiveDESTRUCTIVE: replace a company management summary report on a company wholesale (PUT).
cw_update_company_management_report_notificationProDestructiveDESTRUCTIVE: update a company management report notification on a company with JSON Patch operations.
cw_update_company_management_report_setupProWriteUpdate a company management report setup on a company with JSON Patch operations.
cw_update_company_management_summary_reportProWriteUpdate a company management summary report on a company with JSON Patch operations.

[ConnectWise] Count company management report notifications on a company. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] Count company management summary reports on a company. Returns ConnectWise's own {"count":N}.

ParamTypeRequiredDefaultDescription
childConditionsstringnonullOptional conditions on the record's child collections (ConnectWise childConditions).
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
conditionsstringnonullOptional ConnectWise conditions filter (ConnectWise syntax, not OData), e.g. name like 'A%' and inactiveFlag=false. Use '/' for nested fields.
customFieldConditionsstringnonullOptional filter on custom field values (ConnectWise customFieldConditions). cw_list_custom_field_infos lists the custom fields and their captions.

[ConnectWise] DESTRUCTIVE: create a company management report notification on a company. Why this is destructive: it decides who is e-mailed or notified, and when. Returns the created record with its ID. The body is ConnectWise's ManagementReportNotification object.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's ManagementReportNotification. Read an existing record to see its shape.

[ConnectWise] Create a company management report setup on a company. Returns the created record with its ID. The body is ConnectWise's ManagementReportSetup object.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's ManagementReportSetup. Read an existing record to see its shape.

[ConnectWise] Create a company management summary report on a company. Returns the created record with its ID. The body is ConnectWise's CompanyManagementSummary object.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
fieldsJsonstringyesJSON object: ConnectWise's CompanyManagementSummary. Read an existing record to see its shape.

[ConnectWise] DESTRUCTIVE: permanently delete a company management report notification on a company. This cannot be undone.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
managementReportNotificationIdintegeryesThe numeric ID of the company management report notification.

[ConnectWise] DESTRUCTIVE: permanently delete a company management summary report on a company. This cannot be undone.

ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
managementSummaryReportIdintegeryesThe numeric ID of the company management summary report.
ParamTypeRequiredDefaultDescription
companyIdintegeryesThe numeric ConnectWise company ID. Use cw_list_companies to find IDs.
fieldsstringnonullOptional comma-separated fields to return, e.g. id,name. Trims the response.
managementReportNotificationIdinteger