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

NameRequiredDescriptionDefault
idYesTemplate id from list_recurring_calendar_events or 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

NameRequiredDescriptionDefault
itemsYes
titleNo
messageNo
variantNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / id / description
      Previous value: -"Template id from create_recurring_calendar_event."New value: +"Template id from list_recurring_calendar_events or create_recurring_calendar_event."
  2. 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
      +}
  3. 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"
      +]
  4. 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."
  5. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only say it is a non-read-only, non-destructive mutation. The description adds the crucial behavioral distinction that title/description/notes/reminders patch existing instances while frequency/dates/time regenerate future instances, which tells the agent what is preserved versus recreated. It stops short of covering permissions or error behavior.

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 tightly written sentences, zero filler, with the core behavioral split front-loaded. Every clause carries 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 14-parameter mutation tool with a rich schema and an output schema, the description covers the essential behavioral contract without needing to restate returns. It leaves minor gaps around edge cases (timezone changes, required id) that the schema handles, so it is largely complete.

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 the schema already documents all 14 params and baseline is 3. The description adds value by grouping parameters into the two behavioral buckets (patch set vs regenerate set), giving the agent a mental model the per-field schema descriptions do not provide.

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 specific verb and resource ('Update a recurring calendar event') and immediately implies the two behavioral modes. It does not explicitly contrast with the closest siblings (update_calendar_event, update_recurring_task), but the 'recurring' qualifier plus the regenerate/patch split makes the target 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?

The description implies when each parameter group applies (patch vs regenerate), which helps an agent choose inputs, but it names no alternatives and gives no when-not guidance. There is no routing between this tool and update_calendar_event or create_recurring_calendar_event, so usage is only implied.

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