dex_delete_reminder
Permanently delete a reminder from your CRM. For recurring reminders, this action stops all future occurrences by removing the specified reminder ID.
Instructions
Permanently delete a reminder. For recurring reminders, this stops all future occurrences.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| reminderId | Yes |
Implementation Reference
- src/tools/reminders.ts:107-119 (handler)Handler implementation for the dex_delete_reminder tool.
server.tool( "dex_delete_reminder", "Permanently delete a reminder. For recurring reminders, this stops all future occurrences.", { reminderId: z.string() }, async (args) => { try { const result = await dex.delete(`/v1/reminders/${args.reminderId}`); return toResult(result); } catch (error) { return toError(error); } } ); - src/tools/reminders.ts:46-120 (registration)Registration of reminder tools, including dex_delete_reminder, within the registerReminderTools function.
export function registerReminderTools(server: McpServer): void { server.tool( "dex_create_reminder", "Create a new reminder, optionally linked to contacts. Supports recurrence (e.g. 'weekly', 'monthly').", { text: z.string().describe("Reminder text / title"), dueDate: z.string().describe("Due date — accepts 'YYYY-MM-DD' or full ISO 8601 datetime (e.g. '2025-12-31' or '2025-12-31T10:00:00Z')"), dueTime: z.string().optional().describe("Optional due time as ISO 8601 datetime (e.g. '2025-12-31T14:00:00Z')"), contactIds: z.array(z.string()).optional().describe("Optional list of contact IDs to link to this reminder"), recurrence: z.string().optional().describe("Recurrence pattern (e.g. 'weekly', 'monthly')"), isComplete: z.boolean().optional(), }, async (args) => { try { const result = await dex.post("/v1/reminders/", { reminder: toReminderBody(args), }); return toResult(result); } catch (error) { return toError(error); } } ); server.tool( "dex_update_reminder", "Update a reminder by ID. Modify text, due date/time, linked contacts, recurrence, completion status, and notification flags.", { reminderId: z.string(), reminder: z.object({ text: z.string().optional().describe("Reminder text / title"), dueDate: z.string().optional().describe("Due date — accepts 'YYYY-MM-DD' or full ISO 8601 datetime"), dueTime: z.string().optional().describe("Optional due time as ISO 8601 datetime"), contactIds: z.array(z.string()).optional().describe("List of contact IDs to link to this reminder"), recurrence: z.string().optional().describe("Recurrence pattern (e.g. 'weekly', 'monthly')"), isComplete: z.boolean().optional(), lastCompletedAt: z.string().optional().describe("ISO 8601 datetime of last completion"), nextOccurrenceAt: z.string().optional().describe("ISO 8601 datetime of next occurrence"), emailSent: z.boolean().optional(), pushNotificationSent: z.boolean().optional(), }), }, async (args) => { try { const { lastCompletedAt, nextOccurrenceAt, emailSent, pushNotificationSent, ...base } = args.reminder; const result = await dex.put(`/v1/reminders/${args.reminderId}`, { reminder: { ...toReminderBody(base), ...(lastCompletedAt !== undefined && { last_completed_at: toDateTime(lastCompletedAt) }), ...(nextOccurrenceAt !== undefined && { next_occurrence_at: toDateTime(nextOccurrenceAt) }), ...(emailSent !== undefined && { email_sent: emailSent }), ...(pushNotificationSent !== undefined && { push_notification_sent: pushNotificationSent }), }, }); return toResult(result); } catch (error) { return toError(error); } } ); server.tool( "dex_delete_reminder", "Permanently delete a reminder. For recurring reminders, this stops all future occurrences.", { reminderId: z.string() }, async (args) => { try { const result = await dex.delete(`/v1/reminders/${args.reminderId}`); return toResult(result); } catch (error) { return toError(error); } } ); }