What is an automation?
An automation is a small, named chat-style task that Moonjar runs without you. Think of it as a saved chat message plus a trigger. When the trigger fires, the assistant reads the instructions, calls whatever tools it needs, and writes back — except instead of writing back to you in chat, it writes a notification, captures something, sends you a push, or whatever the instructions ask for.
How it works
Section titled “How it works”Each automation has:
- A name — a short label.
- Instructions — a prompt describing what the automation should do.
- A trigger — one of two kinds:
- Schedule — a cron expression (with timezone). “Every weekday at 8am UTC”.
- Condition — a polled check that runs at a regular interval. “Every 5 minutes, check if my flight delay has changed.” When the condition is met, the automation acts; when it isn’t, nothing happens until the next tick.
- Tools — the assistant has access to the same built-in tools the chat does. Automations can read your library, call the web search, generate notifications, send messages.
runs_on— any (the runner picks up the work) or mobile_only (the work needs the phone awake — health-tracker reads, push notifications). Mobile-only automations defer until the phone is reachable.- An
ends_atfor condition triggers, optionally — “poll every 5 minutes for the next 8 hours, then stop”.
The runner ticks every 60 seconds. It picks up automations whose
next_run_at has arrived, runs each through the same agentic loop
as the chat assistant, and records the outcome.
What automations can do
Section titled “What automations can do”The full chat tool surface is available — capture URLs, search and
read documents, manage collections, write reminders, generate push
notifications, call out to the web, talk to outbound MCP servers.
The exception: a small set of tools that don’t make sense for an
unattended run (the automation-internal report_automation_result
tool is hidden from the picker; the runner injects it for condition
triggers).
A condition-trigger automation has access to a special path: when
the assistant calls report_automation_result with met: true, should_notify: true, the runner sends a push notification. So
“poll my flight every 10 minutes, ping me when it’s delayed more
than 30 minutes” works without the assistant needing to call
create_notification itself.
Why use one
Section titled “Why use one”Automations are for the things you’d otherwise have to remember to do, or have to ask the chat to do every time. Daily summaries. Recurring research. Polling external services that don’t push.
Limits
Section titled “Limits”- The runner ticks every 60 seconds. A “5-minute” automation effectively runs every 5 minutes ± up to a minute.
- Condition triggers must poll at least every
MIN_CONDITION_POLL_SECONDS(one minute). Faster polling isn’t allowed. - Automations have a daily-usage limit per account. The runner enforces this so a runaway automation doesn’t burn through your monthly cost ceiling.
- Mobile-only automations don’t run if the phone is unreachable — they queue and run on the next reachable tick.