Agent Tasks turn markdown notes into instructions you can push to Slack on a schedule or on demand. For server-side Python on a schedule, see Python Tasks and Scripts.

What you configure

  • Markdown: Pick any note in any universe (search by title or body). The task is stored under that note’s universe.
  • Channel: Slack channel ID where the message is sent.
  • Mention: Slack user ID (U…) who is @mentioned at the start of the task message.
  • Schedule: Run only when you click Run, on a cron expression, or once at a future date and time. Tasks can be disabled without deleting them.

How delivery works

A background runner sends the rendered message to the target Slack channel via the configured bot. The message body comes from a template in Settings (agent_task_message_template). The default template tells the recipient how to retrieve the full markdown via your Astro HTTP API (including markdown_id and a read URL). Optional agent_task_base_url adjusts links for reverse proxies or Tailscale.

Configure Slack first — see Slack Integration.

In the app

Open the Agent Tasks tab to add, edit, remove, or run tasks, search the list, and see last run and next run when scheduling applies.

HTTP API

Method Path Purpose
GET /api/agent-tasks List tasks (optional ?universe_id= filter)
POST /api/agent-tasks Create a task
PUT /api/agent-tasks/{task_id} Update a task
DELETE /api/agent-tasks/{task_id} Delete a task
POST /api/agent-tasks/{task_id}/run Run immediately (subject to channel cooldown)
GET /api/settings/agent_task_message_template Get message template
PUT /api/settings/agent_task_message_template Set template ({markdown_id}, {markdown_title}, {markdown_body}, {read_url})
GET /api/settings/agent_task_base_url Get base URL for read links
PUT /api/settings/agent_task_base_url Set base URL

Tasks reference a markdown by ID; the markdown’s universe must match the task’s universe_id on create/update.

MCP tools

These tools manage tasks from any MCP client. They mirror the HTTP API: the markdown you attach must belong to the task’s universe.

Tool Purpose
list_agent_tasks List tasks (optional universe_id filter)
read_agent_task Read one task by ID
write_agent_task Create a task (title, markdown, channel, schedule, and so on)
update_agent_task Replace an existing task
delete_agent_task Delete a task
run_agent_task_now Send a task to Slack immediately (respects enable flag and channel cooldown)

Recipients in Slack follow the message template; they often call read_markdown (see Markdowns) using the markdown_id from the rendered message. Configure the template so agents know how to fetch the full note.