api-patterns
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com),…
Autotask Service Call data model - the ServiceCall / ServiceCallTicket / ServiceCallTicketResource three-layer structure - covering fields, status codes, and how tickets and technicians (resources) are linked to scheduled work.
$ npx -y skills add wyre-technology/msp-claude-plugins --skill service-calls --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/service-callsContext preview
The summary Claude sees to decide when to auto-load this skill.
Autotask Service Call data model - the ServiceCall / ServiceCallTicket / ServiceCallTicketResource three-layer structure - covering fields, status codes, and how tickets and technicians (resources) are linked to scheduled work.
name: "Autotask Service Calls" description: > Autotask Service Call data model - the ServiceCall / ServiceCallTicket / ServiceCallTicketResource three-layer structure - covering fields, status codes, and how tickets and technicians (resources) are linked to scheduled work. when_to_use: >- When creating, scheduling, updating, or completing service calls linked to tickets. Use when: autotask service call, service call, schedule service call, create service call, complete service call, close service call, service call ticket, service call resource, assign technician service call, schedule visit, planned work autotask, or dispatch technician.
Service Calls in Autotask are used to schedule and plan work against tickets. They represent a planned visit or block of work — linking one or more tickets to a time slot and assigning technicians. This skill covers the full lifecycle: creating service calls, linking tickets, assigning resources, and completing/closing them.
tickets, it does not replace them; use `autotask-tickets`.
is logged separately with `autotask-time-entries`.
`autotask-projects`.
| Status ID | Name | Description | |-----------|------|-------------| | **1** | New | Freshly created, not yet dispatched | | **2** | In Progress | Technician is actively working | | **5** | Complete | Work completed |
> **Instance note:** Status picklist values are instance-specific. Use `autotask_get_field_info` with `entityType: "ServiceCalls"` to confirm valid values for your Autotask instance.
Service Calls have a three-layer structure:
ServiceCall
└── ServiceCallTicket(s) ← links a Ticket to the ServiceCall
└── ServiceCallTicketResource(s) ← assigns a Technician to that ticket| Field | Type | Required | Description | |-------|------|----------|-------------| | `id` | int | System | Auto-generated ID | | `description` | string | Yes | Description of the service call | | `status` | int | No | Status picklist ID (default: 1 = New) | | `startDateTime` | datetime | Yes | Scheduled start (ISO 8601) | | `endDateTime` | datetime | Yes | Scheduled end (ISO 8601) | | `duration` | decimal | System | Calculated from start/end | | `companyID` | int | No | Company this service call is for | | `companyLocationID` | int | No | Site/location within the company | | `complete` | boolean | No | Set `true` to mark complete | | `createDate` | datetime | System | When the service call was created | | `creatorResourceID` | int | System | Who created the service call | | `lastModifiedDateTime` | datetime | System | Last update timestamp |
| Field | Type | Required | Description | |-------|------|----------|-------------| | `id` | int | System | Auto-generated ID | | `serviceCallID` | int | Yes | The parent service call | | `ticketID` | int | Yes | The linked ticket |
| Field | Type | Required | Description | |-------|------|----------|-------------| | `id` | int | System | Auto-generated ID | | `serviceCallTicketID` | int | Yes | The parent service call ticket | | `resourceID` | int | Yes | The technician (resource) to assign | | `roleID` | int | No | Role for billing rate determination |
| Tool | Description | |------|-------------| | `autotask_get_service_call` | Get a service call by ID | | `autotask_search_service_calls` | Search by company, status, or date range | | `autotask_create_service_call` | Create a new service call | | `autotask_update_service_call` | Update details, times, or status | | `autotask_delete_service_call` | Delete a service call | | `autotask_search_service_call_tickets` | Find tickets linked to a service call | | `autotask_create_service_call_ticket` | Link a ticket to a service call | | `autotask_delete_service_call_ticket` | Remove a ticket from a service call | | `autotask_search_service_call_ticket_resources` | Find technicians assigned to a service call ticket | | `autotask_create_service_call_ticket_resource` | Assign a technician to a service call ticket | | `autotask_delete_service_call_ticket_resource` | Remove a technician assignment |
1. autotask_create_service_call → description, startDateTime, endDateTime, companyID 2. autotask_create_service_call_ticket → serviceCallID (from step 1), ticketID 3. autotask_create_service_call_ticket_resource → serviceCallTicketID (from step 2), resourceID, roleID
Two equivalent approaches:
# Option A: Set complete flag autotask_update_service_call → serviceCallId, complete: true # Option B: Update status autotask_update_service_call → serviceCallId, status: 5
autotask_search_service_call_tickets → serviceCallId: <id>
autotask_search_service_call_tickets → ticketId: <id>
autotask_search_service_calls → companyId: <id>, startAfter: "2026-03-22T00:00:00Z"
POST /v1.0/ServiceCalls Content-Type: application/json
{
"description": "On-site visit - network troubleshooting",
"status": 1,
"startDateTime": "2026-03-25T09:00:00Z",
"endDateTime": "2026-03-25T12:00:00Z",
"companyID": 12345
}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
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com),…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership, and forwarding/presence…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks, searching contacts synced from an…
3CX's system-and-configuration surface: server time, PBX event log and application log search, service status, database schema and the read-only SELECT-only…
Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and judgments, the case lifecycle, bulk and remediation actions, and…
Abnormal Security message analysis: message retrieval, email header inspection, attachments, sender reputation, delivery context, and SPF/DKIM/DMARC…