Skip to main content
Glama

apple-reminders-mcp

MCP server for Apple Reminders. Manage reminders with natural language from any MCP client.

Prerequisites

macOS 14+ · Node.js 18+ · remindctl

brew install steipete/tap/remindctl
remindctl authorize

Related MCP server: reminders

Setup

Claude Code (plugin):

/plugin marketplace add namearth5005/namearth5005-plugins
/plugin install apple-reminders-mcp@namearth5005-plugins

Claude Code (manual):

claude mcp add --transport stdio apple-reminders -- npx -y apple-reminders-mcp

Codex:

codex mcp add apple-reminders -- npx -y apple-reminders-mcp

Cursor / Windsurf / Other:

{
  "mcpServers": {
    "apple-reminders": {
      "command": "npx",
      "args": ["-y", "apple-reminders-mcp"]
    }
  }
}

Tools

Tool

Description

add_reminder

Add a reminder with optional due date, list, notes, priority

show_reminders

Show reminders (today/tomorrow/week/overdue/upcoming/all)

list_reminder_lists

List all reminder lists or show contents of one

edit_reminder

Edit title, due date, notes, priority, or move to another list

complete_reminders

Mark reminders as complete

delete_reminders

Delete reminders

manage_reminder_list

Create, rename, or delete lists

Examples

"remind me to deploy on Friday at 3pm"
"what's due today?"
"mark the deploy reminder as done"
"create a list called Sprint 12"

Troubleshooting

"remindctl is not authorized" — Run remindctl authorize.

"Could not find remindctl"brew install steipete/tap/remindctl, or set REMINDCTL_PATH env var.

Using nvm? Use the full node path: /opt/homebrew/bin/node instead of node.

License

MIT

Available Tools

7 tools
add_reminderAdd ReminderA

Add a new reminder to Apple Reminders. Use when the user wants to remember something, create a task, set a to-do, schedule a deadline, or needs to be reminded about anything.

Args:

  • title (string, required): The reminder text

  • list (string, optional): Target reminder list (e.g. "Work", "Personal"). Uses default list if omitted.

  • due (string, optional): Due date in natural language ("tomorrow", "Friday 3pm", "2026-04-05")

  • notes (string, optional): Additional notes or context

  • priority (string, optional): none, low, medium, or high

ParametersJSON Schema
NameRequiredDescriptionDefault
dueNoDue date — natural language or ISO date
listNoTarget reminder list name
notesNoAdditional notes
titleYesReminder title/text
priorityNoPriority level

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this is a write, non-idempotent, non-destructive operation, so the safety profile is covered. The description adds useful behavior beyond that — the default-list fallback when 'list' is omitted and natural-language date parsing — but says nothing about duplicate creation, permission/automation prompts, or what side effects occur on the reminder lists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and triggers are front-loaded in one sentence, followed by a scannable args block. The args block restates the schema but with example values, so it mostly earns its space, though it is somewhat redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter creation tool with no output schema, the description covers purpose, triggers, and every parameter's intent and format. It stops short of saying what the call returns (e.g., an identifier for the new reminder) or error behavior on a missing list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description genuinely adds meaning: concrete natural-language due examples ('tomorrow', 'Friday 3pm', '2026-04-05'), sample list names, and the priority enum values, going beyond the terse schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Add a new reminder to Apple Reminders'), which cleanly separates it from the edit/complete/delete/list siblings by name semantics. It does not explicitly name a sibling or a disambiguating condition, so it falls short of the top mark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a rich set of trigger phrases ('remember something, create a task, set a to-do, schedule a deadline') that let an agent match intent confidently. However, it never states when NOT to use it (e.g., use edit_reminder for existing items) or names an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_remindersComplete RemindersA
Idempotent

Mark one or more Apple Reminders as complete. Use when the user says they finished a task, did something, or wants to check off a reminder.

Args:

  • ids (string[], required): Array of index numbers or ID prefixes from show_reminders output

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesIndexes or ID prefixes to mark complete

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds no further behavioral context such as whether completion is reversible, what happens with invalid IDs, or any authentication requirements. It mostly restates the core action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose, followed by usage guidance and a compact Args section. Every sentence earns its place with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with rich annotations and a fully described input schema, the description covers what it does, when to use it, and where IDs come from. It does not explain return values, but no output schema exists and the omission is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by stating that the IDs are 'from show_reminders output,' which tells the agent where to obtain valid values and is not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Mark one or more Apple Reminders as complete.' It is clear what the tool does, but it does not explicitly differentiate itself from siblings like edit_reminder or delete_reminders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage conditions: 'Use when the user says they finished a task, did something, or wants to check off a reminder.' It lacks explicit when-not-to-use guidance or named alternatives, but the context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_remindersDelete RemindersA
Destructive

Delete one or more Apple Reminders permanently. Use when the user wants to remove a reminder entirely (not just complete it).

Args:

  • ids (string[], required): Array of index numbers or ID prefixes from show_reminders output

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesIndexes or ID prefixes to delete

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description reinforces this with 'permanently' (signalling no undo) and tells the agent where valid ids come from, but says nothing about permission requirements or behavior on invalid/stale ids.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the destructive scope and the disambiguation front-loaded, followed by a minimal Args block. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with no output schema, the description covers what the tool does, the permanence of the effect, and where ids come from. It stops short of covering failure modes (nonexistent ids, partial batch failure), which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds real meaning: it explains that ids are 'index numbers or ID prefixes from show_reminders output', telling the agent how to source valid values rather than just their type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete one or more Apple Reminders') and immediately distinguishes the operation from its nearest sibling by noting it removes a reminder 'entirely (not just complete it)'. An agent can separate this from complete_reminders without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use condition ('when the user wants to remove a reminder entirely'), which implicitly contrasts with the completion path. It does not name complete_reminders or edit_reminder explicitly as alternatives, so routing is clear but not fully enumerated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_reminderEdit ReminderB
Idempotent

Edit an existing Apple Reminder. Use when the user wants to change a reminder's title, due date, notes, priority, move it to another list, or mark it complete/incomplete.

Args:

  • id (string, required): Index number or ID prefix from show_reminders output

  • title (string, optional): New title

  • list (string, optional): Move to a different list

  • due (string, optional): New due date

  • notes (string, optional): New notes

  • priority (string, optional): none, low, medium, high

  • clear_due (boolean, optional): Clear the due date

  • complete (boolean, optional): Mark as completed

  • incomplete (boolean, optional): Mark as incomplete

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesIndex or ID prefix from show output
dueNoNew due date
listNoMove to list
notesNoNew notes
titleNoNew title
completeNoMark completed
priorityNoPriority level
clear_dueNoClear the due date
incompleteNoMark incomplete

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds only mild behavioral detail (clear_due as a distinct flag, complete/incomplete), and is silent on edge cases such as what happens if both complete and incomplete are sent, or what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is well front-loaded, but the entire Args block duplicates a schema that is already 100% described, so a substantial share of the text does not earn its place. Sized adequately but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description could say what a successful edit returns or confirms, and it does not. It does cover the required id source and the mutation's field set, making it minimally sufficient for a 9-parameter mutation tool but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description restates each parameter and adds one small piece of meaning beyond the schema ('Index number or ID prefix from show_reminders output'), but most of the arg list is redundant with the schema text rather than adding new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Edit an existing Apple Reminder') and enumerates the editable surface (title, due date, notes, priority, list, completion), which lets an agent distinguish it from add_reminder and delete_reminders. It stops short of explicitly naming any sibling as the alternative, so it is clear but not sibling-differentiating by itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear positive trigger ('Use when the user wants to change...'), which is real usage guidance. However, marking complete/incomplete overlaps with the complete_reminders sibling, and the description never says when to prefer that tool over this one, leaving a genuine routing ambiguity unresolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_reminder_listsList Reminder ListsA
Read-onlyIdempotent

List all Apple Reminder lists, or show the contents of a specific list. Use when the user wants to know what lists they have or browse a specific list.

Args:

  • name (string, optional): If provided, shows reminders in that list. If omitted, lists all available lists.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoList name — omit to list all lists, provide to show contents

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds the meaningful behavioral detail that the tool has two modes depending on the name argument, but says nothing about ordering, counts, or output shape; with annotations carrying the safety profile, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences plus an Args block; the dual-mode behavior is stated up front before the parameter restatement. The Args section is mildly redundant with the schema description but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter, read-only listing tool with no output schema, the description covers both call modes and when to use it. Missing only edge-case behavior (e.g., unknown list name) and result ordering, which are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameter's schema description ('omit to list all lists, provide to show contents') states the same dual-mode semantics as the description text. The description adds no syntax, format, or matching-behavior detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List all Apple Reminder lists') and adds a distinct second mode ('show the contents of a specific list'). It is clear what the tool does, though it does not explicitly distinguish itself from the near-sounding sibling show_reminders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context: 'Use when the user wants to know what lists they have or browse a specific list.' However, it names no alternatives and does not clarify when to prefer show_reminders or manage_reminder_list over this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_reminder_listManage Reminder ListA
Destructive

Create, rename, or delete an Apple Reminder list. Use when the user wants to organize their reminders by creating new lists, renaming existing ones, or removing lists.

Args:

  • name (string, required): The list name to act on

  • action (string, required): "create", "rename", or "delete"

  • new_name (string, optional): Required when action is "rename" — the new name for the list

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesList name
actionYesAction to perform
new_nameNoNew name (required for rename)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered structurally. The description confirms the destructive path via 'delete' but adds nothing beyond that — no note on whether deletion is permanent, whether a list must be empty first, or what happens to contained reminders.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is tight and front-loaded, leading with the action set. The Args block duplicates the schema, which is slightly redundant, but it keeps the conditional 'required for rename' rule visible without forcing a schema read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-action mutation tool with no output schema and annotations covering the destructive/idempotency profile, the description is nearly complete — the action set, target resource, and conditional parameter rule are all present. Only the post-delete consequences of affecting contained reminders are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema documents all three parameters, including the enum and the conditional note for new_name. The Args block in the description largely mirrors the schema, adding only marginal clarity, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs (create, rename, delete) against a specific resource type (Apple Reminder list), and the resource distinguishes it cleanly from siblings like add_reminder and show_reminders that operate on individual reminders rather than lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives an explicit when-to-use trigger ('when the user wants to organize their reminders by creating new lists, renaming existing ones, or removing lists'). It stops short of naming an alternative tool for adjacent needs such as listing or editing reminders, but the context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_remindersShow RemindersA
Read-onlyIdempotent

Show reminders from Apple Reminders. Use when the user asks what they need to do, what's on their list, what's due, overdue, or wants to see their agenda/tasks.

Args:

  • filter (string, optional): today, tomorrow, week, overdue, upcoming, completed, all, or a date string. Defaults to "upcoming".

  • list (string, optional): Limit to a specific reminder list

ParametersJSON Schema
NameRequiredDescriptionDefault
listNoLimit to a specific reminder list
filterNoFilter: today, tomorrow, week, overdue, upcoming, completed, all, or a dateupcoming

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the default filter behavior, which is genuinely useful, but says nothing about result ordering, limits, or how completed items appear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, follows with usage triggers, and closes with a compact arg list. The Args section largely duplicates the schema, but it is brief and scannable rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter, read-only list tool with no output schema and full annotation coverage, the description supplies everything needed to invoke it correctly. Minor gaps (return shape, ordering) are tolerable given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters including the enum values and default. The description restates the filter options and the default without adding format details (e.g., accepted date string syntax), which is the baseline 3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Show reminders from Apple Reminders'), which cleanly separates it from the write-oriented siblings (add_reminder, edit_reminder, delete_reminders). It does not explicitly distinguish itself from list_reminder_lists, but the resource difference is implied clearly enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete trigger phrasing — 'what they need to do', 'what's on their list', 'what's due, overdue', 'agenda/tasks' — which maps well onto user intent. It lacks explicit exclusions or a named alternative (e.g., when to prefer complete_reminders), so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.0.0
    • First observedadd_reminder
    • First observedcomplete_reminders
    • First observeddelete_reminders
    • First observededit_reminder
    • First observedlist_reminder_lists
    • First observedmanage_reminder_list
    • First observedshow_reminders

TDQS

A3.6/5.0

Scored across 7 tools

Disambiguation3/5

Most tools are distinct, but complete_reminders overlaps with edit_reminder's complete/incomplete flags, and list_reminder_lists (which can show a list's contents) overlaps with show_reminders' list filter. The descriptions mitigate this somewhat but boundaries remain blurry.

Naming Consistency3/5

Mostly verb_noun, but plurality is inconsistent (add_reminder vs show_reminders/complete_reminders/delete_reminders) and list_reminder_lists is an awkward verb_noun_noun construction. Still readable and mostly predictable.

Tool Count5/5

Seven tools is well-scoped for a reminders domain, with each tool earning its place across create/read/edit/complete/delete/list-management operations.

Completeness4/5

Covers the full reminder lifecycle (add, show, edit, complete, delete) plus list management, leaving few gaps. Minor omissions like text search or batch reassignment are workable around via filters and edit.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers