GUIDES

Scheduling tasks

An agent that only acts while someone is watching is half an agent. Let users schedule work and have it run on its own.

Turn scheduling on

Scheduling is a set of reserved tools the agent can call. Enable it in your project settings and four tools become available to the model: schedule_task, list_scheduled_tasks, update_scheduled_task, and cancel_scheduled_task. You do not wire anything up. The agent decides when to use them from what the user asks.

Scheduling runs work under the user's identity, so it needs signed identity mode. That is how a run three days from now still acts as the right person. See the identity guide to switch it on.

How users schedule from chat

Users do not fill in a form. They just say what they want, and the agent turns it into a task.

text
"Every weekday at 9am, check my open orders and message me if any are stuck."
"Remind me to review the Q3 numbers next Monday morning."
"Run the weekly summary every Friday at 5pm my time, but only for the next month."

Under the hood each of those becomes a scheduled task with a schedule, a timezone, and a run cap.

FieldTypeDescription
One-offrun_at (ISO)A single run at a specific instant, e.g. 2026-09-01T09:00:00.
Recurring5-field cronStandard cron, e.g. 0 9 * * 1-5 for 9am on weekdays.
TimezoneIANAe.g. Asia/Riyadh. The schedule is evaluated in the user’s zone, not the server’s.
max_runsintegerCap the number of runs. 0 means unlimited.

Unattended runs

When a task fires there is no browser open and no user typing. EERRAA re-signs the user's identity for that run, so the agent acts as the right person with the right private knowledge, vault credentials, and policies, exactly as if they were present. Runs are budget-aware: they draw on the same monthly token budget as live chat and stop cleanly if it is exhausted.

Results do not vanish into a log. They are held and surfaced to the user on their next visit, so a Friday summary is waiting for them Monday morning.

A recurring task keeps running until it hits max_runs or a user cancels it. Set a cap when the work is finite, and remember every run spends tokens against your budget.

The My-tasks panel and API

The widget ships a My tasks panel where a user can see their scheduled tasks, what ran, and cancel anything they no longer want. Open it from your own UI with ERA.openTasks(). The panel is backed by the scheduled-tasks API, which you can also call directly with the user's signed identity in the X-Era-User header.

GET/v1/scheduled-tasks
POST/v1/scheduled-tasks
PATCH/v1/scheduled-tasks
DELETE/v1/scheduled-tasks

GET lists a user's tasks and results, POST marks results seen, PATCH edits a schedule, and DELETE cancels one. The panel is per user, so a person only ever sees and controls their own tasks.