Search⌘KHide sidebarOpen menu
Switch to dark mode
Copy page content as Markdown⌘⌥C
Login
Automations

Automations

Scheduled, observe-only checks on your data that return a finding, a report and the queries behind it.

An automation is a recurring investigation you describe in plain language. On its schedule, Beetl works through your datasets with read-only SQL and writes a Markdown report. Each run ends with a finding, Healthy or Needs attention, and lists every query it ran, why it ran it, and the result.

Automations only observe. A run can look up datasets and run read-only queries, but it cannot change data, build or deploy a pipeline, or propose an action. See The agent trust boundary.

Automations belong to the workspace rather than to the person who created them. Every user in the tenant sees the same list and can open any run's report and evidence, even though query results are otherwise private to their creator.

Create and run an automation

Automations need AI in the tenant: managed AI, or your own key if a TenantAdmin has registered one. If neither is available, New automation is disabled. See AI in a tenant.

Describe the check

Open Automations in the sidebar and choose New automation. Give it a Name and fill in Instructions with what Beetl should check. What should the report include? is optional, for example "list the violating records grouped by country".

Add starting queries (optional)

Under Starting queries, choose Add query to give Beetl named SQL to begin from. Turn on Use previous runs if the check should compare against earlier results, such as "did the count go up since last week".

Pick a model and a schedule

The model chip and the reasoning-effort chip (Default, Low, Medium or High) work as they do in chat. Leaving the model unset uses the workspace default.

Optionally pick a report template to render each completed run's findings as a PDF; see Reading a report. Templates are shared across the workspace and are described in Reports.

Under Schedule, run it every hour, day, week or month at a time you choose, or open Use an advanced cron expression. Set the Timezone the schedule follows. A new automation starts out daily at 08:00 in your browser's timezone.

Test it, then save

Test automation runs the current, unsaved definition and shows the finding, the report and the investigation. A test leaves no run history, and its query results are not kept. When the result looks right, choose Save automation.

After saving, the automation's page has these actions:

  • Run now starts a run immediately, even while the automation is paused. Only one run of an automation can be in progress at a time.
  • Pause stops future scheduled runs, and Resume starts them again.
  • Edit reopens the editor.

To delete an automation, open the actions menu on its row in the Automations list, choose Delete and confirm. You can't delete an automation while a run is in progress.

Any user in the tenant, TenantAdmin or TenantUser, can create, edit, run, pause, resume and delete automations.

Writing a good goal

Give each automation one concern. "Active suppliers missing a VAT ID or payment terms" produces a clear finding. A goal that also checks open orders and stock levels produces a long report with a muddy verdict, so split separate concerns into separate automations.

Name the datasets and columns when you know them. Beetl can look them up, but every lookup spends part of the run's budget (see Limits).

Say what Needs attention means, with a threshold. "Needs attention if more than 5 active suppliers are missing a VAT ID, or if any supplier created this week is" gives a run something to decide against. Without a threshold, the verdict is the model's judgment.

Add a starting query when you already know the SQL that answers the question. Beetl treats it as a starting point and may adapt it or run other read-only queries, so describe the intent in the goal as well.

Keep the goal short. A few sentences usually work better than a page of instructions, and wishes about layout belong in What should the report include?.

Reading a report

The automation's page shows the latest run first:

  • The finding, Healthy or Needs attention.
  • A summary of a sentence or two, which also appears on the Automations list.
  • The findings: up to 20 items, each with a title, a detail and references to the evidence.
  • The report in Markdown, shaped by your report instructions.
  • How Beetl investigated, which lists each step with its purpose. For a query step, View evidence opens the SQL and the rows it returned.

If the automation has a report template, a completed run also shows its findings as a PDF, with a PDF and Summary toggle on the run page and a per-page view. Choose Render PDF to produce it, or Retry render if rendering failed. A run that did not complete, or an automation without a template, has no PDF to render. PDFs are written to your object storage.

Run history lists earlier runs; open one to read its report and evidence.

If a run fails, its page gives the reason and says that no business conclusion was produced. The last completed finding stays visible next to the failure, so a failed run never reads as Healthy. A run also fails if it couldn't query any data, for example because the workspace has no queryable datasets, or when the tenant's monthly AI credits run out.

Reports are kept with no time limit, but the query results they link to expire after 7 days. To check a number in an older report, run the automation or the query again. See Query results.

The Automations list shows each automation's status, its latest summary, its schedule and its next run. Filter it by Needs attention, Failed or Paused to see what needs a look.

Limits

LimitValue
Name255 characters
Instructions (the goal)8,000 characters
Report instructions16,000 characters
Starting queries20, with unique names and up to 64,000 SQL characters in total
ScheduleAt most once every 15 minutes
Investigation time5 minutes, then the run writes its report from what it found
Tool calls per run32, counting every query, dataset lookup and previous-run read
Time per query60 seconds
Whole runMarked failed after 7 minutes
Runs in progress1 per automation
Query results linked from a report7 days

An advanced cron expression has 6 fields, starting with seconds: 0 30 7 * * Mon-Fri runs at 07:30 on weekdays. Saving fails if the schedule would ever run twice within 15 minutes.

If a check needs more queries or time than this, split it into several automations, or compute the heavy part in a pipeline and point the automation at its output dataset.

Managing from chat and over MCP

The assistant in chat can create, update, run, pause, resume and delete automations. Deleting one asks for your confirmation first.

An MCP client with a write key can do the same, and create_automation and update_automation accept an optional template. A read key can list automations and read their runs, with their findings and rendered PDF, using list_automation_runs and get_automation_run. See Tool reference and MCP setup.

Notifications

Beetl does not send email, Slack or webhook notifications, so a Needs attention finding waits in the app until someone looks. Check the Automations list with the Needs attention filter, or have an MCP client poll list_automation_runs on a schedule and raise alerts in your own tools.

Last updated on

On this page