Schedule Tool
Create, delete, and list scheduled jobs (recurring cron or one-shot)
The schedule tool lets the LLM manage scheduled jobs dynamically. It supports two types of jobs:
- Recurring — triggered by a cron expression, runs indefinitely
- One-shot — triggered once at a specific date/time, then auto-removed
Jobs created at runtime are persisted to disk and survive restarts.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
action | "create" | "delete" | "list" | Yes | The scheduling action to perform |
id | string | For create/delete | Unique job identifier. Auto-generated if omitted on create. |
cron | string | For create (recurring) | Cron expression (validated by node-cron) |
runAt | string | For create (one-shot) | ISO 8601 date, e.g. 2026-03-15T14:00:00Z |
prompt | string | For create | The prompt sent to the agent when the job triggers |
Either cron or runAt must be provided when creating a job, not both.
Actions
list
Returns all registered jobs with their schedule, prompt, and status.
{
"name": "schedule",
"arguments": { "action": "list" }
}Output:
- morning-check: "Check for anything urgent today." @ cron: 0 8 * * * (enabled)
- remind-meeting: "Rappelle la réunion avec Pierre" @ runAt: 2026-03-15T14:00:00Z (enabled)If there are no jobs, returns "No scheduled jobs.".
create
Creates a new job. The job starts immediately and persists to disk.
Recurring job (cron):
{
"name": "schedule",
"arguments": {
"action": "create",
"id": "weather-daily",
"cron": "0 7 * * *",
"prompt": "Check the weather forecast for today and send a summary."
}
}Created job weather-daily (recurring)One-shot job (runAt):
{
"name": "schedule",
"arguments": {
"action": "create",
"id": "remind-meeting",
"runAt": "2026-03-15T14:00:00Z",
"prompt": "Rappelle à Alexis sa réunion avec Pierre dans 15 minutes."
}
}Created job remind-meeting (one-shot at 2026-03-15T14:00:00Z)If id is omitted, a timestamp-based ID is generated (job-<timestamp>).
One-shot jobs are automatically removed after execution. Expired one-shot jobs (date in the past) are discarded on restart.
delete
Removes a job by ID. Stops the cron task or cancels the timer, and removes it from persistence.
{
"name": "schedule",
"arguments": {
"action": "delete",
"id": "weather-daily"
}
}Deleted job weather-dailyCron Expression Format
The cron expressions follow standard 5-field format supported by node-cron:
┌────────── minute (0-59)
│ ┌──────── hour (0-23)
│ │ ┌────── day of month (1-31)
│ │ │ ┌──── month (1-12)
│ │ │ │ ┌── day of week (0-7, 0 and 7 = Sunday)
│ │ │ │ │
* * * * *Examples:
| Expression | Schedule |
|---|---|
0 8 * * * | Every day at 8:00 AM |
0 18 * * 1-5 | Weekdays at 6:00 PM |
*/15 * * * * | Every 15 minutes |
0 9,14,19 * * * | At 9 AM, 2 PM, and 7 PM |
How Jobs Execute
When a job triggers (cron tick or one-shot timer), the scheduler fires all registered event handlers. The agent processes the job's prompt as if it were a user message, using the full agent loop (memory retrieval, tool calling, LLM reasoning). The response is sent to Telegram.