# SupportMCP tool catalog (all 46)

Production MCP: `https://supportmcp.pos.co.zm/mcp`  
Health: `https://supportmcp.pos.co.zm/health`

Policy is enforced by `toolPolicy.ts`. Super_User sees all tools; others see a subset.

---

## Identity

### `whoami`
No args. Returns authenticated TicketApp id, type, display fields, and allowed tool names.

---

## Customers & commercial

### `list_customers`
Optional: `customerName`, `tpin`, `installationOffice`, `type`, `businessType`, `isDemo`, `limit` (1–200, default 50), `dealerId`.

### `list_tickets_by_customer`
| Arg | Required | Notes |
|-----|----------|--------|
| `customerId` | yes | string or int |
| `from` | for history | YYYY-MM-DD; requires `to` |
| `to` | for history | YYYY-MM-DD; requires `from` |
| `status` | history only | OPEN / IN PROGRESS / PENDING / CLOSED |
| `dateColumn` | history only | createdDate \| lastUpdated \| dueDate |
| `limit` | history only | 1–200 |

Without `from`/`to`: **active only**. With both: Ticket Search history (`mode: "history"`).

### `search_tickets` (primary history)
Required: `from`, `to`.  
Optional: `dateColumn`, `status`, `customerId`, `clientName`, `department` (Admin|Developer|Kazang|Sales|Super_User|Support|Technician), `assignedUserId`, `assignedUsername`, `urgency`, `limit` (1–200).

### `list_tickets_activity_today`
Optional: `dateField` (lastUpdated default | createdDate), `status`.

### `get_customer_subscriptions` — Super_User
Required: `customerId`. Optional: `from`, `to`, `processed` (default false).

### `get_customer_invoices` / `get_customer_quotes` / `get_customer_payments` — Super_User
Required: `customerId`. Optional: `from`, `to` (default ~±1 year).

### `list_customer_job_cards` — Super_User
Required: `customerId`. Synergy project job cards (not TicketApp Technician queue).

---

## Active queues

### `list_support_tickets` / `list_development_tickets`
Optional: `status` (OPEN|IN PROGRESS|PENDING), `urgency`, `assignedUserId`, `typeId`, `subTypeId`, `overdueOnly`.

### `list_technician_jobcards`
Same drill-down; type fixed to Job Card / Technician.

### `list_overdue_tickets`
Optional: `department` (SUPPORT|DEVELOPMENT), plus common filters.

### `list_tickets_by_user`
Optional: `userId` (defaults to authenticated actor for many roles).

---

## Ticket detail & writes

### `get_ticket` / `enrich_ticket` / `list_ticket_notes`
Required: `ticketId`.

### `list_ticket_types`
No args.

### `list_ticketapp_users`
Optional: `type` (TicketApp user Type filter).

### `update_ticket_status`
Required: `ticketId`, `status` (OPEN|IN PROGRESS|PENDING|CLOSED).

### `post_ticket_note`
Required: `ticketId`, note body (maps to TicketApp `Note`). Optional: mentions.

### `close_ticket`
Required: `ticketId`, resolution note fields per schema.

### `reassign_ticket`
Required: `ticketId`, destination user id; governed by manager/Super_User rules.

### `create_development_ticket` — Super_User
Title, description, type/subtype, customer/store/assignee options; optional Synergy app/tag names.

---

## Synergy — Super_User

| Tool | Args |
|------|------|
| `list_synergy_apps` | none |
| `list_synergy_tags` | none |
| `tag_ticket` | ticketId, tagId |
| `get_dev_tasks_by_ticket` | ticketId |

---

## HOS

### `hos_list_ticket_population`
Optional: `departments[]`, `status`, `urgency`, `assignedUserId`, `typeId`, `subTypeId`, `createdAfter`/`createdBefore`, `changedAfter`/`changedBefore`, `includeClosed`, `pageSize`, `cursor`.

Closed population: pass `status=CLOSED` or `includeClosed=true` **and** a complete created or changed ISO window. Otherwise `closedState.available=false`.

### Other HOS tools
| Tool | Purpose |
|------|---------|
| `hos_get_ticket_history` | MCP ledger events for ticketId |
| `hos_resolve_roles` | Role resolution |
| `hos_list_user_registry` | Catalog registry |
| `hos_get_last_assignment` | Last assignment |
| `hos_get_ticket_clocks` | Clocks / breach |
| `hos_get_ticket_relationships` | Relationships assembly |
| `hos_list_ticket_notes` | Paginated notes |
| `hos_note_delivery_status` | Delivery status |
| `hos_intake_ticket` | Governed intake |
| `hos_list_unfinished_intakes` | Unfinished intakes |
| `hos_create_relationship` / `hos_list_relationships` | Source links |
| `hos_create_tag` / `hos_remove_tag` / `hos_correct_tag` | Tag ops |
| `hos_set_ticket_application` | App set |

See live tool schemas from MCP `tools/list` for exact required fields on each HOS write.

---

## Error patterns

| Symptom | Likely cause |
|---------|----------------|
| Only 2–3 tickets for a busy customer | Active-only call; use `search_tickets` with from/to |
| ACCESS_DENIED | Role cannot call Super_User or privileged tool |
| truncated: true | Hit limit; raise limit or split window |
| closedState CAPABILITY_BLOCKED | Missing date window on HOS closed |
| Empty history | Wrong name resolution, window, or status — try `clientName` or wider window |
