Skip to main content
Glama

update_recurring_calendar_event

Update a recurring calendar event. Changes to title/description/notes/reminders patch existing instances. Changes to frequency/dates/time regenerate future instances.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesTemplate id from create_recurring_calendar_event.
notesNoNew notes.
titleNoNew title, patched onto existing instances.
endDateNoNew last date, YYYY-MM-DD. Empty string leaves it unbounded.
durationNoLength of each instance, ISO 8601 duration e.g. 'PT30M'.
isAllDayNoTrue for all-day instances, false for timed. An all-day instance starts at midnight of its occurrence date in the template timezone (stored in UTC; omit startTime) and ends duration later (no end without a duration), so a duration of one day or more makes each instance span that many whole days.
locationNoReplaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes.
timezoneNoIANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST.
startDateNoNew first-instance date, YYYY-MM-DD. Empty string clears it.
startTimeNoNew local start time, HH:mm:ss.
descriptionNoNew description, patched onto existing instances.
cronExpressionNoNew interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax.
maxOccurrencesNoNew cap on instances generated.
reminderOffsetMinutesNoNew reminder lead times, in minutes before each occurrence starts. Send the full list: it replaces the current one. [] clears all reminders; omit to keep them. A change also applies to existing instances. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 40320 (4 weeks, the most for a repeating item); a week is 10080. Up to 5 values. An all-day event counts from 00:00 on its first day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before the start, or up to 15 minutes earlier. Every household member is reminded.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYes
titleNo
messageNo
variantNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / isAllDay / description
      Previous value: -"True for all-day instances, false for timed."New value: +"True for all-day instances, false for timed. An all-day instance starts at midnight of its occurrence date in the template timezone (stored in UTC; omit startTime) and ends duration later (no end without a duration), so a duration of one day or more makes each instance span that many whole days."
    • addedInput schema / properties / reminderOffsetMinutes
      Added value: +{
      +  "description": "New reminder lead times, in minutes before each occurrence starts. Send the full list: it replaces the current one. [] clears all reminders; omit to keep them. A change also applies to existing instances. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 40320 (4 weeks, the most for a repeating item); a week is 10080. Up to 5 values. An all-day event counts from 00:00 on its first day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before the start, or up to 15 minutes earlier. Every household member is reminded.",
      +  "examples": [
      +    [
      +      1440,
      +      10080
      +    ]
      +  ],
      +  "items": {
      +    "description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
      +    "examples": [
      +      1440
      +    ],
      +    "maximum": 40320,
      +    "minimum": 60,
      +    "multipleOf": 60,
      +    "type": "integer"
      +  },
      +  "maxItems": 5,
      +  "type": "array",
      +  "uniqueItems": true
      +}
  2. Changed30 schema fields changed
    • changedInput schema / properties / cronExpression / description
      Previous value: -"New recurrence interval, NOT a cron expression despite the field name. Format is 'N Unit' where N is a positive integer and Unit is one of Day, Week, Month, Year (case-sensitive), e.g. '1 Day', '2 Week', '1 Month', '1 Year'. Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax."
    • changedInput schema / properties / description / description
      Previous value: -"New longer free-text description. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 2000 characters."New value: +"New description, patched onto existing instances."
    • addedInput schema / properties / description / examples
      Added value: +[
      +  "Sync on sprint progress"
      +]
    • changedInput schema / properties / duration / description
      Previous value: -"New length of each instance, in ISO 8601 duration format. Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"Length of each instance, ISO 8601 duration e.g. 'PT30M'."
    • changedInput schema / properties / endDate / description
      Previous value: -"PATCH-style date field: omit or send null to leave the stored end date unchanged, send an empty string to clear it (recurrence becomes unbounded by date), or send 'YYYY-MM-DD' to set a new last occurrence date. Changing this deletes and regenerates future instances."New value: +"New last date, YYYY-MM-DD. Empty string leaves it unbounded."
    • changedInput schema / properties / id / description
      Previous value: -"Id of the recurring calendar event (template) to update."New value: +"Template id from create_recurring_calendar_event."
    • changedInput schema / properties / isAllDay / description
      Previous value: -"True if generated instances are all-day events; false for timed instances. Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"True for all-day instances, false for timed."
    • addedInput schema / properties / isAllDay / examples
      Added value: +[
      +  false
      +]
    • changedInput schema / properties / location / description
      Previous value: -"New location, replacing the existing one entirely. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes."
    • changedInput schema / properties / location / properties / $type / description
      Previous value: -"Location type discriminator"New value: +"Which location shape this is."
    • addedInput schema / properties / location / properties / $type / examples
      Added value: +[
      +  "Address"
      +]
    • changedInput schema / properties / location / properties / countryCode / description
      Previous value: -"Country code for the address (Address type)."New value: +"ISO country code, e.g. GB."
    • changedInput schema / properties / location / properties / line1 / description
      Previous value: -"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'."New value: +"Address line 1. An Address needs one of line1-3 or postalCode."
    • changedInput schema / properties / location / properties / line2 / description
      Previous value: -"Second line of the street address (Address type), e.g. building or suite."New value: +"Address line 2, e.g. flat or suite."
    • addedInput schema / properties / location / properties / line2 / examples
      Added value: +[
      +  "Flat 3"
      +]
    • changedInput schema / properties / location / properties / line3 / description
      Previous value: -"Third line of the street address (Address type)."New value: +"Address line 3."
    • addedInput schema / properties / location / properties / line3 / examples
      Added value: +[
      +  "London"
      +]
    • changedInput schema / properties / location / properties / notes / description
      Previous value: -"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation."New value: +"Access detail, e.g. parking or passcode."
    • addedInput schema / properties / location / properties / notes / examples
      Added value: +[
      +  "Bring your laptop"
      +]
    • changedInput schema / properties / location / properties / postalCode / description
      Previous value: -"Postal or ZIP code (Address type). Up to 20 characters."New value: +"Postal or ZIP code."
    • changedInput schema / properties / location / properties / url / description
      Previous value: -"URL for online locations (OnlineLocation type). Must be an absolute http/https URL."New value: +"Absolute http/https join link."
    • addedInput schema / properties / location / properties / url / examples
      Added value: +[
      +  "https://meet.google.com/abc-defg-hij"
      +]
    • changedInput schema / properties / maxOccurrences / description
      Previous value: -"New maximum number of instances to generate. Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"New cap on instances generated."
    • changedInput schema / properties / notes / description
      Previous value: -"New freeform notes. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 5000 characters."New value: +"New notes."
    • addedInput schema / properties / notes / examples
      Added value: +[
      +  "Bring your laptop"
      +]
    • changedInput schema / properties / startDate / description
      Previous value: -"PATCH-style date field: omit or send null to leave the stored start date unchanged, send an empty string to clear it, or send 'YYYY-MM-DD' to set a new anchor date. Changing this deletes and regenerates future instances."New value: +"New first-instance date, YYYY-MM-DD. Empty string clears it."
    • changedInput schema / properties / startTime / description
      Previous value: -"New time of day each instance starts, in HH:mm:ss format (local to timezone). Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"New local start time, HH:mm:ss."
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone id (e.g. 'Europe/London') that startTime is in. Omit to leave unchanged; null resets to UTC. Changing this regenerates instances."New value: +"IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST."
    • changedInput schema / properties / title / description
      Previous value: -"New event title/summary. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 200 characters."New value: +"New title, patched onto existing instances."
    • addedInput schema / properties / title / examples
      Added value: +[
      +  "Weekly team standup"
      +]
  3. Changed32 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "cronExpression": "2 Week",
      +    "endDate": "2027-01-31",
      +    "id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f"
      +  }
      +]
    • changedInput schema / properties / cronExpression / description
      Previous value: -"Cron expression for recurrence"New value: +"New recurrence interval, NOT a cron expression despite the field name. Format is 'N Unit' where N is a positive integer and Unit is one of Day, Week, Month, Year (case-sensitive), e.g. '1 Day', '2 Week', '1 Month', '1 Year'. Omit to leave unchanged. Changing this deletes and regenerates future instances."
    • addedInput schema / properties / cronExpression / examples
      Added value: +[
      +  "2 Week"
      +]
    • addedInput schema / properties / description / description
      Added value: +"New longer free-text description. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 2000 characters."
    • changedInput schema / properties / duration / description
      Previous value: -"Duration in ISO 8601 format, e.g. PT1H30M"New value: +"New length of each instance, in ISO 8601 duration format. Omit to leave unchanged. Changing this deletes and regenerates future instances."
    • addedInput schema / properties / duration / examples
      Added value: +[
      +  "PT30M"
      +]
    • changedInput schema / properties / endDate / description
      Previous value: -"YYYY-MM-DD format"New value: +"PATCH-style date field: omit or send null to leave the stored end date unchanged, send an empty string to clear it (recurrence becomes unbounded by date), or send 'YYYY-MM-DD' to set a new last occurrence date. Changing this deletes and regenerates future instances."
    • addedInput schema / properties / endDate / examples
      Added value: +[
      +  "2027-01-31"
      +]
    • addedInput schema / properties / id / description
      Added value: +"Id of the recurring calendar event (template) to update."
    • addedInput schema / properties / id / examples
      Added value: +[
      +  "0198f3a1b2c34d5e6f7089ab1c2d3e4f"
      +]
    • addedInput schema / properties / isAllDay / description
      Added value: +"True if generated instances are all-day events; false for timed instances. Omit to leave unchanged. Changing this deletes and regenerates future instances."
    • changedInput schema / properties / location / description
      Previous value: -"Location. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"New location, replacing the existing one entirely. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."
    • addedInput schema / properties / location / properties / countryCode / description
      Added value: +"Country code for the address (Address type)."
    • addedInput schema / properties / location / properties / countryCode / examples
      Added value: +[
      +  "GB"
      +]
    • addedInput schema / properties / location / properties / line1 / description
      Added value: +"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'."
    • addedInput schema / properties / location / properties / line1 / examples
      Added value: +[
      +  "221B Baker Street"
      +]
    • addedInput schema / properties / location / properties / line2 / description
      Added value: +"Second line of the street address (Address type), e.g. building or suite."
    • addedInput schema / properties / location / properties / line3 / description
      Added value: +"Third line of the street address (Address type)."
    • addedInput schema / properties / location / properties / notes / description
      Added value: +"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation."
    • addedInput schema / properties / location / properties / postalCode / description
      Added value: +"Postal or ZIP code (Address type). Up to 20 characters."
    • addedInput schema / properties / location / properties / postalCode / examples
      Added value: +[
      +  "NW1 6XE"
      +]
    • changedInput schema / properties / location / properties / url / description
      Previous value: -"URL for online locations"New value: +"URL for online locations (OnlineLocation type). Must be an absolute http/https URL."
    • addedInput schema / properties / maxOccurrences / description
      Added value: +"New maximum number of instances to generate. Omit to leave unchanged. Changing this deletes and regenerates future instances."
    • addedInput schema / properties / maxOccurrences / examples
      Added value: +[
      +  20
      +]
    • addedInput schema / properties / notes / description
      Added value: +"New freeform notes. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 5000 characters."
    • changedInput schema / properties / startDate / description
      Previous value: -"YYYY-MM-DD format"New value: +"PATCH-style date field: omit or send null to leave the stored start date unchanged, send an empty string to clear it, or send 'YYYY-MM-DD' to set a new anchor date. Changing this deletes and regenerates future instances."
    • addedInput schema / properties / startDate / examples
      Added value: +[
      +  "2026-08-03"
      +]
    • changedInput schema / properties / startTime / description
      Previous value: -"Time of day in HH:mm:ss format"New value: +"New time of day each instance starts, in HH:mm:ss format (local to timezone). Omit to leave unchanged. Changing this deletes and regenerates future instances."
    • addedInput schema / properties / startTime / examples
      Added value: +[
      +  "09:00:00"
      +]
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone id (e.g. 'Europe/London') that startTime is in. Changing this regenerates instances."New value: +"IANA timezone id (e.g. 'Europe/London') that startTime is in. Omit to leave unchanged; null resets to UTC. Changing this regenerates instances."
    • addedInput schema / properties / timezone / examples
      Added value: +[
      +  "Europe/London"
      +]
    • addedInput schema / properties / title / description
      Added value: +"New event title/summary. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 200 characters."
  4. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only indicate not read-only and not destructive, providing no behavioral detail. The description goes beyond annotations by disclosing that certain changes modify existing instances while others regenerate future ones. This is a critical behavioral trait that impacts how the agent should set expectations about the effect on existing data, adding significant value.

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 sentences with no wasted words. The purpose is front-loaded, and the behavioral distinction is stated concisely. It is an efficient and well-structured description.

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?

Given the complexity (14 parameters, nested objects, output schema), the description captures the essential behavioral distinction but does not explicitly address when to use this tool vs the non-recurring update_calendar_event. The schema handles parameter details and the output schema covers return values. A brief note about the recurring vs non-recurring distinction would make it fully complete, but the name and context likely suffice.

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 description coverage is 100%, so every parameter is already documented with detailed explanations and examples. The description adds a high-level semantic layer by categorizing which parameters patch vs regenerate, which is not captured in the schema. This helps the agent understand the impact of changing different fields, going beyond the schema's individual descriptions.

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?

Clearly states it updates a recurring calendar event and immediately distinguishes between changes that patch existing instances (title/description/notes/reminders) and changes that regenerate future instances (frequency/dates/time). This is specific and differentiates it from create_recurring_calendar_event and update_calendar_event by the recurring aspect and the behavioral nuance.

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 valuable guidance on the two distinct behaviors (patch vs regenerate) which informs the agent what to expect for each field. However, it does not explicitly mention when to use this tool over update_calendar_event for non-recurring events, nor does it state any exclusions or alternatives. The name implies the use case, but explicit alternative routing is absent.

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.

Resources