Tools

Reminders

Schedule one-shot messages to be delivered at a specific time.

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

ParameterRequiredDescription
operationYescreate
messageYesThe text to send when the reminder fires
remind_atYesWhen to send it. ISO 8601 or plain English: "tomorrow at 10am", "in 30 minutes", "2026-04-15 09:00"
connectorNoWhich 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

ParameterRequiredDescription
operationYeslist

Returns all pending reminders for the owner as JSON, ordered by their fire time. Sent reminders are not included.

Cancelling a Reminder

ParameterRequiredDescription
operationYescancel
idYesThe 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:work or a cron entry)

Without both, reminders accumulate but never fire.

Copyright © 2026