Skip to main content
Rules and schedules run a tool or start a workflow with no AI in the loop: a rule when something happens (a message is recorded, a comment arrives, something is added to a shared space), a schedule at a time. Connected accounts, such as your Instagram, are where outside events come from. You do not call these tools yourself. You ask your AI in plain words, and it picks the tool. This page shows what each one does, so you know what to ask for.

Set what happens by itself when something happens

set_rule · Changes things Makes this person’s Trillion do something by itself whenever something happens: a tool runs, or a workflow starts, with no AI in the loop. when says what sets it off, one of three ways. (1) Something recorded in this Trillion: { “recorded”: “message” } (or “pursuit”, “decision”, or any other kind of record this account keeps), with optional where tests on the record’s fields, all of which must hold: { “field”: “text”, “contains”: “invoice” }, or equals, one_of (a list), starts_with, present: true. (2) An event from outside, such as a comment or a direct message: { “source_id”: “events:instagram”, “event”: “comment”, “words”: [“tennis”] }; words (optional) must appear in the event, whole_word (default true) and field (default text) say how; once_per (optional) names an event field to act once per value of, like “from_id” for once per person. (3) Something added to a shared space this person is in, by any member (made there or shared from their private Trillion): { “space_id”: “membership_…” } from list_spaces, with optional kind (only items of that kind, like “decision” or “message”) and where tests on the item’s fields as read_space shows it (title, kind, body.text and so on). It runs in this person’s own Trillion and sees only what the space shows its members, never anyone’s private records. Only a space this person is in now can be named; if they leave it, the rule stops and list_rules says so. then names what runs: { “tool_id”, “input” } or { “workflow_id”, “input” }, where an input value { “fill”: { “from”: “record”, “field”: “text” } } is taken from the record (“id” is the record’s own id), { “fill”: { “from”: “item”, “field”: “title” } } from the space item (item_id, kind, title, body, space_id), or { “fill”: { “from”: “event”, “field”: “comment_id” } } from the event. It runs once for each thing that sets it off, never twice for the same thing, and only for what happens after the rule is set. Example: { “when”: { “recorded”: “message”, “where”: [{ “field”: “text”, “contains”: “invoice” }] }, “then”: { “tool_id”: “tool:…”, “input”: { “note”: { “fill”: { “from”: “record”, “field”: “text” } } } }, “label”: “file every invoice mentioned” }. Give rule_id to change an existing rule. enabled (default true, and an existing rule keeps its own) turns it on or off: an off rule never fires; give only rule_id and enabled to turn it on or off and keep everything else. An event rule needs listen_for_events on its source once. Inputs
Example

List my rules

list_rules · Reads only This person’s rules (from set_rule): each rule_id, when, then, label and whether it is on (enabled); which outside sources are being listened to; the latest runs the rules started (with any problem); a rule about a shared space the person has left shows stopped, saying why; and the latest events that arrived with what each rule did (task ids readable with read_task). It changes nothing. It takes no inputs.
Example

Remove a rule

remove_rule · Changes things and can remove them Removes one of this person’s rules by rule_id (from list_rules), so nothing runs for it any more. Runs it already started and their results stay. It does not stop listening to an outside source; listen_for_events with stop true does. Inputs
Example

Set something to run at a time

set_schedule · Changes things Makes this person’s Trillion run a tool or start a workflow at a time, by itself, with nobody calling. Give every for a repeating time: { “unit”: “day” or “week”, “at”: “09:00” (24-hour local time), “time_zone”: “America/New_York”, “on”: [“monday”, “tuesday”, “wednesday”, “thursday”, “friday”] for a week, “interval”: 2 for every other day or week }; clock changes are handled (a time that does not exist that night runs at the first minute that does). Or give once_at for one time: “2026-10-01T09:00:00-04:00”. then names what runs: { “tool_id”, “input” } or { “workflow_id”, “input” }. starts_on (optional, “2026-10-01”) is the first day it may run; a repeating schedule set after today’s time starts with its next time. Example, every weekday at nine in New York: { “every”: { “unit”: “week”, “on”: [“monday”, “tuesday”, “wednesday”, “thursday”, “friday”], “at”: “09:00”, “time_zone”: “America/New_York” }, “then”: { “workflow_id”: “workflow:…”, “input”: {} }, “label”: “morning review” }. Returns the next time it runs. Give schedule_id to change an existing schedule. enabled (default true, and an existing schedule keeps its own) turns it on or off: an off schedule never runs, and turned back on it counts from now, never catching up the times it was off for; give only schedule_id and enabled to turn it on or off and keep everything else. Inputs
Example

List my schedules

list_schedules · Reads only This person’s schedules (from set_schedule): each schedule_id, when it repeats or the one time, what runs, whether it is on (enabled), when it runs next (none while off), and its last run (with the task_id or run_id to read with read_task or read_workflow_run). It changes nothing. It takes no inputs.
Example

Run a rule or schedule now

run_now · Changes things Runs a rule’s or a schedule’s then once, now, on the same road run_tool and start_workflow take (so the plan checks hold), whether the rule or schedule is on or off. Give rule_id (from list_rules) or schedule_id (from list_schedules). A then input value filled from a record or event is left out, since nothing set it off; input (optional) is laid over the then’s own input to supply it. Each call runs once more. Returns the task_id (read_task) or run_id (read_workflow_run); the run shows as the rule’s latest run or the schedule’s last_run. Inputs
Example

Remove a schedule

remove_schedule · Changes things and can remove them Removes one of this person’s schedules by schedule_id (from list_schedules), so it never runs again. Runs it already started and their results stay. Inputs
Example

List my connected accounts

list_connections · Reads only Lists the accounts this person has connected to Trillion, one row each: connection_id, service, vendor, account_label, status, can_send and when it was connected. The sealed values themselves are never returned. Check here before creating or asking about an account, and connect a new one with connect_service, or with run_tool on tool:connect-service-<vendor> for a service that takes typed values. It takes no inputs.
Example

Connect one of my accounts

connect_service · Changes things Makes a one-time link (15 minutes) that connects one of this person’s accounts, such as their Instagram, by signing in on that service’s own page. Give the link to the person; the access it grants is sealed in their account, and comments and messages start arriving for their rules. service is the service’s name, for example “instagram”; an unknown name lists the ones that can be connected. Inputs
Example

Start receiving comments and messages

listen_for_events · Changes things Starts receiving events from a source for this person’s own connected account (for example their Instagram comments and messages): reads which account the connection belongs to, and asks the service to send its events here. Connect the service first. stop: true stops listening. Inputs
Example
Last modified on October 1, 2026