Skip to main content
Glama

update_website_customization

Update website colors and fonts by specifying only changed values. Automatically resends active colors when the header font changes to prevent Zola's partial-update wipe bug.

Instructions

Update website colors and fonts. Provide only what changes. Colors are 6-char hex without #. Note: when header_font_family_id changes, the wrapper auto-fetches current state and re-sends all active colors to defend against a Zola partial-update wipe bug. body_font_family_id is restricted to [68, 198]. header_color and nav_font_color exist on Zola's web-api endpoint but are NOT writable via the mobile-api this MCP uses — change them in the Zola web UI for now.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
accent_colorNo6-char hex (no #)
header_colorNoWritable only via Zola's web-api (cookie+CSRF), not the mobile-api this MCP uses. Passing this throws.
nav_font_colorNoWritable only via Zola's web-api (cookie+CSRF), not the mobile-api this MCP uses. Passing this throws.
body_font_colorNo
background_colorNo
body_font_family_idNoRestricted to 68 (Libre Baskerville) or 198 (Circular). Other IDs return a generic API error.
header_font_family_idNoFont family ID — call get_website_customizations to see available font_family_ids
navigation_background_colorNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv2.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. First observedv1.4.2

TDQS

A4.2/5.0
Behavior5/5

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

With only destructiveHint: false in annotations, the description carries the behavioral burden and succeeds: it discloses the auto-fetch/re-send workaround for the Zola partial-update wipe bug, the throwing behavior of two non-writable parameters, and the restricted body_font_family_id range with its generic-error failure mode. No contradiction with the annotation.

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

Conciseness4/5

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

Four sentences, each earning its place: purpose, update semantics, color format, bug workaround, field restrictions. The Zola bug sentence is long and dense, but it conveys critical behavior that would otherwise surface only as a runtime surprise. Slightly heavy on a single compound sentence, but no waste.

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 an 8-parameter, all-optional write tool with no output schema, the description covers format constraints, value restrictions, bug behavior, and field-level alternatives. Minor gaps: no statement of what happens when zero parameters are passed, no return-value description, and header_font_family_id validation only appears in the schema, not the description. These are small relative to the breadth disclosed.

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?

The description adds the 6-char hex-without-# format rule and the partial-update semantics that only provided fields are touched — details the schema lacks for the color parameters. It reinforces the schema's body_font_family_id restriction and the non-writable header_color/nav_font_color. At 63% schema coverage, the description meaningfully compensates for undocumented parameters.

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?

The description opens with a specific verb+resource pair — 'Update website colors and fonts' — making the tool's scope immediately clear. This distinguishes it from read siblings like get_website_customizations and theme-level tools like update_current_theme, though it doesn't explicitly name any sibling. The purpose is unambiguous and precise about what domain the update touches.

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?

The description gives clear usage context: 'Provide only what changes' establishes partial-update semantics, and it explicitly directs the agent to the Zola web UI for header_color and nav_font_color, which throw if passed here. It does not explicitly reference sibling MCP tools as alternatives, but the field-level when/where guidance is strong and actionable.

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