find-contact
Resolve a 3CX contact or extension by email, extension, or name
Create a schedule entry/appointment in ConnectWise PSA
$ npx -y skills add wyre-technology/msp-claude-plugins --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
/schedule-entryContext preview
What this command does when you run it.
Create a schedule entry/appointment in ConnectWise PSA
description: Create a schedule entry/appointment in ConnectWise PSA argument-hint: "<name> <start_date> <end_date> [member] [ticket_id] [type] [location] [reminder_minutes] [status]" arguments: [name, start_date, end_date, member, ticket_id, type, location, reminder_minutes, status]
Create a schedule entry/appointment in ConnectWise, optionally linked to a ticket.
1. **Validate date/time inputs**
2. **Resolve member (if provided)**
GET /system/members?conditions=identifier='{member}'3. **Validate ticket (if ticket_id provided)**
GET /service/tickets/{ticket_id}4. **Resolve schedule type (if provided)**
GET /schedule/types?conditions=name='{type}'5. **Resolve schedule status (if provided)**
GET /schedule/statuses?conditions=name='{status}'6. **Create schedule entry**
POST /schedule/entries
Content-Type: application/json
{
"name": "<name>",
"dateStart": "<start_date>",
"dateEnd": "<end_date>",
"member": {"identifier": "<member>"},
"objectId": <ticket_id>,
"type": {"id": <type_id>},
"where": {"id": <location_id>},
"status": {"id": <status_id>},
"reminder": {
"minutes": <reminder_minutes>
}
}7. **Return confirmation with calendar details**
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | Yes | - | Entry name/subject | | start_date | datetime | Yes | - | Start date and time | | end_date | datetime | Yes | - | End date and time | | member | string | No | Current user | Member identifier | | ticket_id | integer | No | - | Associated ticket ID | | type | string | No | - | Schedule type | | location | string | No | - | Location/address | | reminder_minutes | integer | No | - | Minutes before reminder | | status | string | No | - | Schedule status |
/schedule-entry "Server Maintenance" "2026-02-10 09:00" "2026-02-10 12:00"
/schedule-entry "Server Maintenance" "2026-02-10 09:00" "2026-02-10 12:00" --ticket_id 12345
/schedule-entry "On-site Support" "2026-02-11 14:00" "2026-02-11 17:00" --location "123 Main St, Anytown, USA" --type "Service"
/schedule-entry "Customer Meeting" "2026-02-12 10:00" "2026-02-12 11:00" --member jsmith
/schedule-entry "Project Kickoff" "2026-02-15 09:00" "2026-02-15 10:00" --reminder_minutes 30
/schedule-entry "Potential Site Visit" "2026-02-20 13:00" "2026-02-20 16:00" --status "Tentative"
/schedule-entry "Quarterly Review Meeting" "2026-02-28 14:00" "2026-02-28 15:30" --member jsmith --type "Meeting" --location "Customer Site - 456 Oak Ave" --reminder_minutes 60 --status "Firm"
Schedule Entry Created Successfully Entry ID: 34567 Name: Server Maintenance Type: Service Time: Start: 2026-02-10 09:00 End: 2026-02-10 12:00 Duration: 3 hours Member: Jane Technician (jtechnician) Status: Firm Linked Ticket: #12345 - Server maintenance required Company: Acme Corporation Calendar URL: https://na.myconnectwise.net/v4_6_release/services/system_io/Schedule/fv_sch200_schedule.rails iCal Export: Available (use --export-ical)
Schedule Entry Created Successfully Entry ID: 34568 Name: On-site Support Type: Service Time: Start: 2026-02-11 14:00 End: 2026-02-11 17:00 Duration: 3 hours Member: Jane Technician (jtechnician) Status: Firm Location: Address: 123 Main St, Anytown, USA Directions: https://maps.google.com/?q=123+Main+St,+Anytown,+USA Reminder: 30 minutes before (2026-02-11 13:30)
Schedule Entry Created Successfully Entry ID: 34569 Name: Server Maintenance Type: Service Time: Start: 2026-02-10 09:00 End: 2026-02-10 12:00 Duration: 3 hours Linked Ticket: ID: #12345 Summary: Server maintenance required Company: Acme Corporation Contact: John Smith (john.smith@acme.com) Priority: Medium (3) Status: Scheduled Note: Ticket status updated to "Scheduled"
# Base64 encode credentials: company+publicKey:privateKey
AUTH=$(echo -n "${CW_COMPANY}+${CW_PUBLIC_KEY}:${CW_PRIVATE_KEY}" | base64)
# Create schedule entry
curl -s -X POST \
"https://${CW_HOST}/v4_6_release/apis/3.0/schedule/entries" \
-H "Authorization: Basic ${AUTH}" \
-H "clientId: ${CW_CLIENT_ID}" \
-H "Content-Type: application/json" \
-d '{
"name": "Server Maintenance",
"dateStart": "2026-02-10T09:00:00Z",
"dateEnd": "2026-02-10T12:00:00Z",
"member": {"identifier": "jtechnician"},
"objectId": 12345,
"type": {"id": 1},
"status": {"id": 1}
}'
# Get schedule types
curl -s -X GET \
"https://${CW_HOST}/v4_6_release/apis/3.0/schedule/types" \
-H "Authorization: Basic ${AUTH}" \
-H "clientId: ${CW_CLIENT_ID}" \
-H "Content-Type: application/json"
# Get schedule statuses
curl -s -X GET \
"https://${CW_HOST}/v4_6_release/apis/3.0/schedule/statuses" \
-H "Authorization: Basic ${AUTH}" \
-H "clientId: ${CW_CLIENT_ID}" \
-H "One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai
Repo: wyre-technology/msp-claude-plugins
Resolve a 3CX contact or extension by email, extension, or name
Search for specific threat patterns in Abnormal Security by sender, recipient, attack type, or keywords
Triage recent email threats detected by Abnormal Security by severity and attack type