Create a reminder that wakes you when due: it fires a message back into your own conversation. `fire_at` is a one-shot RFC3339/ISO-8601 UTC timestamp in the future (convert the user's local time to UTC); `interval_seconds` is a periodic interval of at least 5 seconds. Pass exactly one of them.
Optional `trigger` schedules a check instead of only delivering the reminder: `{"tool": "<name>", "args": {…}}` names one custom tool available to you, with the same name and arguments a normal `custom` call takes; a trigger names one tool, never a chain. The stored trigger — the tool name plus its arguments as JSON — is limited to 2000 characters. It is stored with the alarm and shown by `list_alarms` and in the `<user-alarms>` block.
A triggered alarm wakes you on any output and stays silent when the check prints nothing. A check that does not finish in time delivers nothing, stays pending and is retried after about a minute; after three such attempts you are told once, and it keeps retrying. A report arriving after such retries is marked late and names the time it was due for. Any other non-clean outcome wakes you with the reason and removes the alarm — a non-zero exit, a memory stop, undrained output, a failure to start, a tool no longer available or usable, arguments it no longer accepts, or a missing runtime.
Optional `role` addresses the alarm to a custom role instead of yourself: pass the role's name (`identifier` and `workspace` are optional companions, only with `role`). Only the administrator may do this, and the role must exist. A role-addressed alarm wakes the role's launch with the alarm's text as its launch message, so it cannot carry a `trigger`, and its result comes back to you. `identifier` picks the role's branch (omit for its default); `workspace` is the folder the role works in — a managed workspace name or an absolute path (omit for your personal folder).