Skip to main content
Glama

Create event notifications

clm_create_event_reminders
DestructiveIdempotent

Add notifications to custom/supported events; email recipients when due. Item failures keep their reason in results; resend only the failed items with a new idempotencyKey and reuse the original key only for an identical full replay.

Input Schema

NameRequiredDescriptionDefault
remindersYesNotification changes
idempotencyKeyYesIdentical-input retry key

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / idempotencyKey / description
      Added value: +"Identical-input retry key"
    • addedInput schema / properties / reminders / description
      Added value: +"Notification changes"
    • changedInput schema / properties / reminders / items / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "anchorType": {
      -        "const": "custom",
      -        "type": "string"
      -      },
      -      "contractId": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "eventId": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "message": {
      -        "anyOf": [
      -          {
      -            "maxLength": 5000,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "offsetDirection": {
      -        "enum": [
      -          "before",
      -          "on",
      -          "after"
      -        ],
      -        "type": "string"
      -      },
      -      "offsetUnit": {
      -        "enum": [
      -          "days",
      -          "weeks",
      -          "months",
      -          "quarters",
      -          "years"
      -        ],
      -        "type": "string"
      -      },
      -      "offsetValue": {
      -        "maximum": 2147483647,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "recipient": {
      -        "oneOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "type": {
      -                "const": "contract_owner",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "type": {
      -                "const": "user",
      -                "type": "string"
      -              },
      -              "userId": {
      -                "format": "uuid",
      -                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type",
      -              "userId"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "anchorType",
      -      "eventId",
      -      "offsetValue",
      -      "offsetUnit",
      -      "offsetDirection",
      -      "recipient",
      -      "contractId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "anchorType": {
      -        "const": "system",
      -        "type": "string"
      -      },
      -      "contractId": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "message": {
      -        "anyOf": [
      -          {
      -            "maxLength": 5000,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "offsetDirection": {
      -        "enum": [
      -          "before",
      -          "on",
      -          "after"
      -        ],
      -        "type": "string"
      -      },
      -      "offsetUnit": {
      -        "enum": [
      -          "days",
      -          "weeks",
      -          "months",
      -          "quarters",
      -          "years"
      -        ],
      -        "type": "string"
      -      },
      -      "offsetValue": {
      -        "maximum": 2147483647,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "recipient": {
      -        "oneOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "type": {
      -                "const": "contract_owner",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "type": {
      -                "const": "user",
      -                "type": "string"
      -              },
      -              "userId": {
      -                "format": "uuid",
      -                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type",
      -              "userId"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "systemType": {
      -        "enum": [
      -          "notice",
      -          "end",
      -          "open_ended_review"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "anchorType",
      -      "systemType",
      -      "offsetValue",
      -      "offsetUnit",
      -      "offsetDirection",
      -      "recipient",
      -      "contractId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "anchorType": {
      +        "const": "custom",
      +        "type": "string"
      +      },
      +      "contractId": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "eventId": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "message": {
      +        "maxLength": 5000,
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "offsetDirection": {
      +        "enum": [
      +          "before",
      +          "on",
      +          "after"
      +        ],
      +        "type": "string"
      +      },
      +      "offsetUnit": {
      +        "enum": [
      +          "days",
      +          "weeks",
      +          "months",
      +          "quarters",
      +          "years"
      +        ],
      +        "type": "string"
      +      },
      +      "offsetValue": {
      +        "maximum": 2147483647,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "recipient": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "type": {
      +                "const": "contract_owner",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "type": {
      +                "const": "user",
      +                "type": "string"
      +              },
      +              "userId": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type",
      +              "userId"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "anchorType",
      +      "eventId",
      +      "offsetValue",
      +      "offsetUnit",
      +      "offsetDirection",
      +      "recipient",
      +      "contractId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "anchorType": {
      +        "const": "system",
      +        "type": "string"
      +      },
      +      "contractId": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "message": {
      +        "maxLength": 5000,
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "offsetDirection": {
      +        "enum": [
      +          "before",
      +          "on",
      +          "after"
      +        ],
      +        "type": "string"
      +      },
      +      "offsetUnit": {
      +        "enum": [
      +          "days",
      +          "weeks",
      +          "months",
      +          "quarters",
      +          "years"
      +        ],
      +        "type": "string"
      +      },
      +      "offsetValue": {
      +        "maximum": 2147483647,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "recipient": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "type": {
      +                "const": "contract_owner",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "type": {
      +                "const": "user",
      +                "type": "string"
      +              },
      +              "userId": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type",
      +              "userId"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "systemType": {
      +        "enum": [
      +          "notice",
      +          "end",
      +          "open_ended_review"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "anchorType",
      +      "systemType",
      +      "offsetValue",
      +      "offsetUnit",
      +      "offsetDirection",
      +      "recipient",
      +      "contractId"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -{
      -  "$schema": "http://json-schema.org/draft-07/schema#",
      -  "additionalProperties": false,
      -  "properties": {
      -    "results": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "contractId": {
      -            "allOf": [
      -              {
      -                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                "type": "string"
      -              },
      -              {
      -                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                "type": "string"
      -              }
      -            ],
      -            "type": "string"
      -          },
      -          "error": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "errorCode": {
      -            "anyOf": [
      -              {
      -                "enum": [
      -                  "conflict",
      -                  "denied",
      -                  "invalid",
      -                  "not_found",
      -                  "failed"
      -                ],
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "ok": {
      -            "type": "boolean"
      -          },
      -          "reminder": {
      -            "anyOf": [
      -              {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "anchorType": {
      -                    "enum": [
      -                      "custom",
      -                      "system"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "contractId": {
      -                    "allOf": [
      -                      {
      -                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                        "type": "string"
      -                      },
      -                      {
      -                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "eventId": {
      -                    "anyOf": [
      -                      {
      -                        "allOf": [
      -                          {
      -                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                            "type": "string"
      -                          },
      -                          {
      -                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                            "type": "string"
      -                          }
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "id": {
      -                    "allOf": [
      -                      {
      -                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                        "type": "string"
      -                      },
      -                      {
      -                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "isDisabled": {
      -                    "type": "boolean"
      -                  },
      -                  "message": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "offsetDirection": {
      -                    "enum": [
      -                      "before",
      -                      "on",
      -                      "after"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "offsetUnit": {
      -                    "enum": [
      -                      "days",
      -                      "weeks",
      -                      "months",
      -                      "quarters",
      -                      "years"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "offsetValue": {
      -                    "maximum": 9007199254740991,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "recipient": {
      -                    "oneOf": [
      -                      {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "type": {
      -                            "const": "contract_owner",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "type"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "type": {
      -                            "const": "user",
      -                            "type": "string"
      -                          },
      -                          "userId": {
      -                            "allOf": [
      -                              {
      -                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                                "type": "string"
      -                              },
      -                              {
      -                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                                "type": "string"
      -                              }
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "type",
      -                          "userId"
      -                        ],
      -                        "type": "object"
      -                      }
      -                    ]
      -                  },
      -                  "systemType": {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "notice",
      -                          "end",
      -                          "renewal",
      -                          "open_ended_review"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "updatedAt": {
      -                    "allOf": [
      -                      {
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      {
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "id",
      -                  "contractId",
      -                  "anchorType",
      -                  "eventId",
      -                  "systemType",
      -                  "offsetValue",
      -                  "offsetUnit",
      -                  "offsetDirection",
      -                  "recipient",
      -                  "message",
      -                  "isDisabled",
      -                  "updatedAt"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "reminderId": {
      -            "anyOf": [
      -              {
      -                "allOf": [
      -                  {
      -                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                    "type": "string"
      -                  },
      -                  {
      -                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                    "type": "string"
      -                  }
      -                ],
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "contractId",
      -          "reminderId",
      -          "ok",
      -          "reminder",
      -          "error",
      -          "errorCode"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "results"
      -  ],
      -  "type": "object"
      -}New value: +null
  2. First observed

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already disclose destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=false, and the description adds genuinely new behavior: emails go out to recipients when due, and partial item failures return their reason in results rather than aborting the batch. It stops short of stating required contract permissions, whether reminders can be scheduled in the past, or the 100-item batch ceiling already enforced by the schema.

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 sentences, no filler, with the purpose front-loaded before the retry semantics. The second sentence is dense and slightly run-on, but every clause carries distinct operational information.

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 destructive batch mutation with a deeply nested oneOf schema and no output schema, the description covers the essentials an agent needs: side effects (outbound email), partial-failure reporting, and idempotency key discipline. Missing pieces are access/permission prerequisites and any conflict behavior when a reminder already exists for the same event and recipient.

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 the schema's terse 'Identical-input retry key' does not: a new key is required for a partial (failed-items-only) resend, and the original key may only be reused for an identical full replay. The 'custom/supported events' phrasing also clarifies the two anchorType branches.

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 concrete verb and resource ('Add notifications to custom/supported events') plus the delivery mechanism ('email recipients when due'), and the custom/supported split maps to the anchorType union in the schema. It does not name its siblings clm_update_event_reminders or clm_delete_event_reminders, so the create-vs-update distinction is left implicit.

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?

Use-as-create is only implied by 'Add notifications'; there is no explicit statement of when to call this rather than clm_update_event_reminders or clm_delete_event_reminders. The retry guidance ('resend only the failed items with a new idempotencyKey') is genuinely useful operational guidance, but it covers re-invocation of this same tool, not tool selection.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.