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 expense report and expense item structure - the report/item parent-child relationship, approval status workflow, expense categories, payment types, and the billable vs reimbursable distinction for MSP operational expenses.
$ npx -y skills add wyre-technology/msp-claude-plugins --skill expenses --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/expensesContext preview
The summary Claude sees to decide when to auto-load this skill.
Autotask expense report and expense item structure - the report/item parent-child relationship, approval status workflow, expense categories, payment types, and the billable vs reimbursable distinction for MSP operational expenses.
name: "Autotask Expenses" description: > Autotask expense report and expense item structure - the report/item parent-child relationship, approval status workflow, expense categories, payment types, and the billable vs reimbursable distinction for MSP operational expenses. when_to_use: >- When creating expense reports, adding line items, searching reports by status or submitter, or managing expense approval workflows. Use when: autotask expense, expense report, expense item, reimbursement, mileage, travel expense, receipt, expense approval, billable expense, expense category, create expense, or submit expense.
Expense reports track out-of-pocket costs incurred by technicians and staff during service delivery. Unlike time entries (which track labor hours), expense reports capture material costs like mileage, meals, equipment purchases, and travel expenses. Each report contains one or more expense items, and follows an approval workflow before reimbursement or client billing.
charge, a different entity on a different approval path; use `autotask-ticket-notes-attachments`.
`autotask-time-entries`.
`autotask-billing`.
| Entity | Purpose | Relationship | |--------|---------|-------------| | **Expense Report** | Container/header for a group of expenses | Parent - groups items by period or purpose | | **Expense Item** | Individual expense line item | Child - belongs to exactly one report |
| Status ID | Name | Description | |-----------|------|-------------| | **1** | New | Report created, not yet submitted | | **2** | Submitted | Sent for manager approval | | **3** | Approved | Manager approved, ready for processing | | **4** | Paid | Reimbursement processed | | **5** | Rejected | Manager rejected, needs correction | | **6** | InReview | Under review by approver |
NEW (1) ──────────> SUBMITTED (2) ──────────> IN REVIEW (6)
│
┌───────────┴───────────┐
▼ ▼
APPROVED (3) REJECTED (5)
│ │
▼ ▼
PAID (4) Back to NEW| Field | Type | Required | Description | |-------|------|----------|-------------| | `id` | int | System | Auto-generated unique identifier | | `name` | string | No | Report name (e.g., "Feb 2026 Travel") | | `description` | string | No | Report description | | `submitterId` | int | Yes | Resource ID of the person submitting | | `weekEndingDate` | date | No | Week ending date (YYYY-MM-DD) | | `status` | int | System | Current approval status (1-6) |
| Field | Type | Required | Description | |-------|------|----------|-------------| | `expenseReportId` | int | Yes | Parent expense report ID | | `description` | string | Yes | Line item description | | `expenseDate` | date | Yes | Date expense was incurred (YYYY-MM-DD) | | `expenseCategory` | int | Yes | Expense category picklist ID | | `amount` | decimal | Yes | Expense amount | | `companyId` | int | No | Associated company ID (0 for internal) | | `paymentType` | int | No | Payment type picklist ID | | `isBillableToCompany` | boolean | No | Whether billable to client | | `isReimbursable` | boolean | No | Whether reimbursable to employee | | `haveReceipt` | boolean | No | Whether receipt is attached |
Use `autotask_get_field_info` with entity `ExpenseItem` to get the full picklist for your instance. Common categories include:
| Category | Typical Use | |----------|-------------| | Mileage | Driving to client sites | | Meals | Client meetings, travel meals | | Lodging | Overnight travel | | Airfare | Flight costs | | Parking/Tolls | On-site parking fees | | Equipment | Small equipment purchases | | Supplies | Office or project supplies | | Other | Miscellaneous expenses |
| Type | Description | |------|-------------| | Cash | Out-of-pocket cash payment | | Personal Credit Card | Employee's own card | | Company Credit Card | Corporate card (usually not reimbursable) | | Check | Payment by check |
Tool: autotask_create_expense_report
Args: {
"submitterId": 29744150,
"name": "Feb 2026 Client Travel",
"description": "Travel expenses for on-site visits",
"weekEndingDate": "2026-02-28"
}**Notes:**
Tool: autotask_create_expense_item
Args: {
"expenseReportId": 12345,
"description": "Mileage to Contoso Ltd - server migration",
"expenseDate": "2026-02-15",
"expenseCategory": 1,
"amount": 45.50,
"companyId": 67890,
"isBillableToCompany": true,
"isReimbursable": true,
"haveReceipt": false
}**Required fields:** `expenseReportId`, `description`, `expenseDate`, `expenseCategory`, `amount`
Tool: autotask_search_expense_reports
Args: {
"submitterId": 29744150,
"status": 1,
"pageSize": 25
}**Filters:**
Tool: autotask_get_expense_report
Args: {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…