Source profileQuality 91/100

WYRE-AI/msp-claude-plugins/msp-claude-plugins/kaseya/autotask/skills/time-entries/SKILL.md

Autotask Time Entries

Autotask time entry structure: approval status codes and workflow, the time entry field schema, the billing rate hierarchy, budget and contract-limit validation, utilization analytics, and the MSP business rules for rounding and minimum billing increments.

Source repository stars
42
Declared platforms
0
Static risk flags
0
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

Autotask time entry structure: approval status codes and workflow, the time entry field schema, the billing rate hierarchy, budget and contract-limit validation, utilization analytics, and the MSP business rules for rounding and minimum billing increments.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/kaseya/autotask/skills/time-entries"
    Safe inspection promptEditorial

    Inspect the Agent Skill "Autotask Time Entries" from https://github.com/WYRE-AI/msp-claude-plugins/blob/5005f73ba2f52cd299f58aa6bb79f4e70ae87103/msp-claude-plugins/kaseya/autotask/skills/time-entries/SKILL.md at commit 5005f73ba2f52cd299f58aa6bb79f4e70ae87103. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Approval Workflow

      Workflow Rules: - Resources can edit DRAFT entries freely - SUBMITTED entries are locked until approved/rejected - REJECTED entries return to editable state - APPROVED entries are included in next billing cycle - Only designated approvers can change status from SUBMITTED

      Resources can edit DRAFT entries freelySUBMITTED entries are locked until approved/rejectedREJECTED entries return to editable state
    2. 02

      Anti-triggers

      A flat charge rather than hours — use

      A flat charge rather than hours — useOut-of-pocket costs — use autotask-expenses.What an approved entry became on the invoice — use
    3. 03

      Approval Status Codes

      Based on the Autotask API, these are the time entry approval statuses:

      Resources can edit DRAFT entries freelySUBMITTED entries are locked until approved/rejectedREJECTED entries return to editable state
    4. 04

      Time Entry Field Reference

      The fields you touch on nearly every call:

      The fields you touch on nearly every call:A time entry requires either a ticketID or a projectID — never neither, and never both.See references/fields.md for the complete field reference.
    5. 05

      Billing Calculations

      Billing rates are determined in this order: 1. Contract Rate - Specific rate defined in contract 2. Resource Rate - Rate assigned to technician 3. Role Rate - Rate based on assigned role 4. Default Rate - System default rate

      Contract Rate - Specific rate defined in contractResource Rate - Rate assigned to technicianRole Rate - Rate based on assigned role

    Permission review

    Static risk signals and limitations

    No configured static risk pattern was detected

    This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars42SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    WYRE-AI/msp-claude-plugins
    Skill path
    msp-claude-plugins/kaseya/autotask/skills/time-entries/SKILL.md
    Commit
    5005f73ba2f52cd299f58aa6bb79f4e70ae87103
    License
    Apache-2.0
    Collected
    2026-08-28
    Default branch
    main
    View the original SKILL.md

    Autotask Time Entry Management

    Overview

    Time entries are the foundation of MSP billing and resource utilization tracking. Every hour logged against tickets, projects, and contracts flows through the time entry system. This skill covers comprehensive time management including billing calculations, approval workflows, budget validation, and utilization analytics.

    Anti-triggers

    • A flat charge rather than hours — use autotask-ticket-notes-attachments for ticket charges.
    • Out-of-pocket costs — use autotask-expenses.
    • What an approved entry became on the invoice — use autotask-billing.
    • Which agreement absorbs the hours, and at what rate — use autotask-contracts.

    Approval Status Codes

    Based on the Autotask API, these are the time entry approval statuses:

    Status IDNameDescriptionBusiness Logic
    0DRAFTEntry created but not submittedEditable by resource
    1SUBMITTEDSubmitted for approvalLocked, awaiting manager review
    2APPROVEDManager approved entryIncluded in billing cycle
    3REJECTEDManager rejected entryReturned for correction

    Approval Workflow

    DRAFT (0) ────────────────> SUBMITTED (1)
                                    │
                        ┌───────────┴───────────┐
                        ▼                       ▼
                  APPROVED (2)            REJECTED (3)
                        │                       │
                        ▼                       ▼
              Billing Cycle              Back to DRAFT
    

    Workflow Rules:

    • Resources can edit DRAFT entries freely
    • SUBMITTED entries are locked until approved/rejected
    • REJECTED entries return to editable state
    • APPROVED entries are included in next billing cycle
    • Only designated approvers can change status from SUBMITTED

    Time Entry Field Reference

    The fields you touch on nearly every call:

    GroupKey fields
    Coreid, resourceID, ticketID, projectID, taskID, contractID
    TimedateWorked (YYYY-MM-DD), hoursWorked, startDateTime, endDateTime
    BillingisBillable, billingCodeID, contractID
    RatehourlyRate, roleID, internalBillingCodeID
    ApprovalapproveAndPostDate, approvalStatus
    DescriptionsummaryNotes (client-visible), internalNotes

    A time entry requires either a ticketID or a projectID — never neither, and never both.

    See references/fields.md for the complete field reference.

    Billing Calculations

    Rate Hierarchy

    Billing rates are determined in this order:

    1. Contract Rate - Specific rate defined in contract
    2. Resource Rate - Rate assigned to technician
    3. Role Rate - Rate based on assigned role
    4. Default Rate - System default rate

    The first match wins; a contract rate silently overrides a resource's own rate, which is a common source of "wrong invoice amount" reports.

    See references/examples.md for the rate-resolution, billing-amount, and billability-determination implementations.

    Approval Requirements

    Automatic Approval Triggers

    Certain conditions automatically require manager approval:

    ConditionRequires ApprovalReason
    Billable timeYesFinancial impact
    Hours > 8YesOvertime review
    Weekend workYesPolicy compliance
    Holiday workYesPolicy compliance
    Exceeds budgetYesCost control
    See references/examples.md for the requiresApproval
    implementation.

    Budget Validation

    Before posting time, check both the project's hour budget and the contract's block-hour or retainer limit — they are tracked separately and either can be exceeded independently. Crossing 90% of a project budget flips the entry into requiring manager approval.

    See references/examples.md for the project-budget and contract-limit check implementations.

    Time Analytics & KPIs

    Industry Benchmarks

    MetricTargetGoodExcellent
    Utilization Rate65%70-75%80%+
    Average Daily Hours6.5h7h7.5h
    Approval Turnaround24h8h4h
    Entry Accuracy95%98%99%+

    See references/examples.md for the utilization-rate calculation.

    API Patterns

    PurposeCall
    Create entryPOST /TimeEntries
    Query entriesPOST /TimeEntries/query with a filter array
    Submit for approvalPATCH /TimeEntries/{id} setting the approval field
    Approve / rejectPATCH /TimeEntries/{id} (approver credentials required)

    See references/api.md for the full create/query request bodies and the submit, approve, and reject patterns.

    Business Rules

    Quarter-Hour Rounding

    Standard MSP practice is to round time to the nearest quarter hour:

    function roundToQuarterHour(hours) {
      return Math.round(hours * 4) / 4;
    }
    
    // Examples:
    // 1.12 → 1.0
    // 1.13 → 1.25
    // 1.38 → 1.5
    // 1.63 → 1.75
    // 1.88 → 2.0
    

    Minimum Billing Increments

    Work TypeMinimumRationale
    Remote Support0.25h (15 min)Quick remote fixes
    Phone Call0.25h (15 min)Brief calls
    On-Site Visit1.0h (60 min)Travel overhead
    Emergency/After Hours1.0h (60 min)Premium rate

    Default Date Handling

    If no date is provided, default to the current date:

    function setDefaultDate(timeEntry) {
      if (!timeEntry.dateWorked) {
        timeEntry.dateWorked = new Date().toISOString().split('T')[0];
      }
      return timeEntry;
    }
    

    Common Workflows

    Daily Time Entry Flow

    1. Log time - Create entry with work details
    2. Review - Check accuracy and completeness
    3. Submit - Change status to SUBMITTED (1)
    4. Await approval - Manager reviews entry
    5. Resolve - Entry approved or rejected

    End of Week Timesheet

    // Get all draft entries for the week
    const weekEntries = await queryTimeEntries({
      filter: [
        {field: 'resourceID', op: 'eq', value: currentResourceId},
        {field: 'dateWorked', op: 'between', value: [weekStart, weekEnd]},
        {field: 'approvalStatus', op: 'eq', value: 0}
      ]
    });
    
    // Submit all for approval
    for (const entry of weekEntries) {
      await updateTimeEntry(entry.id, { approvalStatus: 1 });
    }
    

    Manager Approval Queue

    // Get pending approvals for my team
    const pendingApprovals = await queryTimeEntries({
      filter: [
        {field: 'approvalStatus', op: 'eq', value: 1},
        {field: 'dateWorked', op: 'gte', value: lastWeekStart}
      ],
      includeFields: ['Resource.firstName', 'Resource.lastName', 'Ticket.title']
    });
    

    Error Handling

    Common API Errors

    CodeMessageResolution
    400TicketID or ProjectID requiredProvide either ticket or project
    400Invalid hours valueHours must be positive decimal
    400Future date not allowedDate cannot be in future
    401UnauthorizedVerify API credentials
    403Cannot modify approved entryEntry is locked after approval
    409Entry already submittedCannot edit while pending

    Validation Errors

    ErrorCauseFix
    ResourceID requiredMissing technicianAdd resourceID field
    Invalid dateWorkedDate format wrongUse YYYY-MM-DD format
    Hours exceed 24Too many hoursCheck hour calculation
    Missing summaryNo descriptionAdd summaryNotes

    Best Practices

    1. Log time immediately - Don't batch at end of day; details get lost
    2. Use descriptive summaries - Clients see these on invoices
    3. Round appropriately - Follow minimum billing rules
    4. Link to tickets/projects - Always associate with work items
    5. Monitor utilization - Track billable vs non-billable ratio
    6. Review budget warnings - Address before exceeding limits
    7. Use billing codes - Categorize time for reporting
    8. Keep internal notes separate - Don't bill clients for non-value work
    9. Approve promptly - Long approval queues delay billing

    Related Skills

    Frequently asked questions

    What to verify before installation and use

    What does the Autotask Time Entries source document cover?

    Autotask time entry structure: approval status codes and workflow, the time entry field schema, the billing rate hierarchy, budget and contract-limit validation, utilization analytics, and the MSP business rules for rounding and minimum billing increments.

    How do I install Autotask Time Entries?

    The source record exposes this install command: npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/kaseya/autotask/skills/time-entries". Inspect the command and pinned source before running it.

    Alternatives

    Compare before choosing

    Computed 9836,049

    K-Dense-AI/scientific-agent-skills

    dask

    Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.

    Computed 9815

    getcargohq/cargo-skills

    cargo-orchestration

    Make Cargo actually run something, or show what it would run — execute one connector action, run a multi-step workflow, trigger a batch across a whole segment or model, message an AI agent, build or edit a node graph, draw a workflow, tool or play as a diagram, and query the runtime tables (runs, batches, spans, records) with SQL. Triggers: "run this on all my contacts", "execute the action", "kick off a batch", "build a workflow", "schedule a play", "make it run every morning", "ask the agent",

    Computed 973,123

    NVIDIA/skills

    vss-deploy-detection-tracking-2d

    Use this skill when the user wants to deploy, run, debug, tear down, or call the REST API of the RTVI-CV 2D detection / tracking microservice. Trigger when the user says things like 'deploy rtvi-cv', 'start warehouse 2d', 'add a stream', 'check rtvi-cv health', or 'stop the perception container'. Not for VLM, embedding, or analytics — use the matching vss-* skill.

    Computed 97150

    UiPath/skills

    uipath-coded-apps

    UiPath Coded Apps — scaffold, build, run, and deploy Coded Web Apps and Coded Action Apps: React/TypeScript apps that call UiPath Cloud APIs via the `@uipath/uipath-typescript` SDK and ship to Automation Cloud (push/pull to Studio Web, pack, publish, deploy, OAuth-PKCE). Also generates live analytics & governance dashboards from a plain-language request, wired to tenant data via the Insights real-time API, with edit and deploy flows. For RPA→uipath-rpa, Python agents→uipath-agents, Maestro flows