Scheduler Tools
Create and manage schedule records from a standalone agent; this page covers record operations only.
Use a standalone agent to create and manage schedule records in PostgreSQL. This page covers record operations only.
This standalone example creates schedule records but does not run an AgentOS scheduler. Its scheduler-demo endpoint is absent from the linked AgentOS example, which serves scheduler-agent. Use Scheduler Tools Agent as a separate end-to-end setup instead of mixing the two examples.
"""
Scheduler Tools
=============================
Give an agent the ability to create and manage recurring schedules.
The agent can convert natural language requests like "do this every day at 9am"
into cron-based schedules that run via the AgentOS scheduler infrastructure.
Prerequisites:
pip install agno[scheduler]
# A running AgentOS server with scheduler enabled
# See cookbook/05_agent_os/12_scheduler/04_scheduler_tools_agent.py for full setup
"""
from agno.agent import Agent
from agno.db.postgres import PostgresDb
from agno.models.openai import OpenAIChat
from agno.tools.scheduler import SchedulerTools
# ---------------------------------------------------------------------------
# Database
# ---------------------------------------------------------------------------
db = PostgresDb(
id="scheduler-tools-db",
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
)
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
agent = Agent(
id="scheduler-demo",
model=OpenAIChat(id="gpt-5.6-luna"),
tools=[
SchedulerTools(
db=db,
default_endpoint="/agents/scheduler-demo/runs",
),
],
instructions=["You are a helpful assistant that can schedule recurring tasks."],
db=db,
markdown=True,
)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
agent.print_response(
"Schedule a daily weather briefing every weekday at 8:30am EST"
)For a daylight-saving-aware Eastern time schedule, replace EST in the prompt with America/New_York and use default_timezone="America/New_York" on SchedulerTools. Its default is UTC. Check the returned cron, timezone, and endpoint; creating a record does not verify that the endpoint is served or that a weather tool is available.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U "agno[scheduler]" "psycopg[binary]" openai sqlalchemyExport your OpenAI API key
export OPENAI_API_KEY="your_openai_api_key_here"Run PgVector
docker run -d \
-e POSTGRES_DB=ai \
-e POSTGRES_USER=ai \
-e POSTGRES_PASSWORD=ai \
-e PGDATA=/var/lib/postgresql \
-v pgvolume:/var/lib/postgresql \
-p 5532:5432 \
--name pgvector \
agnohq/pgvector:18Run the example
Save the code above as scheduler_tools.py, then run:
python scheduler_tools.pyFull source: cookbook/91_tools/scheduler_tools.py