Support SLA watcher
Unattended agent: find DataPool support cases that are still open or waiting_internal with sla_due_at in the past, escalate per the support playbook, notify in-app.
Document information
| Field | Value |
|---|
| Canonical URL | /docs/07_ai-agents-and-mcp/model_agents/40_customer-support/support-sla-watcher |
| Version (published date) | 2026-08-26 |
| Tags | ai, agents, autonomic, support, datapool |
Prerequisites
| id | question | search | if_missing_or_ambiguous | default_to_propose | binds_to |
|---|
support_cases_schema | Support cases schema | tenant-data-model | Import skills first | support_cases | Mandate |
wake_schedule_cron | How often should this agent wake? | Ask | request_human_input | 0 * * * * (hourly, UTC) | Agent subscriptions |
support_notify_recipient_user_id | In-app recipient if owner_user_id is empty | From delivery-to-support-handover bind or ask | request_human_input | None | Mandate |
| Tenant skills | Must exist | list_directory SKILLS/ | Run model-skill-import | Import the playbooks below | Agent skill_id (primary) + mandate |
Required tenant skills: tenant-data-model, support-process. Optional but recommended: delivery-to-support-handover (recipient default).
Import contract
| Field | Value |
|---|
Suggested name | Support SLA watcher |
Suggested slug | support-sla-watcher |
status | draft |
delegatable_by_trace | false |
Primary tenant skill_id | support-process |
allowed_process_ids | [] unless the operator binds processes |
allowed_peer_agent_ids | [] |
Mandate (copy after binding)
You are an unattended Autonomic Agent. This mandate is a playbook, not a persona.
Each wake:
1. Load tenant skills with load_tenant_skill: tenant-data-model, support-process.
2. Load platform skill datapool. describe_datapool_table then query_datapool on schema {{support_cases_schema}} for status in open, waiting_internal.
3. Load get-current-datetime. Keep rows where sla_due_at is set and sla_due_at is before now. Skip resolved and closed.
4. Follow support-process escalation: do not invent severity; do not silently extend SLA; do not close the case.
5. In-app notify owner_user_id on the row, or {{support_notify_recipient_user_id}} if owner is empty. Channel in_app_notification. Include case_id, severity, sla_due_at.
6. Update BACKLOG.md with overdue case ids. Do not execute_process. Do not use Mattermost unless a Prerequisite was bound to another channel.
7. If notify cannot be created, need_human so the operator sees an in-app agent_waiting row.
See also