Skip to main content
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 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:
{
  "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.
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"
})

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.