Schedules

Repeat a tool call

schedules_create · Changes data · Markdown

Runs a tool call on a timetable in the business's time zone, from every 15 minutes to once a month; each run is a normal call at the tool's price.

$0.50 a call

From your agent’s balance. A call that fails costs nothing.

An example

Every Monday at 7, export last week's bookkeeping journal for our accountant.

Your agent callsschedules_create$0.50 a call

The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.

With these arguments
{
  "name": "Weekly journal for the accountant",
  "tool": "books_export",
  "arguments": {
    "what": "journal",
    "from": "{today-7}",
    "to": "{today-1}"
  },
  "timetable": {
    "every": "week",
    "days": [
      "mon"
    ],
    "at": "07:00"
  },
  "time_zone": "America/Los_Angeles"
}
What comes back
{
  "schedule": {
    "schedule_id": 4101,
    "name": "Weekly journal for the accountant",
    "tool": "books_export",
    "arguments": {
      "what": "journal",
      "from": "{today-7}",
      "to": "{today-1}"
    },
    "timetable": {
      "every": "week",
      "days": [
        "mon"
      ],
      "at": "07:00"
    },
    "runs_when": "every Monday at 07:00",
    "time_zone": "America/Los_Angeles",
    "paused": false,
    "done": false,
    "bot": "Pip",
    "next_run_at": "2026-10-19T07:00:00-07:00",
    "last_run_at": null,
    "last_status": null,
    "last_call_id": null,
    "last_error": null,
    "runs": 0
  },
  "upcoming": [
    "2026-10-19T07:00:00-07:00",
    "2026-10-26T07:00:00-07:00"
  ],
  "cost": {
    "runs_a_month": 4,
    "each_run": {
      "model": "per_call",
      "usd": "$0.001",
      "micros": 1000
    },
    "most_a_month_usd": "$0.504"
  },
  "rent": {
    "rental_id": 4101,
    "kind": "schedule",
    "label": "Schedule: Weekly journal for the accountant",
    "status": "active",
    "monthly_usd": "$0.50",
    "renews_at": "2026-11-14T08:00:00+00:00",
    "grace_until": null
  }
}

Use it when

A call should repeat: a weekly export, a daily post, a monthly report.

What it does

Run any tool on a timetable, e.g. a weekly report, a daily export or a reminder every Monday at 9:00, in the business's time zone. It runs as this bot, under its daily budget, and each run costs the tool's own price; the reply estimates the most it can cost a month. arguments are checked now; date words in them ({today}, {today+7}, {month}, {last_month}, {year}) are filled in at each run. For one run, use schedules_run_later. Tools that take tokens or read the vault can't be scheduled. A schedule is $0.50 a month, renewed from the balance; the first month is this call. Five failed runs in a row pause it and email the owner.

What comes back

schedule: its schedule_id, name, tool, arguments, timetable in words, time zone, bot and next run; upcoming: the next three runs; cost: runs a month, each run's price and the most a month can cost; rent: the monthly rental this call started. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
nameRequiredstringe.g. "Monday invoice reminders". 1 to 80 characters.
toolRequiredstringThe tool to run, e.g. "invoices_remind". 1 to 80 characters.
argumentsobjectThe tool's arguments, as you would send them.
timetableRequiredobjectWhen it runs, in time_zone. {"every": "minutes", "interval": 30} (15 at the least, 60 for tools that contact people or sites outside the business); {"every": "hour", "interval": 1, "minute": 0}; {"every": "day", "at": "09:00"}; {"every": "week", "days": ["mon", "thu"], "at": "09:00"}; {"every": "month", "day": 1, "at": "09:00"} (day 1 to 28, or "last").
timetable.everyRequiredstringOne of: minutes,hour,day,week,month.
timetable.intervalinteger
timetable.minuteinteger
timetable.atstring
timetable.daysarray of stringsUp to 7 items.
timetable.dayinteger or string
time_zonestringe.g. "America/Los_Angeles". The business calendar's time zone if left out, else UTC. Up to 64 characters.

The call

Over MCP, call schedules_create on https://api.conecto.chat/mcp/schedules. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/schedules_create \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Weekly journal for the accountant","tool":"books_export","arguments":{"what":"journal","from":"{today-7}","to":"{today-1}"},"timetable":{"every":"week","days":["mon"],"at":"07:00"},"time_zone":"America/Los_Angeles"}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404No tool has that name.Use a tool name from GET /v1/tools.
not_schedulable400The tool cannot run on its own: it handles secrets, schedules things itself, buys from a quote that expires, or starts a monthly rental.Call that tool yourself when it is needed.
invalid_input400The arguments do not fit the tool (the message names the one), or time_zone is not a time zone name.Send the arguments the tool's page lists; time zones like "America/Los_Angeles".
invalid_input400The timetable is not one the message lists: minutes under 15 (60 for a tool that contacts people or sites outside the business), a time not like 09:00, or a month day past 28.Use one of the timetables on this page.
limit_reached409The business has 100 schedules already.Delete one with schedules_delete.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md