---
name: remembered
description: Manage reminders on remembered.cc via its REST API. Create, list, update, pause, and delete reminders using natural language.
allowed-tools:
  - Bash
  - Read
---

# Remembered API Skill

Manage reminders on remembered.cc through its REST API.

## Setup

The API key must be set as an environment variable:

```
export REMEMBERED_API_KEY="sk_live_..."
```

Generate a key at https://remembered.cc/dashboard/settings

## Base URL

```
https://remembered.cc/api/v1
```

## Authentication

All requests require a Bearer token:

```
-H "Authorization: Bearer $REMEMBERED_API_KEY"
```

## Endpoints

### List reminders

```bash
curl -s https://remembered.cc/api/v1/reminders \
  -H "Authorization: Bearer $REMEMBERED_API_KEY" | jq
```

Filter by status:

```bash
curl -s "https://remembered.cc/api/v1/reminders?status=ACTIVE&limit=10" \
  -H "Authorization: Bearer $REMEMBERED_API_KEY" | jq
```

Query params: `status` (ACTIVE, PAUSED, COMPLETED), `limit` (1-100, default 50), `offset`

### Create a reminder

```bash
curl -s -X POST https://remembered.cc/api/v1/reminders \
  -H "Authorization: Bearer $REMEMBERED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Take out the trash",
    "startDate": "2026-02-20",
    "startTime": "09:00"
  }' | jq
```

Required fields: `text`, `startDate` (YYYY-MM-DD), `startTime` (HH:mm)

Optional fields:
- `email` - recipient email (defaults to account email, must be verified if different)
- `channels` - comma-separated: "email", "sms", "webhook"
- `phone` - for SMS channel
- `webhookUrl`, `webhookMethod` - for webhook channel
- `repeatRule` - scheduling rule (see below)
- `endDate` - stop date (YYYY-MM-DD)
- `maxRuns` - max number of sends

### Get a reminder

```bash
curl -s https://remembered.cc/api/v1/reminders/REMINDER_ID \
  -H "Authorization: Bearer $REMEMBERED_API_KEY" | jq
```

### Update a reminder

```bash
curl -s -X PATCH https://remembered.cc/api/v1/reminders/REMINDER_ID \
  -H "Authorization: Bearer $REMEMBERED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "PAUSED"}' | jq
```

All fields are optional. Send only what you want to change.
Set optional fields to `null` to clear them (endDate, maxRuns, webhookUrl).

### Delete a reminder

```bash
curl -s -X DELETE https://remembered.cc/api/v1/reminders/REMINDER_ID \
  -H "Authorization: Bearer $REMEMBERED_API_KEY"
```

Returns 204 No Content on success.

## repeatRule Format

**No repeat (one-time):**
```json
{"type": "none"}
```

**Every N days/weeks/months:**
```json
{"type": "interval", "intervals": [{"every": 1, "period": "day"}]}
```

**Twice daily (Pro only):**
```json
{"type": "interval", "intervals": [
  {"every": 1, "period": "day", "time": "09:00"},
  {"every": 1, "period": "day", "time": "18:00"}
]}
```

**Specific days of the week:**
```json
{"type": "weekly", "days": ["monday", "wednesday", "friday"]}
```

**Specific days of the month:**
```json
{"type": "monthly", "positions": [1, 15]}
```

## Common Workflows

**Daily reminder at 9am:**
```bash
curl -s -X POST https://remembered.cc/api/v1/reminders \
  -H "Authorization: Bearer $REMEMBERED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Daily standup",
    "startDate": "2026-02-20",
    "startTime": "09:00",
    "repeatRule": {"type": "interval", "intervals": [{"every": 1, "period": "day"}]}
  }' | jq
```

**Pause all active reminders:**
```bash
for id in $(curl -s "https://remembered.cc/api/v1/reminders?status=ACTIVE&limit=100" \
  -H "Authorization: Bearer $REMEMBERED_API_KEY" | jq -r '.data[].id'); do
  curl -s -X PATCH "https://remembered.cc/api/v1/reminders/$id" \
    -H "Authorization: Bearer $REMEMBERED_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"status": "PAUSED"}' > /dev/null
  echo "Paused $id"
done
```

**Weekly reminder on weekdays:**
```bash
curl -s -X POST https://remembered.cc/api/v1/reminders \
  -H "Authorization: Bearer $REMEMBERED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Check email inbox",
    "startDate": "2026-02-20",
    "startTime": "08:30",
    "repeatRule": {"type": "weekly", "days": ["monday","tuesday","wednesday","thursday","friday"]}
  }' | jq
```

## Error Handling

- `401` - Missing or invalid API key
- `400` - Validation error (check `error` field in response)
- `403` - Reminder limit reached (100 per account)
- `404` - Reminder not found or not owned by you
- `429` - Rate limited (check `Retry-After` header)

## Tips for Claude

- When the user says "remind me to X tomorrow at Y", calculate the date and create the reminder
- Default to the user's timezone context for date calculations
- After creating/updating, show the response data to confirm
- Use `jq` to format JSON output for readability
- If the API key is not set, tell the user to set `REMEMBERED_API_KEY` or generate one at their settings page
