> ## Documentation Index
> Fetch the complete documentation index at: https://veryfront.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedule an agent

> Schedule a Veryfront agent.

Use this page when a user asks Veryfront Agent to create a scheduled agent, schedule an existing agent, or make an agent run on a cadence.

## Agent-facing flow

1. Inspect existing agents with `list_agents` and existing schedules with `list_schedules`.
2. If the target agent does not exist, follow [Create an agent](/agent/guides/create-agent) first, then return to this flow in the same run.
3. Collect only missing schedule requirements. Required fields are the agent ID, schedule expression, timezone, and run prompt.
4. If an active schedule already targets the same agent, reuse it unless the user asked to change the cadence, timezone, or prompt; use `update_schedule` only for that change branch.
5. Otherwise create a schedule resource whose target is the agent using `create_schedule`.
6. Verify the schedule creation result or read the schedule back with `list_schedules`.

## Guardrails

* Use `conversation_mode: "create_new"` for recurring autonomous agent schedules unless the user explicitly asks to reuse an existing conversation.
* Do not create duplicate schedules for the same target agent and cadence.
* Do not emit progress-only assistant text between `create_agent` and `create_schedule`. After `create_agent` succeeds, the next assistant action must be the `create_schedule` tool call unless no schedule creation surface exists.

## Schedule target

Agent schedules use a typed schedule target. The target is the agent itself, not a wrapper task or workflow:

```json theme={null}
{
  "kind": "agent",
  "id": "<agent-id>",
  "conversation_mode": "create_new"
}
```

## Tool selection

* Use `list_agents` before creating or choosing the target agent.
* Use `list_schedules` before `create_schedule` and again when verification needs a follow-up read.
* Use `create_schedule` for new schedules.
* Use `update_schedule` only when a matching schedule already exists and the user asked to change it.

## Example pattern

Use `list_agents`, `list_schedules`, then `create_schedule` for scheduling agents.
When the target agent had to be created first, use the created agent ID as `target.id` and call `create_schedule` before any status or final response.

<CodeGroup>
  ```ts MCP tool calls theme={null}
  list_agents({
    "project_reference": "<project>"
  })

  list_schedules({
    "project_reference": "<project>",
    "status": "active"
  })

  create_schedule({
    "project_reference": "<project>",
    "name": "Hourly Salesforce case triage",
    "target": {
      "kind": "agent",
      "id": "salesforce-case-triage",
      "conversation_mode": "create_new"
    },
    "schedule": "0 * * * *",
    "timezone": "Europe/Berlin",
    "runtime_target_kind": "main_branch",
    "config": {
      "prompt": "Check open Salesforce cases, prioritize cases that need attention, and apply only safe triage updates."
    },
    "concurrency_policy": "Forbid"
  })
  ```
</CodeGroup>

## Output shape

Return a short implementation summary with the created or reused agent ID, created schedule ID, schedule expression, timezone, conversation mode, and verification result. If no schedule creation surface is available in the run, say that the agent was created or found but the schedule could not be attached; do not present the work as complete.
