Skip to main content
Glama
taylorwilsdon

Google Workspace MCP Server - Control Gmail, Calendar, Docs, Sheets, Slides, Chat, Forms & Drive

Manage Out of Office

manage_out_of_office
Destructive

Create, list, update, or delete Google Calendar Out of Office events that auto-decline conflicting meeting invitations and set your status to Out of office across Google Workspace.

Instructions

Manages Out of Office events on Google Calendar. These special events auto-decline meeting invitations and set the user's status to "Out of office" across Google Workspace.

Input Schema

NameRequiredDescriptionDefault
actionYesAction to perform - "create", "list", "update", or "delete".
summaryNoDisplay text on the calendar. Defaults to "Out of Office".
end_timeNoEnd date/time (exclusive). Same format as start_time. For a single full day on April 5, use start_time='2026-04-05' and end_time='2026-04-06'. Required for create.
event_idNoEvent ID. Required for "update" and "delete" actions.
time_maxNoFor "list" action: end of time range.
time_minNoFor "list" action: start of time range. Defaults to current time. Recurring series are expanded into individual instances in the requested range.
timezoneNoTimezone for the event (e.g., "America/New_York", "Europe/London"). Required when using date-only values or dateTime values without an explicit UTC offset.
page_tokenNoFor "list" action: token for the next page, taken from a previous response. Also pass the response's Pagination time_min as time_min, even if omitted on the first call. Keep all other query parameters unchanged.
recurrenceNoRFC5545 recurrence rules for a recurring Out of Office series, e.g. ["RRULE:FREQ=WEEKLY;COUNT=10"].
start_timeNoStart date/time. Use 'YYYY-MM-DD' for full-day or RFC3339 for partial-day (e.g., '2024-04-05T09:00:00Z'). Date-only values are auto-converted to dateTime (midnight-to-midnight). Required for create.
calendar_idNoCalendar ID. Defaults to 'primary'. Out of Office status events live on primary calendars, so use 'primary' or a user's primary calendar ID/email rather than a secondary calendar ID.primary
max_resultsNoFor "list" action: maximum events to return in one page. Defaults to 10.
decline_messageNoMessage included when auto-declining invitations.
auto_decline_modeNoHow to handle conflicting invitations. One of: "declineAllConflictingInvitations" (default), "declineOnlyNewConflictingInvitations", "declineNone".
user_google_emailYesThe user's Google email address. Required.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv2.2.0
    • changedInput schema / properties / max_results / description
      Previous value: -"For \"list\" action: maximum events to return. Defaults to 10."New value: +"For \"list\" action: maximum events to return in one page. Defaults to 10."
    • addedInput schema / properties / page_token
      Added value: +{
      +  "default": null,
      +  "description": "For \"list\" action: token for the next page, taken from a previous response. Also pass the response's Pagination time_min as time_min, even if omitted on the first call. Keep all other query parameters unchanged.",
      +  "type": "string"
      +}
  2. Changed21 schema fields changedv1.28.0
    • removedInput schema / properties / auto_decline_mode / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / auto_decline_mode / type
      Added value: +"string"
    • removedInput schema / properties / decline_message / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / decline_message / type
      Added value: +"string"
    • removedInput schema / properties / end_time / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / end_time / type
      Added value: +"string"
    • removedInput schema / properties / event_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / event_id / type
      Added value: +"string"
    • removedInput schema / properties / recurrence / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / recurrence / items
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / recurrence / type
      Added value: +"array"
    • removedInput schema / properties / start_time / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / start_time / type
      Added value: +"string"
    • removedInput schema / properties / summary / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / summary / type
      Added value: +"string"
    • removedInput schema / properties / time_max / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / time_max / type
      Added value: +"string"
    • removedInput schema / properties / time_min / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / time_min / type
      Added value: +"string"
    • removedInput schema / properties / timezone / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / timezone / type
      Added value: +"string"
  3. Addedv1.0.1

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and openWorldHint=true, so the description earns credit for adding genuinely new behavior: OOO events auto-decline invitations and propagate a status across Google Workspace. It stops short of stating that deletes/updates are irreversible or what permissions are needed.

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 front-loaded sentences with zero filler. The distinguishing behavior comes immediately after the purpose statement rather than being buried.

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?

With an output schema present, annotations covering safety, and exhaustive parameter documentation, the description covers what an agent needs to know conceptually. The one gap is that it never signals this single tool multiplexes four CRUD actions, though the required 'action' parameter makes that discoverable.

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 coverage is 100%, including per-action requirements, defaults, timezone rules and pagination mechanics, so the description does not need to restate parameters. It adds nothing beyond the schema, which puts it at the baseline.

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 ('Manages Out of Office events on Google Calendar') and immediately explains what makes them a distinct resource type: auto-declining invitations and Workspace-wide status. This implicitly separates it from manage_event, but no sibling is named, so an agent must infer the routing themselves.

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?

Usage is only implied by the nature of the resource; there is no explicit guidance on when to pick this over manage_event for a regular calendar event, nor exclusions for users without OOO support. The agent can guess when it's appropriate but gets no stated decision rule.

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

Deploy Server

Other Tools