Skip to main content
Glama

Update Record Layout Settings

peek.update_options
DestructiveIdempotent

Patch a peek's options. A form (kind form): theme { preset workspace | paper | sand | ocean | forest | dusk, appearance auto | light | dark }, accent (a palette token color-N), header { logo, cover, width narrow | normal | wide, direction auto | ltr | rtl } and submit { label }; its questions and layout change with form.update. A record layout (how a row opens): color, accentColor, border, size, direction, rows, header text/background/size/align, and record — saving (auto | button), buttons { saveAndNew, discard, rowNav } (shown with a Save button), readOnly, openAs (panel | dialog | page), use { newRow (the layout + New uses; one per sheet, so true clears it on the sheet's other layouts), openAsMenu (listed in the Open as menu) }. record is merged key by key into the stored one. To make a layout the sheet's default when a row opens, use sheet.update defaultFormId. Pass only the keys you want to change — existing options are preserved. Booking-specific options are not exposed via this tool.

Input Schema

NameRequiredDescriptionDefault
peekIdNo
optionsYes

Output Schema

NameRequiredDescriptionDefault
okYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • addedInput schema / properties / options / additionalProperties
      Added value: +false
    • addedInput schema / properties / options / properties / accent
      Added value: +{
      +  "description": "A palette token (color-N) for Submit, selections and progress",
      +  "pattern": "^color-\\d{1,2}$",
      +  "type": "string"
      +}
    • removedInput schema / properties / options / properties / autosave
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedInput schema / properties / options / properties / header / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "align": {
      +        "type": "string"
      +      },
      +      "background": {
      +        "type": "string"
      +      },
      +      "color": {
      +        "type": "string"
      +      },
      +      "size": {
      +        "type": "number"
      +      },
      +      "text": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "cover": {
      +        "description": "Show the cover band",
      +        "type": "boolean"
      +      },
      +      "direction": {
      +        "description": "auto follows the visitor's language",
      +        "enum": [
      +          "auto",
      +          "ltr",
      +          "rtl"
      +        ],
      +        "type": "string"
      +      },
      +      "logo": {
      +        "description": "Show the workspace logo above the title",
      +        "type": "boolean"
      +      },
      +      "width": {
      +        "description": "The public form card: 560, 680 or 840 px",
      +        "enum": [
      +          "narrow",
      +          "normal",
      +          "wide"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / options / properties / header / properties
      Removed value: -{
      -  "align": {
      -    "type": "string"
      -  },
      -  "background": {
      -    "type": "string"
      -  },
      -  "color": {
      -    "type": "string"
      -  },
      -  "size": {
      -    "type": "number"
      -  },
      -  "text": {
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / options / properties / header / type
      Removed value: -"object"
    • removedInput schema / properties / options / properties / navButtons
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedInput schema / properties / options / properties / newButton
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedInput schema / properties / options / properties / readonly
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedInput schema / properties / options / properties / record
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "buttons": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "discard": {
      +          "type": "boolean"
      +        },
      +        "rowNav": {
      +          "type": "boolean"
      +        },
      +        "saveAndNew": {
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "openAs": {
      +      "enum": [
      +        "panel",
      +        "dialog",
      +        "page"
      +      ],
      +      "type": "string"
      +    },
      +    "readOnly": {
      +      "type": "boolean"
      +    },
      +    "saving": {
      +      "enum": [
      +        "auto",
      +        "button"
      +      ],
      +      "type": "string"
      +    },
      +    "use": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "newRow": {
      +          "type": "boolean"
      +        },
      +        "openAsMenu": {
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / options / properties / resetButton
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedInput schema / properties / options / properties / saveAndNewButton
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedInput schema / properties / options / properties / submit
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "label": {
      +      "description": "The Submit button's text",
      +      "maxLength": 40,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "label"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / options / properties / theme
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "appearance": {
      +      "description": "auto follows the visitor's light or dark setting",
      +      "enum": [
      +        "auto",
      +        "light",
      +        "dark"
      +      ],
      +      "type": "string"
      +    },
      +    "preset": {
      +      "enum": [
      +        "workspace",
      +        "paper",
      +        "sand",
      +        "ocean",
      +        "forest",
      +        "dusk"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "preset"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.1/5.0
Behavior5/5

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

Goes well past the annotations (destructive/idempotent/readOnly) by disclosing merge semantics twice: "Pass only the keys you want to change — existing options are preserved" and "`record` is merged key by key into the stored one." Critically it names a hidden side effect — setting newRow true "clears it on the sheet's other layouts" — and qualifies button visibility ("shown with a Save button"). There is mild tension with destructiveHint=true, but the merge note is a meaningful clarification rather than a contradiction.

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?

Front-loaded with the verb and the PATCH contract, which is good, but the middle is a dense, comma-spliced enumeration of nested keys that is slow to scan. The valuable constraint (merge behavior) is stated up front and then restated at the end, costing space without adding 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 nested-object patch tool with an output schema and destructive annotation, the description covers the semantics an agent needs: what merges, what clears other records, what is out of scope. Only peekId and three enumeration keys (publish, responsive, accentColor) go unexplained.

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?

With reported schema coverage at 0% for the top-level params, the description carries the burden and largely succeeds: it maps every option key to its accepted values (theme presets, appearance, header width/direction, save modes, openAs targets) and explains intent (newRow, openAsMenu, buttons). Gaps remain: peekId is never mentioned, and the publish/responsive/accentColor keys appear in the schema but not the description.

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?

Opens with a specific verb+resource: "Patch a peek's options," then enumerates the two option families (form vs record layout). An agent can tell this is the catch-all option mutator for peeks rather than a question/field editor, though the title ("Update Record Layout Settings") undersells the form half.

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?

Explicitly routes two adjacent needs away from this tool: questions and form layout go to form.update, and making a layout the sheet default goes to sheet.update defaultFormId. It also states the exclusion "Booking-specific options are not exposed via this tool." It does not mention peek.update_field_options, peek.add_layout_item, or peek.reorder_layout as alternatives.

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