Reminders
Introduction
The Reminder Manager tool schedules a single message to be delivered at a future date and time. Reminders are stored in laraclaw_reminders and dispatched by the laraclaw:send-due-reminders command, which the service provider runs every minute.
Creating a Reminder
| Parameter | Required | Description |
|---|---|---|
operation | Yes | create |
message | Yes | The text to send when the reminder fires |
remind_at | Yes | When to send it. ISO 8601 or plain English: "tomorrow at 10am", "in 30 minutes", "2026-04-15 09:00" |
connector | No | Which connector to deliver on (telegram, slack, email). Defaults to the connector the user is currently messaging from. |
Dates go through Carbon, with a normalization pass in front of it. Carbon leans on strtotime, which understands "30 minutes" and "tomorrow 10am" but rejects the way people actually write them, so Laraclaw trims the filler words first. "in 30 minutes", "tomorrow at 10am", and "at 5pm" all resolve; ISO 8601 is passed through untouched.
If a value can't be parsed at all, the tool says so and asks the agent to work out the exact time and pass ISO 8601 instead. The same parsing is used by the Calendar tool's start and end parameters.
Listing Reminders
| Parameter | Required | Description |
|---|---|---|
operation | Yes | list |
Returns all pending reminders for the owner as JSON, ordered by their fire time. Sent reminders are not included.
Cancelling a Reminder
| Parameter | Required | Description |
|---|---|---|
operation | Yes | cancel |
id | Yes | The reminder ID, as returned by list |
Cancelled reminders are deleted from the database.
Delivery
Every minute, a scheduled command dispatches a SendReminder job for any reminder whose remind_at is in the past and whose sent_at is null. The job resolves the connector and thread, sends the message, and marks the reminder as sent.
For delivery you need:
- A queue worker (
php artisan queue:work) - The Laravel scheduler (
php artisan schedule:workor a cron entry)
Without both, reminders accumulate but never fire.