Skip to main content
Glama
vuluu2k

WebCake Storefront MCP

by vuluu2k

update_product

Modify an existing storefront product by ID, passing only the fields to change: name, description, images, SEO, categories, or variations for price and stock.

Instructions

Update an existing product. Pass product_id + only the fields to change. To change price/stock, pass variations (get_product first to see the existing variation shape). Images must be hosted CDN urls (search_images cdn_url / upload_images).

Input Schema

NameRequiredDescriptionDefault
seoNoSEO settings to change; other existing SEO tags and the slug are kept. Pass "" to clear a field.
nameNoNew name
imagesNoNew hosted image URLs; first becomes the thumbnail
product_idYesProduct id to update
variationsNoReplace variations (price/stock/SKU per variant). Reuse existing custom_ids from get_product to edit in place.
descriptionNoNew description (HTML allowed)
category_idsNoReplace the product's categories
is_publishedNoPublish/unpublish the product

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.34.1
    • addedInput schema / properties / seo
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "SEO settings to change; other existing SEO tags and the slug are kept. Pass \"\" to clear a field.",
      +  "properties": {
      +    "canonical": {
      +      "description": "Canonical URL (<link rel=canonical>)",
      +      "type": "string"
      +    },
      +    "custom_tags": {
      +      "description": "Extra tags (\"Thẻ bổ sung\"), e.g. { \"type\": \"meta\", \"props\": { \"name\": \"author\", \"content\": \"Togi\" } }. Replaces a tag with the same name/property/rel.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "props": {
      +            "additionalProperties": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "type": {
      +            "default": "meta",
      +            "enum": [
      +              "meta",
      +              "link"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "props"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "meta_description": {
      +      "description": "Meta description (~155 chars)",
      +      "type": "string"
      +    },
      +    "og_description": {
      +      "description": "Social share description (og:description)",
      +      "type": "string"
      +    },
      +    "og_image": {
      +      "description": "Social share image URL (og:image), must be hosted",
      +      "type": "string"
      +    },
      +    "og_site_name": {
      +      "description": "og:site_name",
      +      "type": "string"
      +    },
      +    "og_title": {
      +      "description": "Social share title (og:title)",
      +      "type": "string"
      +    },
      +    "og_type": {
      +      "description": "og:type, e.g. article / product",
      +      "type": "string"
      +    },
      +    "og_url": {
      +      "description": "og:url",
      +      "type": "string"
      +    },
      +    "page_keywords": {
      +      "description": "Comma-separated keywords",
      +      "type": "string"
      +    },
      +    "page_title": {
      +      "description": "Title tag (~60 chars)",
      +      "type": "string"
      +    },
      +    "remove_tags": {
      +      "description": "Remove tags by name/property/rel, e.g. [\"author\", \"og:url\"]",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "robots": {
      +      "description": "Robots meta, comma+space separated, e.g. \"noindex, nofollow\" or \"max-snippet:-1, max-image-preview:large\"",
      +      "type": "string"
      +    },
      +    "structured_data": {
      +      "description": "Structured data markup (JSON-LD). REPLACES all existing markups; [] removes them.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "json": {
      +            "description": "JSON-LD object as a string, without <script>",
      +            "type": "string"
      +          },
      +          "name": {
      +            "description": "Display name",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "json"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv1.31.8

TDQS

A4/5.0
Behavior4/5

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

The only annotation is readOnlyHint=false, so the mutation profile is confirmed but nothing more. The description adds real behavioral context beyond it: partial-patch semantics ("only the fields to change"), a hard constraint that images must be hosted CDN URLs, and the get_product prerequisite for editing variations in place.

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?

Three tightly packed sentences, front-loaded with the operation and its patch semantics, followed by variation workflow and image-host constraint. Every sentence earns its place with no padding.

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 complex 8-parameter update tool with nested objects and no output schema, the description covers the critical workflow (patch semantics, variations, hosted images) and defers field-level detail to the rich schema. It omits any statement of what the call returns or success behavior, a minor gap given no output schema exists.

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 100% schema description coverage, every parameter (including the nested seo and variations shapes) is already documented in the schema, so the baseline is 3. The description reinforces product_id, variations and images workflow but adds no syntax or field detail beyond what the schema states.

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 first sentence gives a specific verb and resource ("Update an existing product") with the key precondition (product_id required, only changed fields passed). It implicitly differentiates from create_product/delete_product/set_product_published by the "update" verb and field-patch framing, but does not name those siblings explicitly.

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?

It gives actionable usage rules: pass only the fields to change, use variations for price/stock, and call get_product first to learn the existing variation shape. It also names helper tools (search_images/upload_images) for image URLs, though it stops short of stating when not to use this tool.

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