Skip to main content
Glama

Change scheduling preferences

preferences_set
DestructiveIdempotent

Change any of the person's scheduling preferences as preferences_get names them, the rest left as they stand; null clears one. calendar marks one calendar calendars_list names as counting as busy or not. receiving, which null does not clear, names the calendar bookings are made in: one of an account's own calendars, as calendars_list names it - a calendar server's only where it says it sends invitations itself. time_zone changes only with zoneConfirmed true, once the person has confirmed it as theirs.

Input Schema

NameRequiredDescriptionDefault
calendarNo
receivingNo
time_zoneNoTime zone, e.g. Europe/London
friday_hoursNoFriday's working hours, e.g. 09:00-12:00, 13:00-17:00
horizon_daysNoDays ahead a meeting may be
meeting_linkNoDefault meeting link, https
monday_hoursNoMonday's working hours, e.g. 09:00-12:00, 13:00-17:00
sunday_hoursNoSunday's working hours, e.g. 09:00-12:00, 13:00-17:00
daily_maximumNoMost meetings in a day
tuesday_hoursNoTuesday's working hours, e.g. 09:00-12:00, 13:00-17:00
zoneConfirmedNoTrue only once the person has confirmed the time_zone passed as theirs.
notice_minutesNoLeast notice in minutes
saturday_hoursNoSaturday's working hours, e.g. 09:00-12:00, 13:00-17:00
thursday_hoursNoThursday's working hours, e.g. 09:00-12:00, 13:00-17:00
meeting_minutesNoMeeting length in minutes
preferred_timesNoTimes offered first, e.g. 10:00-12:00, 14:00-16:00
wednesday_hoursNoWednesday's working hours, e.g. 09:00-12:00, 13:00-17:00
buffer_after_minutesNoMinutes kept free after a meeting being booked
buffer_before_minutesNoMinutes kept free before a meeting being booked

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / calendar / properties / provider / enum
      Previous value: -[
      -  "google",
      -  "microsoft",
      -  "icloud"
      -]New value: +[
      +  "google",
      +  "microsoft",
      +  "icloud",
      +  "caldav"
      +]
    • changedInput schema / properties / receiving / properties / provider / enum
      Previous value: -[
      -  "google",
      -  "microsoft",
      -  "icloud"
      -]New value: +[
      +  "google",
      +  "microsoft",
      +  "icloud",
      +  "caldav"
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / calendar / properties / provider / enum
      Previous value: -[
      -  "google",
      -  "microsoft"
      -]New value: +[
      +  "google",
      +  "microsoft",
      +  "icloud"
      +]
    • changedInput schema / properties / receiving / properties / provider / enum
      Previous value: -[
      -  "google",
      -  "microsoft"
      -]New value: +[
      +  "google",
      +  "microsoft",
      +  "icloud"
      +]
  3. First observed

TDQS

A3.6/5.0
Behavior4/5

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

The description adds real behavior beyond the annotations: partial update by default, 'null clears one', the exception that receiving's null does not clear, and the confirmation gate on time_zone. Against an annotation set that already declares destructive/idempotent/readOnly, this is meaningful added context. It leaves unstated whether changes are reversible or whether the caller must obtain user confirmation for destructive overrides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is compact for a 19-parameter mutation and the core semantics are front-loaded in the first clause. But it is written as a dense run-on of comma-and-semicolon clauses, so a reader must untangle quoted-sounding names like 'receiving, which null does not clear' from the grammar of the sentence. Structure costs more than it should for the length.

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 19-param, nested-object mutation with no output schema, the description covers the decision-relevant edges: partial update, null clearing with one exception, calendar busy flagging, receiving-calendar restrictions, and the time_zone confirmation gate. Gaps remain around whether an empty call is a no-op and what errors to expect, but the agent has enough to call it correctly.

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?

With 19 parameters and 89% schema description coverage, the schema carries most semantics, so the baseline is 3. The description does add genuinely non-obvious semantics for the two nested objects (calendar = busy/counting flag; receiving = the booking calendar, and only a server that sends invitations itself) and the zoneConfirmed linkage, which pushes toward a 4. However, the many scalar preferences (hours, buffers, limits) are not addressed at all beyond 'the rest left as they stand'.

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+resource ('Change any of the person's scheduling preferences') and adds partial-update semantics ('the rest left as they stand') that distinguish it from a full replace. It also anchors to the read sibling preferences_get, so the agent knows which tool it is paired with. It loses a point because the phrasing 'as preferences_get names them' is dense and forces a second read to parse.

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 implied rather than stated: referencing preferences_get hints the read should come first, and the time_zone rule ('changes only with zoneConfirmed true, once the person has confirmed it as theirs') is an explicit conditional. But there is no explicit when-to-use/when-not, no statement about what happens for preferences not listed, and no guidance on confirming changes with the person despite destructiveHint=true.

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.