Skip to main content
Glama

Set work package reminder

set_work_package_reminder
Idempotent

Set, update, or clear a private reminder on a work package so it resurfaces at a chosen time. Use it to be notified before deadlines or follow-ups.

Instructions

Set, change or clear your personal reminder on a work package.

Use this when something should resurface later: "remind me about this on Monday", "ping me an hour before the release". Reminders are private — only you see yours, and only you are notified. The tool upserts: it looks for your active reminder on the work package and creates one if there is none, updates it if there is. Returns action (created/updated/deleted/unchanged) and the resulting reminder.

Passing remind_at=null deletes the reminder. That is the documented way to clear it rather than a destructive operation — nothing but your own pending notification is removed, the work package and its history are untouched — so this tool does not ask for confirm. Set a new time to get it back.

Pitfalls. OpenProject allows exactly one active reminder per work package per person, so a second "create" becomes an update of the first — there is no way to stack two. remind_at must carry a timezone; a bare '2026-08-03T09:00' is refused rather than guessed at. A reminder in the past is rejected by the instance. Once a reminder has fired it disappears from the API, so a later call creates a fresh one rather than reviving it. Reminders are personal: you cannot set one for a colleague — add them as a watcher or mention them in a comment instead.

Cross-references: list_reminders shows everything you have pending; add_work_package_watcher notifies someone about changes rather than at a chosen time; add_work_package_comment with an @-mention is how you get another person's attention.

Input Schema

NameRequiredDescriptionDefault
noteNoShort text shown with the reminder ('check the staging deploy'). Omit to leave an existing note untouched; pass an empty string to clear it.
remind_atNoWhen to be reminded, as an ISO 8601 datetime WITH a timezone, e.g. '2026-08-03T09:00:00Z'. Pass null to delete the existing reminder. Omit the parameter entirely to keep the current time and only change the note.__unchanged__
work_package_idYesWork package to be reminded about. Ids come from search_work_packages, list_work_packages or get_work_package.

Output Schema

NameRequiredDescriptionDefault
actionYes
messageYes
reminderNo
work_package_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv0.4.0
    • removedOutput schema / description
      Removed value: -"Outcome of ``set_work_package_reminder``."
    • removedOutput schema / properties / action / description
      Removed value: -"What actually happened: 'created' a new reminder, 'updated' the existing one, 'deleted' it, or 'unchanged' when there was nothing to clear."
    • removedOutput schema / properties / message / description
      Removed value: -"Human-readable confirmation."
    • changedOutput schema / properties / reminder / anyOf
      Previous value: -[
      -  {
      -    "description": "One personal reminder on a work package.",
      -    "properties": {
      -      "creator": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "description": "A reference to another resource. Canonical output shape.",
      -            "properties": {
      -              "id": {
      -                "anyOf": [
      -                  {
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Resource id."
      -              },
      -              "name": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Human-readable name."
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Who created it — always the authenticated user."
      -      },
      -      "id": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Reminder id. Personal and short-lived — set_work_package_reminder finds it by work package, so this is for reporting, not for addressing."
      -      },
      -      "note": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Free-text note shown with the reminder; null when unset."
      -      },
      -      "remind_at": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "ISO 8601 UTC timestamp the reminder fires at."
      -      },
      -      "work_package": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "description": "A reference to another resource. Canonical output shape.",
      -            "properties": {
      -              "id": {
      -                "anyOf": [
      -                  {
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Resource id."
      -              },
      -              "name": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "default": null,
      -                "description": "Human-readable name."
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Work package the reminder is attached to."
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "creator": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "id": {
      +                "type": [
      +                  "integer",
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "name": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "id": {
      +        "type": [
      +          "integer",
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "note": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "remind_at": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "work_package": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "id": {
      +                "type": [
      +                  "integer",
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "name": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / reminder / default
      Removed value: -null
    • removedOutput schema / properties / reminder / description
      Removed value: -"The reminder after the call; the deleted one when action='deleted', null when there was none."
    • removedOutput schema / properties / work_package_id / description
      Removed value: -"Work package whose reminder was set or cleared."
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare idempotent/destructive/openWorld, but the description goes much further: it explains that null deletes rather than destroys, that no confirm is required because nothing but the user's own notification is removed, the one-reminder-per-person constraint, timezone requirement, past-time rejection, and post-fire disappearance.

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 core action, then a clearly labeled 'Pitfalls' block and cross-references. It is longer than strictly necessary, but each paragraph carries distinct operational information; the parenthetical asides are the only mild slack.

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

Completeness5/5

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

For a three-parameter upsert/delete tool with an output schema, the description covers everything needed to call it correctly: deletion path, constraints, edge cases, and the return action values. Even though the output schema exists, restating the action vocabulary is harmless reinforcement.

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, but the description adds real meaning beyond it: remind_at=null deletes, a timezone is mandatory and a bare local timestamp is refused, and omitting the parameter preserves the existing note. The note/empty-string semantics are left to the schema.

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?

The first sentence names a specific verb set and resource ('personal reminder on a work package') and immediately clarifies the upsert semantics. It is clearly distinguishable from nearby siblings like add_work_package_watcher and add_work_package_comment, which are explicitly called out later.

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

Usage Guidelines5/5

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

Gives concrete when-to-use triggers ('remind me about this on Monday') and names the alternatives with the condition that selects each: list_reminders for pending items, watchers for change notifications, @-mention comments for other people.

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