From timezest
Use this skill to wire a TimeZest scheduling request into a PSA — building correct associatedEntities entries for ConnectWise, Autotask, or Halo tickets, choosing between the pod and generate_url trigger modes, and diagnosing bookings that completed but never updated the PSA ticket.
How this skill is triggered — by the user, by Claude, or both
Slash command
/timezest:psa-integrationWhen to use
When linking a TimeZest scheduling request to a PSA ticket — building the associatedEntities payload for ConnectWise / Autotask / Halo, choosing pod vs generate_url trigger mode, and diagnosing bookings that did not sync to the PSA. Use when: timezest psa, associated entities, link to connectwise ticket, link to autotask ticket, link to halo ticket, timezest pod mode, timezest generate url, booking didnt sync to psa, or orphan scheduling request.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
TimeZest exists to couple customer scheduling to the MSP's PSA. The
TimeZest exists to couple customer scheduling to the MSP's PSA. The
booking page is incidental — the value is that a confirmed slot lands
on the ConnectWise / Autotask / Halo ticket, on the technician's PSA
calendar, and in the billing record. Two parts of the scheduling
request payload carry that coupling: associatedEntities and
triggerMode.
associatedEntities — the PSA linkEvery timezest_scheduling_create_request call should carry an
associatedEntities array. Each entry links the booking to one PSA
record:
{
"associatedEntities": [
{
"type": "connectwise",
"id": "88421",
"number": "88421"
}
]
}
| Field | Required | Meaning |
|---|---|---|
type | Yes | PSA system — one of connectwise, autotask, halo |
id | Yes | The PSA entity ID |
number | No | Human-readable ticket reference |
A scheduling request created with no associatedEntities is an
orphan — nobody can find the booking from the PSA side later. Always
attach the association.
triggerMode — pod vs generate_url| Mode | What it does | Use when |
|---|---|---|
pod | Fires the configured PSA workflow on booking — updates the ticket, logs activity, delivers the link via the PSA's notification path | Normal ticket-driven bookings |
generate_url | Returns a bookingUrl for the dispatcher to paste manually; no PSA workflow fires | Ad-hoc links, custom emails, testing |
pod is the right default for any booking tied to a ticket.
generate_url against a ticket is usually a mistake worth confirming.
connectwise,
autotask, or halo) — critical when the MSP runs more than one
PSA in parallel.associatedEntities entry with type, id, and
number when known.triggerMode: "pod" unless the dispatcher specifically wants a
manual link.timezest_scheduling_create_request.timezest_scheduling_list.associatedEntities and bucket:
numbertype looks wrong for
the MSP's PSA mixtimezest_scheduling_get for any orphan or suspect request.timezest_scheduling_get the request — confirm it is booked.triggerMode: a generate_url request never fires the PSA
workflow, so the ticket was never meant to update automatically.associatedEntities: a missing or wrong-type association
means the workflow had nothing to update.type enum must match the ticket's actual system.autotask resolves to nothing. Verify the pairing.associatedEntities
entry.triggerMode to pod for ticket-driven bookings.number when known — it makes the request findable
by humans.pod
workflow confirms the PSA was updated.npx claudepluginhub wyre-technology/msp-claude-plugins --plugin timezestGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.