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
FieldValue
Canonical URL/docs/07_ai-agents-and-mcp/model_agents/40_customer-support/support-sla-watcher
Version (published date)2026-08-26
Tagsai, agents, autonomic, support, datapool

Prerequisites

idquestionsearchif_missing_or_ambiguousdefault_to_proposebinds_to
support_cases_schemaSupport cases schematenant-data-modelImport skills firstsupport_casesMandate
wake_schedule_cronHow often should this agent wake?Askrequest_human_input0 * * * * (hourly, UTC)Agent subscriptions
support_notify_recipient_user_idIn-app recipient if owner_user_id is emptyFrom delivery-to-support-handover bind or askrequest_human_inputNoneMandate
Tenant skillsMust existlist_directory SKILLS/Run model-skill-importImport the playbooks belowAgent skill_id (primary) + mandate

Required tenant skills: tenant-data-model, support-process. Optional but recommended: delivery-to-support-handover (recipient default).

Import contract

FieldValue
Suggested nameSupport SLA watcher
Suggested slugsupport-sla-watcher
statusdraft
delegatable_by_tracefalse
Primary tenant skill_idsupport-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