From autotask
Handles Autotask contract management—recurring services, block hours, T&M, fixed price, retainer. Includes API patterns for creating contracts and adding services.
How this skill is triggered — by the user, by Claude, or both
Slash command
/autotask:contractsWhen to use
When recurring services, block hours, time & materials, and contract billing. Use when: autotask contract, service agreement, block hours, recurring service, contract renewal, contract billing, managed services agreement, or autotask billing.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Contracts in Autotask define the service relationship with clients - what services you provide, how you bill for them, and what service levels apply. Contracts control how time and expenses flow to invoices and are critical for MSP financial management.
Contracts in Autotask define the service relationship with clients - what services you provide, how you bill for them, and what service levels apply. Contracts control how time and expenses flow to invoices and are critical for MSP financial management.
| Type | Description | Billing Method |
|---|---|---|
| Recurring Services | Monthly/annual managed services | Fixed recurring fee |
| Block Hours | Prepaid hour bank | Deduct from balance |
| Time & Materials | Pay as you go | Bill actual time |
| Fixed Price | Project-based fixed fee | Milestone billing |
| Retainer | Prepaid monthly hours | Use or lose |
| Field | Description | Required |
|---|---|---|
id | Unique identifier | System |
contractName | Contract name | Yes |
companyID | Client company | Yes |
contractType | Type of contract | Yes |
status | Contract status | Yes |
startDate | Contract start | Yes |
endDate | Contract end | Yes |
setupFee | One-time setup fee | No |
timeReportingRequiresStartStopTimes | Require start/stop | No |
serviceLevelAgreementID | SLA assignment | No |
| ID | Status | Description |
|---|---|---|
| 1 | Active | Current, billable |
| 2 | Inactive | Suspended |
| 3 | Cancelled | Terminated |
Services define what's included in a contract:
| Field | Description |
|---|---|
serviceName | Name of service |
unitPrice | Price per unit |
unitCost | Cost per unit |
periodType | Monthly, Quarterly, Annual |
isOptional | Required vs optional |
POST /v1.0/Contracts
Content-Type: application/json
{
"contractName": "Acme Corp - Managed Services",
"companyID": 12345,
"contractType": 1,
"status": 1,
"startDate": "2024-01-01",
"endDate": "2024-12-31",
"setupFee": 500.00,
"timeReportingRequiresStartStopTimes": true,
"serviceLevelAgreementID": 1
}
POST /v1.0/ContractServices
Content-Type: application/json
{
"contractID": 54321,
"serviceID": 111,
"unitPrice": 150.00,
"adjustedPrice": 150.00,
"quantity": 50,
"effectiveDate": "2024-01-01"
}
POST /v1.0/Contracts
Content-Type: application/json
{
"contractName": "Acme Corp - Block Hours",
"companyID": 12345,
"contractType": 4,
"status": 1,
"startDate": "2024-01-01",
"endDate": "2024-06-30"
}
Then add block hours:
POST /v1.0/ContractBlocks
Content-Type: application/json
{
"contractID": 54322,
"datePurchased": "2024-01-01",
"hoursPurchased": 40,
"hourlyRate": 150.00,
"isPaid": true
}
Active contracts for a company:
{
"filter": [
{"field": "companyID", "op": "eq", "value": 12345},
{"field": "status", "op": "eq", "value": 1}
]
}
Contracts expiring soon:
{
"filter": [
{"field": "status", "op": "eq", "value": 1},
{"field": "endDate", "op": "lte", "value": "2024-03-31"},
{"field": "endDate", "op": "gte", "value": "2024-01-01"}
]
}
GET /v1.0/ContractBlocks/query?search={"filter":[{"field":"contractID","op":"eq","value":54322}]}
Calculate remaining hours:
hoursPurchased - Sum of time entries against contractCreate contract
Add services
Configure billing
Assign to tickets
Identify expiring contracts
Review contract performance
Negotiate renewal
Create renewal
Monitor balance
Replenish as needed
Handle overages
Contracts can be linked to SLAs:
| SLA Metric | Description |
|---|---|
| Response Time | Time to first response |
| Resolution Time | Time to resolve |
| Uptime | System availability % |
| Business Hours | When SLA applies |
SLA violations trigger alerts and can affect contract terms.
| Code | Message | Resolution |
|---|---|---|
| 400 | Invalid contract type | Use valid contract type ID |
| 400 | EndDate before StartDate | Fix date sequence |
| 409 | Cannot modify - has billing | Adjust dates only |
| 404 | ServiceID not found | Verify service exists |
"CompanyID is required" - Must associate with a company
"StartDate is required" - All contracts need start date
"Invalid service for contract type" - Service must match contract type
npx claudepluginhub wyre-technology/msp-claude-plugins --plugin autotaskManages HaloPSA service agreements: recurring billing, prepaid hours, contract renewals, and SLA associations for MSP account managers.
Manages Autotask time entries: logging hours, billing calculations, approval workflows, utilization tracking, and budget validation. For MSP technicians.
Creates, updates, and manages ConnectWise PSA projects including phases, templates, resource allocation, and project tickets. Useful for MSPs automating project-based service delivery.