Skip to main content
Glama
webflow

Webflow

Official
by webflow

Update Page Static Content

pages_update_static_content

Modify text and component properties on localized static pages to update content across different language versions.

Instructions

Update content on a static page in secondary locales by modifying text nodes and property overrides.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
page_idYesUnique identifier for the page.
localeIdYesUnique identifier for a specific locale. Applicable when using localization.
nodesYes

Implementation Reference

  • The asynchronous handler function that executes the tool logic by invoking the Webflow client's updateStaticContent method with page_id, localeId, and nodes parameters, handling the response or error formatting.
    async ({ page_id, localeId, nodes }) => {
      try {
        const response = await getClient().pages.updateStaticContent(
          page_id,
          {
            localeId,
            nodes,
          },
          requestOptions
        );
        return formatResponse(response);
      } catch (error) {
        return formatErrorResponse(error);
      }
    }
  • The primary Zod input schema for the tool, defining required parameters: page_id (string), localeId (string), and nodes (array schema imported from WebflowPageDomWriteNodesItemSchema).
    inputSchema: z.object({
      page_id: z.string().describe("Unique identifier for the page."),
      localeId: z
        .string()
        .describe(
          "Unique identifier for a specific locale. Applicable when using localization."
        ),
      nodes: WebflowPageDomWriteNodesItemSchema,
    }),
  • Detailed Zod schema used for the 'nodes' input field, supporting an array of either direct text node updates or component property overrides for localized static content updates.
    export const WebflowPageDomWriteNodesItemSchema = z
      .union([
        z
          .object({
            nodeId: z.string().describe("Unique identifier for the node."),
            text: z
              .string()
              .describe(
                "HTML content of the node, including the HTML tag. The HTML tags must be the same as what’s returned from the Get Content endpoint."
              ),
          })
          .describe("Text node to be updated."),
        z
          .object({
            nodeId: z.string().describe("Unique identifier for the node."),
            propertyOverrides: z.array(
              z
                .object({
                  propertyId: z
                    .string()
                    .describe("Unique identifier for the property."),
                  text: z
                    .string()
                    .describe(
                      "Value used to override a component property; must be type-compatible to prevent errors."
                    ),
                })
                .describe(
                  "Properties to override for this locale’s component instances."
                )
            ),
          })
          .describe("Update text property overrides of a component instance."),
      ])
      .array();
  • The MCP server tool registration call, including the tool name, title, description, input schema, and inline handler function.
    server.registerTool(
      "pages_update_static_content",
      {
        title: "Update Page Static Content",
        description:
          "Update content on a static page in secondary locales by modifying text nodes and property overrides.",
        inputSchema: z.object({
          page_id: z.string().describe("Unique identifier for the page."),
          localeId: z
            .string()
            .describe(
              "Unique identifier for a specific locale. Applicable when using localization."
            ),
          nodes: WebflowPageDomWriteNodesItemSchema,
        }),
      },
      async ({ page_id, localeId, nodes }) => {
        try {
          const response = await getClient().pages.updateStaticContent(
            page_id,
            {
              localeId,
              nodes,
            },
            requestOptions
          );
          return formatResponse(response);
        } catch (error) {
          return formatErrorResponse(error);
        }
      }
    );
Behavior2/5

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

With no annotations provided, the description carries full burden. It indicates a mutation operation ('Update') but lacks critical behavioral details: required permissions, whether changes are reversible, rate limits, error handling, or what happens to unspecified nodes. The mention of 'secondary locales' hints at localization behavior but doesn't clarify primary vs. secondary locale implications.

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?

The description is a single, dense sentence with zero wasted words. It front-loads the core action and efficiently specifies scope and operations. Every phrase ('Update content on a static page', 'in secondary locales', 'by modifying text nodes and property overrides') contributes essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 3 required parameters, no annotations, and no output schema, the description is insufficient. It lacks behavioral context (safety, permissions), output expectations, error conditions, and doesn't fully address the 33% schema coverage gap. The description assumes too much about the agent's understanding of localization and node structures.

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 description coverage is 67% (2 of 3 parameters well-described). The description adds minimal value beyond schema: it mentions 'text nodes and property overrides' which aligns with the 'nodes' parameter structure but doesn't explain parameter interactions or provide usage examples. The baseline is 3 since schema coverage is moderate and description doesn't significantly compensate.

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 clearly states the action ('Update content'), target ('static page'), and scope ('secondary locales') with specific operations ('modifying text nodes and property overrides'). It distinguishes itself from siblings like 'pages_update_page_settings' by focusing on content rather than settings, though it doesn't explicitly name alternatives for content updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'secondary locales' which implies usage context, but provides no explicit guidance on when to use this tool versus alternatives like 'components_update_content' or 'pages_get_content' for reading. No prerequisites, exclusions, or comparative usage scenarios are stated.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/webflow/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server