wyre-technology/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
- 39
- Declared platforms
- 0
- Static risk flags
- 0
- Last source update
- 2026-08-06
- Source checked
- 2026-08-06
Decision brief
What it does—and 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.
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
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
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.
npx skills add https://github.com/wyre-technology/msp-claude-plugins --skill "msp-claude-plugins/kaseya/autotask/skills/time-entries"Inspect the Agent Skill "Autotask Time Entries" from https://github.com/wyre-technology/msp-claude-plugins/blob/c1011303bfd2a65abc9b260884d9858d1a482a6f/msp-claude-plugins/kaseya/autotask/skills/time-entries/SKILL.md at commit c1011303bfd2a65abc9b260884d9858d1a482a6f. 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
- 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 - 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 - 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 - 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. - 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
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 39 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- wyre-technology/msp-claude-plugins
- Skill path
- msp-claude-plugins/kaseya/autotask/skills/time-entries/SKILL.md
- Commit
- c1011303bfd2a65abc9b260884d9858d1a482a6f
- License
- Apache-2.0
- Collected
- 2026-08-06
- 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-attachmentsfor 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 ID | Name | Description | Business Logic |
|---|---|---|---|
| 0 | DRAFT | Entry created but not submitted | Editable by resource |
| 1 | SUBMITTED | Submitted for approval | Locked, awaiting manager review |
| 2 | APPROVED | Manager approved entry | Included in billing cycle |
| 3 | REJECTED | Manager rejected entry | Returned 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:
| Group | Key fields |
|---|---|
| Core | id, resourceID, ticketID, projectID, taskID, contractID |
| Time | dateWorked (YYYY-MM-DD), hoursWorked, startDateTime, endDateTime |
| Billing | isBillable, billingCodeID, contractID |
| Rate | hourlyRate, roleID, internalBillingCodeID |
| Approval | approveAndPostDate, approvalStatus |
| Description | summaryNotes (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:
- Contract Rate - Specific rate defined in contract
- Resource Rate - Rate assigned to technician
- Role Rate - Rate based on assigned role
- 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:
| Condition | Requires Approval | Reason |
|---|---|---|
| Billable time | Yes | Financial impact |
| Hours > 8 | Yes | Overtime review |
| Weekend work | Yes | Policy compliance |
| Holiday work | Yes | Policy compliance |
| Exceeds budget | Yes | Cost 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
| Metric | Target | Good | Excellent |
|---|---|---|---|
| Utilization Rate | 65% | 70-75% | 80%+ |
| Average Daily Hours | 6.5h | 7h | 7.5h |
| Approval Turnaround | 24h | 8h | 4h |
| Entry Accuracy | 95% | 98% | 99%+ |
See references/examples.md for the utilization-rate calculation.
API Patterns
| Purpose | Call |
|---|---|
| Create entry | POST /TimeEntries |
| Query entries | POST /TimeEntries/query with a filter array |
| Submit for approval | PATCH /TimeEntries/{id} setting the approval field |
| Approve / reject | PATCH /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 Type | Minimum | Rationale |
|---|---|---|
| Remote Support | 0.25h (15 min) | Quick remote fixes |
| Phone Call | 0.25h (15 min) | Brief calls |
| On-Site Visit | 1.0h (60 min) | Travel overhead |
| Emergency/After Hours | 1.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
- Log time - Create entry with work details
- Review - Check accuracy and completeness
- Submit - Change status to SUBMITTED (1)
- Await approval - Manager reviews entry
- 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
| Code | Message | Resolution |
|---|---|---|
| 400 | TicketID or ProjectID required | Provide either ticket or project |
| 400 | Invalid hours value | Hours must be positive decimal |
| 400 | Future date not allowed | Date cannot be in future |
| 401 | Unauthorized | Verify API credentials |
| 403 | Cannot modify approved entry | Entry is locked after approval |
| 409 | Entry already submitted | Cannot edit while pending |
Validation Errors
| Error | Cause | Fix |
|---|---|---|
| ResourceID required | Missing technician | Add resourceID field |
| Invalid dateWorked | Date format wrong | Use YYYY-MM-DD format |
| Hours exceed 24 | Too many hours | Check hour calculation |
| Missing summary | No description | Add summaryNotes |
Best Practices
- Log time immediately - Don't batch at end of day; details get lost
- Use descriptive summaries - Clients see these on invoices
- Round appropriately - Follow minimum billing rules
- Link to tickets/projects - Always associate with work items
- Monitor utilization - Track billable vs non-billable ratio
- Review budget warnings - Address before exceeding limits
- Use billing codes - Categorize time for reporting
- Keep internal notes separate - Don't bill clients for non-value work
- Approve promptly - Long approval queues delay billing
Related Skills
- Autotask Tickets - Ticket management
- Autotask Projects - Project management
- Autotask Contracts - Service agreements and billing
- Autotask API Patterns - Query builder and authentication
Alternatives
Compare before choosing
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.
K-Dense-AI/scientific-agent-skills
scanpy
Standard single-cell RNA-seq analysis pipeline. Use for QC, normalization, dimensionality reduction (PCA/UMAP/t-SNE), clustering, differential expression, visualization, and converting R-friendly single-cell formats such as Seurat or SingleCellExperiment RDS files into h5ad for Scanpy. Best for exploratory scRNA-seq analysis with established workflows. For deep learning models use scvi-tools; for data format questions use anndata.
davepoon/buildwithclaude
sendgrid-automation
Automate SendGrid email operations including sending emails, managing contacts/lists, sender identities, templates, and analytics via Rube MCP (Composio). Always search tools first for current schemas.
davepoon/buildwithclaude
supabase-automation
Automate Supabase database queries, table management, project administration, storage, edge functions, and SQL execution via Rube MCP (Composio). Always search tools first for current schemas.