Building a Schedule From a Prompt
Once an assistant is connected with Full Access, it isn't limited to reading state back to you — it can provision an environment, write the entrypoint script, and schedule it, all from a plain description of the job. This guide walks through one example end to end: a daily exchange-rate fetch.
Describe the job
In Claude, describe what you want without specifying any Runner-specific details — the assistant works out the environment type, the image, and the script itself:
In my Finance project, I need a job that fetches the latest USD/EUR exchange rate from an API every morning at 6am, and writes it to a CSV file. Set it up for me.
Watch it work
The assistant typically works through this in a few tool calls:
Lists environments in the Finance project to check whether a suitable one already exists.
Creates a Docker environment pointed directly at an existing image — usually
python:3.12-slimornode:20-slim— since a plain HTTP call needs nothing installed at the image level.Creates a Docker schedule on that environment and writes the whole job into the Command field: installing any packages the script needs at the start, then the script itself. There's no separate file to attach — the Command field takes a full multi-line script directly, so the assistant writes the entire thing inline, for example:
shpip install --quiet requests python3 -c " import csv import datetime import requests rate = requests.get('https://api.example.com/latest?base=USD&symbols=EUR', timeout=10).json()['rates']['EUR'] with open('/nodepit/rates.csv', 'a', newline='') as f: csv.writer(f).writerow([datetime.date.today().isoformat(), rate]) "Sets the Schedule cron expression to
0 6 * * *.
Claude explains each step as it goes and tells you when it's done, including the schedule's name so you can find it.
Verify in Runner
Open the schedule Claude created and check the fields:
- Environment — the Docker image it picked.
- Command — the full script it wrote, including anything it decided to install. Read it before trusting it with real credentials.
- Schedule — the cron expression, and that it matches the time zone configured in Settings.
Click Run Now to trigger it immediately instead of waiting for 6am, and check the run's log to confirm it worked.
Iterate conversationally
If something's off, just say so instead of editing it yourself:
The CSV should also include a timestamp column, and email me if the API request fails.
Claude rewrites the Command field directly — no need to open an editor or touch the Runner UI yourself. This back-and-forth is the real point: describing behavior in plain language and letting the assistant translate it into a working environment and schedule, iterating until it's right.
A few more starting points
The same pattern — a Docker environment plus an inline Command — works for almost anything that can run as a script or in a container:
- "Build a schedule that scrapes [some URL] every hour with a Python script using
requestsandbeautifulsoup4, and emails me if the page content changed." - "Take this Bash script [paste it] and turn it into a Docker schedule that runs every 15 minutes, with an environment variable for the API key."
- "Create a Docker schedule in [project name] that runs
pg_dumpagainst our database and uploads the result to S3 — write the command for me."
See AI Assistant (MCP Server) for the full list of what a connected assistant can do, and Debugging a Failed Run with an AI Assistant for when one of these jobs breaks later.