Skip to content

ReminderIt

by reminderit.com · remote · no sign-in to list tools · v0.3.0 · published by com.reminderit

Schedule real phone-call reminders with WhatsApp follow-up — medication, wake-ups, family check-ins.

Deletes · 13Changes · 3

25 tools: 13 can delete or cancel things, 3 change things and 9 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http reminderit https://mcp.reminderit.com/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn1 info
  • The server marks "preview_voice" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "preview_voice" says "preview": a word for reading.

    What this check looks for
  • The description is 2,004 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...email_fallback: Also email the reminder if the call isn't answered."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

25 tools

Deletes or cancels 13Claude Code: deny
  • add_recipientAdd another person who can receive reminder calls, e.g.No findings

    Why it is in this group

    • The name "add_recipient" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Add another person who can receive reminder calls, e.g. an elderly parent. ReminderIt immediately places a consent verification call to the number; reminders are only delivered after that person accepts. Only add someone the user genuinely has permission to call, and confirm the number digit by digit before submitting — a typo calls a stranger. Args: name: The person's name, used in the call greeting. phone: Their number in full E.164 format, e.g. "+447700900123". relationship: Optional label for the user's own reference, e.g. "Mother".

    Annotations the server declares

    • title: Add a person to remind
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • clear_reminder_voiceRemove a reminder's custom voice so it uses the account default again.No findings

    Why it is in this group

    • The description's first verb is "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove a reminder's custom voice so it uses the account default again. Args: reminder_id: Reminder whose voice override should be cleared.

    Annotations the server declares

    • title: Reset a reminder's voice
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_reminderPermanently delete a reminder.No findings

    Why it is in this group

    • The name "delete_reminder" says "delete": a word for removing or ending something.
    • The description says "Permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently delete a reminder. This cannot be undone. Confirm with the user first, quoting the reminder's title and schedule. If they may want it later, use pause_reminder instead. Args: reminder_id: Reminder to delete (from list_reminders).

    Annotations the server declares

    • title: Delete reminder
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • pause_reminderPause a reminder so it stops calling, keeping all its settings intact.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Pause a reminder so it stops calling, keeping all its settings intact. Prefer this over delete_reminder whenever the user might want it back — it is fully reversible with resume_reminder. Args: reminder_id: Reminder to pause (from list_reminders).

    Annotations the server declares

    • title: Pause reminder
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • remove_recipientRemove a care-recipient from the account.No findings

    Why it is in this group

    • The name "remove_recipient" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove a care-recipient from the account. Any reminders targeting them will stop being delivered. Confirm with the user first. Args: recipient_id: Recipient to remove (from list_recipients).

    Annotations the server declares

    • title: Remove a person
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • resend_recipient_verificationRe-send the consent verification call to a recipient who hasn't confirmed yet.No findings

    Why it is in this group

    • The name "resend_recipient_verification" says "resend": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Re-send the consent verification call to a recipient who hasn't confirmed yet. Use when list_recipients shows consent as pending and the person missed the first call. Don't repeat it more than necessary — each attempt rings their phone. Args: recipient_id: Recipient to re-verify (from list_recipients).

    Annotations the server declares

    • title: Resend consent call
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • set_reminder_channelsChoose what happens when a reminder call isn't answered.No findings

    Why it is in this group

    • The name "set_reminder_channels" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Choose what happens when a reminder call isn't answered. The phone call itself is always attempted. These toggles control the follow-ups: WhatsApp is on by default, email is off. Note each delivered fallback also consumes one call from the account's quota. Args: reminder_id: Reminder to configure (from list_reminders). whatsapp_fallback: True to send a WhatsApp message when the call is missed. email_fallback: True to also email the reminder when the call is missed.

    Annotations the server declares

    • title: Set missed-call fallbacks
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • set_reminder_voiceGive one reminder its own voice, overriding the account default.No findings

    Why it is in this group

    • The name "set_reminder_voice" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Give one reminder its own voice, overriding the account default. Use when a specific reminder should sound different — a calm, slower voice for medication; an energetic one for a workout; a different language for a relative. Call list_voices first to get valid voice IDs, and preview_voice if the user wants to hear it before committing. Other reminders are unaffected. Args: reminder_id: Reminder to restyle (from list_reminders). voice_id: Voice ID from list_voices. personality: "gentle", "cheerful", "professional", or "energetic". language: BCP-47 tag for the spoken message, e.g. "en-GB", "es-ES", "hi-IN". speaking_rate: 0.8 (slower, good for elderly listeners) to 1.2 (faster).

    Annotations the server declares

    • title: Set a reminder's voice
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • set_skip_datesSet the specific dates a recurring reminder should NOT call.No findings

    Why it is in this group

    • The name "set_skip_dates" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Set the specific dates a recurring reminder should NOT call. The right way to handle holidays, travel, or a pause of a few days — far better than deleting a reminder and rebuilding it. This REPLACES the existing skip list, so include dates the user still wants skipped (read them with get_reminder first). Pass an empty list to clear all skips. Args: reminder_id: Reminder to adjust (from list_reminders). skip_dates: Local dates in "YYYY-MM-DD" form, e.g. ["2026-08-12", "2026-08-13"].

    Annotations the server declares

    • title: Set skip dates
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • set_voice_settingsChange the account's DEFAULT voice, affecting every reminder without an override.No findings

    Why it is in this group

    • The name "set_voice_settings" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change the account's DEFAULT voice, affecting every reminder without an override. For a single reminder only, use set_reminder_voice instead. Get valid IDs from list_voices; preview_voice lets the user hear one first. Args: voice_id: Voice ID from list_voices. personality: "gentle", "cheerful", "professional", or "energetic". language: BCP-47 tag, e.g. "en-US", "en-GB", "hi-IN". speaking_rate: 0.8 (slower — often better for elderly listeners) to 1.2 (faster). greet_by_name: Whether calls open by greeting the user by name.

    Annotations the server declares

    • title: Set default voice
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • skip_next_occurrenceSkip only the next scheduled call, leaving the rest of the schedule untouched.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Skip only the next scheduled call, leaving the rest of the schedule untouched. Use for "not tomorrow, but keep it going after that". To skip particular calendar dates instead, use set_skip_dates. Args: reminder_id: Reminder whose next call should be skipped.

    Annotations the server declares

    • title: Skip next call
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • test_callPlace an immediate test call for a reminder so the user can hear it right now.No findings

    Why it is in this group

    • The name "test_call" says "call": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Place an immediate test call for a reminder so the user can hear it right now. The phone will ring within seconds — only do this when the user has asked to test, and never repeatedly. It consumes one call from their quota and does not change the schedule. Args: reminder_id: Reminder to test (from list_reminders).

    Annotations the server declares

    • title: Place a test call now
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • update_reminderEdit a reminder's wording or schedule.No findings

    Why it is in this group

    • The name "update_reminder" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Edit a reminder's wording or schedule. Only the fields you pass are changed. Use for "move it to 7am", "say it differently", "stop after the 20th". To pause or resume, use pause_reminder / resume_reminder. To change the voice, use set_reminder_voice. To skip particular dates, use set_skip_dates. Args: reminder_id: Reminder to edit (from list_reminders). title: New short label. message_text: New spoken message (written as natural speech, max 600 chars). cron_expr: New cron schedule, e.g. "0 7 * * *" for daily 7am. interval_days: New "every N days" interval (1-365). run_at: New ISO 8601 datetime for a one-off reminder. timezone: New IANA timezone. Changing this moves every future call. start_date: New ISO start date for a recurring series. end_date: New ISO end date; the series stops after it.

    Annotations the server declares

    • title: Edit reminder
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Changes things 3Claude Code: ask
  • create_reminderSchedule a new reminder phone call.1 finding

    Why it is in this group

    • The name "create_reminder" says "create": a word for a change.

    Findings

    • Info

      The description is 2,004 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...email_fallback: Also email the reminder if the call isn't answered."

      What this check looks for
    Description, as the server wrote it
    Schedule a new reminder phone call. This places REAL calls, so get the schedule right the first time: resolve the timezone via whoami, and read the result back to the user afterwards. Provide exactly one schedule: run_at (one-off), cron_expr, or interval_days. Leave the voice arguments empty to use the account's default voice. Args: title: Short label shown in the app, e.g. "Morning pills" (max 120 chars). message_text: Exactly what the voice says on the call, written as speech — "Time to take your blood pressure tablet." (max 600 chars). Avoid abbreviations and symbols that sound wrong when read aloud. type: "once" for a single call, "recurring" for a repeating schedule. timezone: IANA timezone the schedule is anchored to, e.g. "America/New_York". run_at: ISO 8601 local datetime for a one-off call. Required when type="once". cron_expr: Cron schedule for recurring calls, e.g. "0 8 * * 1-5" = weekdays 8am. interval_days: Repeat every N days (1-365). Simpler alternative to cron_expr. start_date: ISO date; the recurring series does not fire before this. end_date: ISO date; the series stops after this (e.g. end of a medication course). skip_dates: Local dates to skip, ["2026-08-12"] format — holidays, travel. recipient_id: Call a care-recipient (from list_recipients) instead of the account owner. The recipient must have consented. voice_id: Override the account voice for this reminder only (see list_voices). personality: Speaking style — "gentle", "cheerful", "professional", "energetic". language: BCP-47 language tag for the spoken message, e.g. "en-GB", "hi-IN". speaking_rate: Speech speed, 0.8 (slower) to 1.2 (faster). 1.0 is normal. whatsapp_fallback: Send the reminder on WhatsApp if the call isn't answered. email_fallback: Also email the reminder if the call isn't answered.

    Annotations the server declares

    • title: Create reminder call
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • preview_voiceGenerate a short audio sample of a voice so the user can hear it before choosing.1 finding

    Why it is in this group

    • The name "preview_voice" says "preview": a word for reading.
    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "preview_voice" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "preview_voice" says "preview": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Generate a short audio sample of a voice so the user can hear it before choosing. Returns a URL to the generated audio. Useful when a user is deciding between voices, or wants to check how their own reminder wording will sound. Args: voice_id: Voice ID from list_voices. text: Words to speak in the sample. Defaults to a standard demo line; pass the user's actual reminder message to preview exactly what they'll hear. personality: "gentle", "cheerful", "professional", or "energetic". language: BCP-47 tag, e.g. "en-GB". speaking_rate: 0.8 to 1.2.

    Annotations the server declares

    • title: Preview a voice
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • resume_reminderResume a paused reminder so it starts calling on its schedule again.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Resume a paused reminder so it starts calling on its schedule again. If it was paused automatically for out_of_credit and the account still has no calls left, it will pause again at the next occurrence — check get_usage and tell the user. Args: reminder_id: Reminder to resume (from list_reminders).

    Annotations the server declares

    • title: Resume reminder
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 9Claude Code: allow
  • get_recent_callsShow recent delivery history — what was actually called, sent, or missed.No findings

    Why it is in this group

    • The name "get_recent_calls" says "get": a word for reading.
    Description, as the server wrote it
    Show recent delivery history — what was actually called, sent, or missed. Use this to answer "did it call me?", "why didn't I get it?", or to confirm a reminder is really firing. Statuses: completed/answered = the person picked up; no-answer/busy = rang but nobody answered (a WhatsApp fallback usually follows); failed = the call could not be placed; blocked = suppressed before dialling (no credit, unsupported country, or a recipient who hasn't consented); sent/delivered/read = a WhatsApp or email fallback. Args: limit: Number of recent delivery records (1-50, default 10).

    Annotations the server declares

    • title: Get call history
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_reminderGet the full configuration of one reminder as JSON.No findings

    Why it is in this group

    • The name "get_reminder" says "get": a word for reading.
    Description, as the server wrote it
    Get the full configuration of one reminder as JSON. Use when you need detail that list_reminders omits — the exact spoken message, cron expression, skip dates, channel toggles, or voice override. Also use this to read current values before a partial update, so you don't overwrite settings. Args: reminder_id: Reminder ID from list_reminders.

    Annotations the server declares

    • title: Get reminder details
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_usageGet remaining call quota, calls used, plan, and the current billing period.No findings

    Why it is in this group

    • The name "get_usage" says "get": a word for reading.
    Description, as the server wrote it
    Get remaining call quota, calls used, plan, and the current billing period. Check before creating several reminders or suggesting a test call, and whenever a delivery fails unexpectedly. One call OR one WhatsApp fallback each consume one unit from the same pool. When the balance is low or zero, tell the user plainly.

    Annotations the server declares

    • title: Check call balance
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_voice_settingsShow the account's default voice — the voice every reminder uses unless overridden.No findings

    Why it is in this group

    • The name "get_voice_settings" says "get": a word for reading.
    Description, as the server wrote it
    Show the account's default voice — the voice every reminder uses unless overridden. Read this before changing anything, so you can report what actually changed and leave unrelated settings alone.

    Annotations the server declares

    • title: Get default voice
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_recipientsList care-recipients — other people this account can send reminders to.No findings

    Why it is in this group

    • The name "list_recipients" says "list": a word for reading.
    Description, as the server wrote it
    List care-recipients — other people this account can send reminders to. Needed to get the recipient_id for create_reminder. Consent status matters: only "confirmed" recipients receive calls; "pending" means they haven't accepted the verification call yet, so reminders to them will be blocked.

    Annotations the server declares

    • title: List people you remind
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_remindersList every reminder on the account with its schedule, state and next call time.No findings

    Why it is in this group

    • The name "list_reminders" says "list": a word for reading.
    Description, as the server wrote it
    List every reminder on the account with its schedule, state and next call time. Start here for almost any request about existing reminders — it is the only way to discover reminder IDs, which every other reminder tool needs. Paused reminders show WHY they are paused (out_of_credit, destination_not_allowed, completed).

    Annotations the server declares

    • title: List reminders
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_upcomingShow the next scheduled calls across ALL reminders, in chronological order.No findings

    Why it is in this group

    • The name "list_upcoming" says "list": a word for reading.
    Description, as the server wrote it
    Show the next scheduled calls across ALL reminders, in chronological order. Answers "what's coming up?" better than list_reminders, because it expands recurring rules into actual upcoming occurrences and merges them into one timeline. Args: limit: How many upcoming occurrences to return (1-50, default 10).

    Annotations the server declares

    • title: List upcoming calls
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_voicesList the voices available on this account, with language, accent and tier.No findings

    Why it is in this group

    • The name "list_voices" says "list": a word for reading.
    Description, as the server wrote it
    List the voices available on this account, with language, accent and tier. Call before set_voice_settings or set_reminder_voice to get valid voice IDs — never guess one. Voices marked premium may not be included in every plan; if the account's plan doesn't include one, calls fall back to a standard voice.

    Annotations the server declares

    • title: List voices
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • whoamiIdentify the connected ReminderIt account: who it is, their timezone, plan and quota.No findings

    Why it is in this group

    • The name "whoami" says "whoami": a word for reading.
    Description, as the server wrote it
    Identify the connected ReminderIt account: who it is, their timezone, plan and quota. Two jobs. First, it is the connection check — call it when the user asks "am I connected?", "which account is this?", or when another tool returns an auth error, to confirm the API key is valid and see whose account it opens. Second, call it BEFORE creating or rescheduling a reminder: it returns the user's saved timezone, so you can schedule silently instead of asking. It also warns when the phone is unverified or the account is opted out — in either case no reminder can be delivered, so surface that before scheduling anything.

    Annotations the server declares

    • title: Get account details
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.3.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http reminderit https://mcp.reminderit.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__reminderit__list_reminders",
      "mcp__reminderit__get_reminder",
      "mcp__reminderit__list_upcoming",
      "mcp__reminderit__get_recent_calls",
      "mcp__reminderit__list_voices",
      "mcp__reminderit__get_voice_settings",
      "mcp__reminderit__whoami",
      "mcp__reminderit__get_usage",
      "mcp__reminderit__list_recipients"
    ],
    "ask": [
      "mcp__reminderit__create_reminder",
      "mcp__reminderit__resume_reminder",
      "mcp__reminderit__preview_voice"
    ],
    "deny": [
      "mcp__reminderit__update_reminder",
      "mcp__reminderit__set_reminder_voice",
      "mcp__reminderit__clear_reminder_voice",
      "mcp__reminderit__set_reminder_channels",
      "mcp__reminderit__set_skip_dates",
      "mcp__reminderit__pause_reminder",
      "mcp__reminderit__skip_next_occurrence",
      "mcp__reminderit__test_call",
      "mcp__reminderit__delete_reminder",
      "mcp__reminderit__set_voice_settings",
      "mcp__reminderit__add_recipient",
      "mcp__reminderit__resend_recipient_verification",
      "mcp__reminderit__remove_recipient"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as reminderit. Review it before you use it.