Skip to main content
Glama
Doist
by Doist

update-reminders

DestructiveIdempotent

Modify existing relative, absolute, or location reminders by specifying type and ID, and include only the fields that need to change.

Instructions

Update existing reminders. Each reminder must specify its type ("relative", "absolute", or "location") and ID. Only include fields that need to change.

Input Schema

NameRequiredDescriptionDefault
remindersYesArray of reminders to update (max 25). Each must include the reminder type and ID. Only include fields that need to change.

Output Schema

NameRequiredDescriptionDefault
failuresYesReminders that could not be updated, with the reason for each.
remindersYesThe updated reminders.
totalCountYesTotal reminders updated.
appliedOperationsYes
updatedReminderIdsYesIDs of updated reminders.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv13.8.0
    • addedOutput schema / properties / appliedOperations
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "failureCount": {
      +      "type": "number"
      +    },
      +    "updateCount": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "updateCount",
      +    "failureCount"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / failures
      Added value: +{
      +  "description": "Reminders that could not be updated, with the reason for each.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "item": {
      +        "description": "Usually the ID of the item that failed.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "item",
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "reminders",
      -  "totalCount",
      -  "updatedReminderIds"
      -]New value: +[
      +  "reminders",
      +  "totalCount",
      +  "updatedReminderIds",
      +  "failures",
      +  "appliedOperations"
      +]
  2. Changed2 schema fields changedv13.7.0
    • changedInput schema / properties / reminders / items / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "id": {
      -        "description": "The ID of the relative reminder to update.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "isUrgent": {
      -        "description": "Whether this is an urgent reminder. Applies to relative and absolute reminders.",
      -        "type": "boolean"
      -      },
      -      "minuteOffset": {
      -        "description": "New minute offset before task due time.",
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "service": {
      -        "description": "New delivery method: \"email\" or \"push\".",
      -        "enum": [
      -          "email",
      -          "push"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "relative",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "due": {
      -        "description": "New due date/time for the reminder.",
      -        "properties": {
      -          "date": {
      -            "description": "Due date in YYYY-MM-DD format.",
      -            "type": "string"
      -          },
      -          "lang": {
      -            "description": "Language for parsing the due string, e.g. \"en\".",
      -            "type": "string"
      -          },
      -          "string": {
      -            "description": "Natural language due string, e.g. \"tomorrow at 3pm\".",
      -            "type": "string"
      -          },
      -          "timezone": {
      -            "description": "Timezone for the reminder, e.g. \"America/New_York\".",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "id": {
      -        "description": "The ID of the absolute reminder to update.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "isUrgent": {
      -        "description": "Whether this is an urgent reminder. Applies to relative and absolute reminders.",
      -        "type": "boolean"
      -      },
      -      "service": {
      -        "description": "New delivery method: \"email\" or \"push\".",
      -        "enum": [
      -          "email",
      -          "push"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "absolute",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "id": {
      -        "description": "The ID of the location reminder to update.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "locLat": {
      -        "description": "New latitude.",
      -        "type": "string"
      -      },
      -      "locLong": {
      -        "description": "New longitude.",
      -        "type": "string"
      -      },
      -      "locTrigger": {
      -        "description": "New trigger condition: \"on_enter\" or \"on_leave\".",
      -        "enum": [
      -          "on_enter",
      -          "on_leave"
      -        ],
      -        "type": "string"
      -      },
      -      "name": {
      -        "description": "New location name.",
      -        "type": "string"
      -      },
      -      "radius": {
      -        "description": "New radius in meters.",
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "type": {
      -        "const": "location",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "id"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "id": {
      +        "description": "The ID of the relative reminder to update.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "isUrgent": {
      +        "description": "Whether this is an urgent reminder. Applies to relative and absolute reminders.",
      +        "type": "boolean"
      +      },
      +      "minuteOffset": {
      +        "description": "New minute offset before task due time.",
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "notifyUser": {
      +        "description": "Who to remind: user ID, email, name, or \"me\". Must collaborate on the task's project. Omit to keep the current one.",
      +        "type": "string"
      +      },
      +      "service": {
      +        "description": "New delivery method: \"email\" or \"push\".",
      +        "enum": [
      +          "email",
      +          "push"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "relative",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "due": {
      +        "description": "New due date/time for the reminder.",
      +        "properties": {
      +          "date": {
      +            "description": "Due date in YYYY-MM-DD format.",
      +            "type": "string"
      +          },
      +          "lang": {
      +            "description": "Language for parsing the due string, e.g. \"en\".",
      +            "type": "string"
      +          },
      +          "string": {
      +            "description": "Natural language due string, e.g. \"tomorrow at 3pm\".",
      +            "type": "string"
      +          },
      +          "timezone": {
      +            "description": "Timezone for the reminder, e.g. \"America/New_York\".",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "id": {
      +        "description": "The ID of the absolute reminder to update.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "isUrgent": {
      +        "description": "Whether this is an urgent reminder. Applies to relative and absolute reminders.",
      +        "type": "boolean"
      +      },
      +      "notifyUser": {
      +        "description": "Who to remind: user ID, email, name, or \"me\". Must collaborate on the task's project. Omit to keep the current one.",
      +        "type": "string"
      +      },
      +      "service": {
      +        "description": "New delivery method: \"email\" or \"push\".",
      +        "enum": [
      +          "email",
      +          "push"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "absolute",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "id": {
      +        "description": "The ID of the location reminder to update.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "locLat": {
      +        "description": "New latitude.",
      +        "type": "string"
      +      },
      +      "locLong": {
      +        "description": "New longitude.",
      +        "type": "string"
      +      },
      +      "locTrigger": {
      +        "description": "New trigger condition: \"on_enter\" or \"on_leave\".",
      +        "enum": [
      +          "on_enter",
      +          "on_leave"
      +        ],
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "New location name.",
      +        "type": "string"
      +      },
      +      "notifyUser": {
      +        "description": "Who to remind: user ID, email, name, or \"me\". Must collaborate on the task's project. Omit to keep the current one.",
      +        "type": "string"
      +      },
      +      "radius": {
      +        "description": "New radius in meters.",
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "type": {
      +        "const": "location",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "id"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / properties / reminders / items / properties / notifyUid
      Added value: +{
      +  "description": "User ID the reminder notifies.",
      +  "type": "string"
      +}
  3. Changed2 schema fields changedv13.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  4. Changed15 schema fields changedv12.5.3
    • changedOutput schema / properties / reminders / items / properties / due / description
      Previous value: -"Due date info (absolute and sometimes relative reminders)."New value: +"Absolute, and sometimes relative, reminders."
    • changedOutput schema / properties / reminders / items / properties / due / properties / date / description
      Previous value: -"Due date in ISO format."New value: +"ISO 8601."
    • changedOutput schema / properties / reminders / items / properties / due / properties / datetime / description
      Previous value: -"Due datetime in ISO format."New value: +"ISO 8601."
    • removedOutput schema / properties / reminders / items / properties / due / properties / isRecurring / description
      Removed value: -"Whether this is a recurring reminder."
    • removedOutput schema / properties / reminders / items / properties / due / properties / timezone / description
      Removed value: -"Timezone of the reminder."
    • removedOutput schema / properties / reminders / items / properties / id / description
      Removed value: -"The unique ID of the reminder."
    • changedOutput schema / properties / reminders / items / properties / isUrgent / description
      Previous value: -"Whether this is an urgent reminder (relative and absolute reminders only)."New value: +"Relative and absolute reminders only."
    • changedOutput schema / properties / reminders / items / properties / locLat / description
      Previous value: -"Latitude (location reminders only)."New value: +"Location reminders only."
    • changedOutput schema / properties / reminders / items / properties / locLong / description
      Previous value: -"Longitude (location reminders only)."New value: +"Location reminders only."
    • changedOutput schema / properties / reminders / items / properties / locTrigger / description
      Previous value: -"Trigger type: on_enter or on_leave (location reminders only)."New value: +"Location reminders only."
    • changedOutput schema / properties / reminders / items / properties / minuteOffset / description
      Previous value: -"Minutes before due time to trigger (relative reminders only)."New value: +"Minutes before due. Relative reminders only."
    • changedOutput schema / properties / reminders / items / properties / name / description
      Previous value: -"Location name (location reminders only)."New value: +"Location name. Location reminders only."
    • changedOutput schema / properties / reminders / items / properties / radius / description
      Previous value: -"Geofence radius in meters (location reminders only)."New value: +"Geofence radius in metres. Location reminders only."
    • removedOutput schema / properties / reminders / items / properties / taskId / description
      Removed value: -"The task ID this reminder belongs to."
    • removedOutput schema / properties / reminders / items / properties / type / description
      Removed value: -"The type of reminder: relative, absolute, or location."
  5. First observedv10.4.2

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already disclose the significant traits: destructiveHint=true, idempotentHint=true, openWorldHint=true, readOnlyHint=false, so the safety burden is largely carried. The description usefully adds patch semantics ("Only include fields that need to change"), which clarifies that omitted fields are preserved rather than cleared. It adds nothing about what happens on an invalid/unknown ID, whether the type discriminator must match the existing reminder's type, or permission requirements.

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?

Three short sentences with no filler, and the core action is front-loaded ahead of the per-item requirement. The final sentence is slightly redundant with the schema's "reminders" property description, but the whole block is compact and easy to scan.

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?

An output schema exists, so return values need not be explained, and the annotations already cover the mutation/destructive profile. What remains missing for a destructive batch mutation (max 25 items) is how to obtain valid reminder IDs, what a failed partial batch does, and whether the type field must match the stored reminder type — meaningful gaps for correct invocation.

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 there is effectively one top-level parameter, so the schema already explains the type/id/field-level semantics in detail. The description restates the type discrimination ("relative", "absolute", "location") which is the one genuinely helpful addition, but adds no format or constraint detail beyond the schema — 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 opens with a specific verb and resource: "Update existing reminders." It names the discriminated type field and the ID requirement, which tells an agent the unit of work is a batch array of identified reminder objects. It does not explicitly distinguish itself from the sibling update_* tools or the create counterpart (create_reminder), but the verb+noun is unambiguous.

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?

"Update existing reminders" implies the mutation use case versus create/find_reminders, and "Only include fields that need to change" gives useful partial-update guidance. However, the description states no when-not conditions, no prerequisite that the reminder must already exist and its ID be known, and no pointer to find_reminders for discovering IDs — those conditions are left to inference.

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