Skip to main content
Glama

create_reminder

Create a reminder with a title, due date, notes, priority, and recurrence rules, assigned to a specific Reminders list. Handles local-time scheduling and repeating tasks via RRULE.

Instructions

Create a reminder. due/start ISO datetime — naive = local time, call now() first; priority 0–9; recurrence an RRULE with FREQ, INTERVAL, COUNT, UNTIL, BYDAY (ordinals such as 2TU or -1FR for monthly and yearly), BYMONTHDAY, BYMONTH, BYYEARDAY, BYSETPOS; BYWEEKNO, BYHOUR, BYMINUTE, BYSECOND and WKST are refused. This tool cannot set tags or make a subtask (no public API; read-only via reminders()). Side effect (creates); needs EventKit (Reminders) access. Target a list via list_name — a list name OR a list Pointer id (from reminder_lists). An ambiguous name is refused (with the candidate ids listed), never guessed.

Input Schema

NameRequiredDescriptionDefault
dueNo
notesNo
startNo
titleYes
priorityNo
list_nameNo
recurrenceNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.15.1

TDQS

A4.6/5.0
Behavior5/5

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

With annotations only declaring readOnlyHint=false and destructiveHint=false, the description adds the substantive traits: it creates (side effect), requires EventKit/Reminders access, cannot set tags or subtasks due to API limits, and refuses ambiguous list names while listing candidate ids. This is exactly the extra context the annotations cannot carry.

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-loaded with the action, then parameter rules, then side-effect/constraint notes. Dense but every clause carries information; the recurrence allow/deny list is long but prevents a whole class of failed calls.

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?

Output schema exists so return values need no explanation, and the mutation, permission and targeting behaviors are all covered. The only untouched parameters are title and notes, which are self-evident from the schema.

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

Parameters5/5

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

Schema description coverage is 0%, so the description has to carry the load and it does: due/start are ISO datetimes where naive means local time, priority is 0–9, recurrence is an RRULE with an explicit allowed subset (FREQ, INTERVAL, COUNT, UNTIL, BYDAY with ordinals, BYMONTHDAY, BYMONTH, BYYEARDAY, BYSETPOS) and refused parts (BYWEEKNO, BYHOUR, BYMINUTE, BYSECOND, WKST), and list_name accepts a name or Pointer id.

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?

Opens with a specific verb+resource ('Create a reminder') and immediately scopes what is excluded (tags, subtasks). An agent can distinguish it from update_reminder, complete_reminder and create_reminder_list without opening any 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 concrete preconditions for use: call now() first for naive datetimes, target a list via list_name or a Pointer id from reminder_lists, and note that ambiguous names are refused rather than guessed. It does not explicitly state when to use create_reminder vs update_reminder, but the sibling names make that inference safe.

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