Skip to main content
Glama

Update an item in a collection

update_collection_item
DestructiveIdempotent

Change ONE existing item — a post's body, a product's price, a dish's name — or publish/unpublish it. Name it by item_id, or by collection_type plus its slug or exact title in item. Only the fields you send change, and there is no restore snapshot in this tool. seo sets the item page's title, meta description, keywords, canonical and JSON-LD structured_data, merged over its existing SEO. Publishing a visible item sends the change to the public site by collection auto-publish; drafting hides it, so confirm public visibility changes before calling. Never creates an item; for photos use set_item_photos. Blog posts show up to three related posts, picked automatically: to choose them send fields {"related_mode":"manual","related_ids":[item ids]}, to hide them on that post {"related_mode":"off"}.

Input Schema

NameRequiredDescriptionDefault
seoNoSEO changes, MERGED over what the item already has: only the keys you send change, null removes one (structured_data: null goes back to the generated schema). Same keys as on add_collection_item: title, description, keywords, og_image_url, canonical_url, no_index, no_follow, structured_data.
itemNoThe item's slug, or its exact current title. A title shared by several items is refused with their slugs.
titleNoA new title.
fieldsNoOnly the fields to change; every other field on the item is kept.
statusNo"published" makes it live, "draft" hides it.
item_idNoThe item's id (from list_collection_items). Preferred.
site_idYesThe site the collection belongs to
user_goalNoOptional: the user's goal behind this call, in one short sentence of plain words (e.g. "add a page so customers can book tables"). No names, emails or other personal details.
collection_typeNoThe collection, when naming the item by `item` instead of `item_id`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / user_goal
      Added value: +{
      +  "description": "Optional: the user's goal behind this call, in one short sentence of plain words (e.g. \"add a page so customers can book tables\"). No names, emails or other personal details.",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / seo
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "SEO changes, MERGED over what the item already has: only the keys you send change, null removes one (structured_data: null goes back to the generated schema). Same keys as on add_collection_item: title, description, keywords, og_image_url, canonical_url, no_index, no_follow, structured_data.",
      +  "properties": {
      +    "canonical_url": {
      +      "anyOf": [
      +        {
      +          "format": "uri",
      +          "maxLength": 2000,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Canonical URL, when this page duplicates another."
      +    },
      +    "description": {
      +      "anyOf": [
      +        {
      +          "maxLength": 500,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "This page's meta description. Aim for 150-160 characters."
      +    },
      +    "keywords": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "maxLength": 100,
      +            "type": "string"
      +          },
      +          "maxItems": 30,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Target keywords for this page, most important first."
      +    },
      +    "no_follow": {
      +      "description": "true asks search engines not to follow links on this page.",
      +      "type": "boolean"
      +    },
      +    "no_index": {
      +      "description": "true asks search engines not to index this page.",
      +      "type": "boolean"
      +    },
      +    "og_image_url": {
      +      "anyOf": [
      +        {
      +          "format": "uri",
      +          "maxLength": 2000,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Social sharing image for this page, overriding the site default."
      +    },
      +    "structured_data": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "description": "This page's JSON-LD as { \"schemas\": [ { \"@type\": \"BlogPosting\", … }, { \"@type\": \"BreadcrumbList\", … } ] }. Replaces the schema Mondovo would otherwise generate for the page, so include every schema it should carry. \"@context\" is added when absent. Max 50 KB. null clears it (back to the generated schema).",
      +          "properties": {
      +            "schemas": {
      +              "items": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "@type": {
      +                    "anyOf": [
      +                      {
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "items": {
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "minItems": 1,
      +                        "type": "array"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "@type"
      +                ],
      +                "type": "object"
      +              },
      +              "maxItems": 20,
      +              "minItems": 1,
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "schemas"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "This page's JSON-LD as { \"schemas\": [ { \"@type\": \"BlogPosting\", … }, { \"@type\": \"BreadcrumbList\", … } ] }. Replaces the schema Mondovo would otherwise generate for the page, so include every schema it should carry. \"@context\" is added when absent. Max 50 KB. null clears it (back to the generated schema)."
      +    },
      +    "title": {
      +      "anyOf": [
      +        {
      +          "maxLength": 200,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "This page's browser-tab title and search headline. Aim for 50-60 characters."
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare destructiveHint=true, idempotentHint=true and openWorldHint=true generically; the description supplies the specific consequences: no restore snapshot exists, publish pushes the change to the public site via collection auto-publish, draft hides it, SEO is merged over existing values rather than replaced, and ambiguous titles are refused with their slugs. That last detail is exactly the kind of failure mode an agent needs to plan for.

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?

It is a single dense paragraph, but it is front-loaded with the action and identification rules before the SEO and related-post detail, and each clause carries distinct information. The only cost is that the related-posts JSON example and the SEO merge note run together, making the tail harder to scan than the head.

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 9-parameter mutation with a nested seo object and no output schema, the definition covers identity resolution, merge semantics, status effects, irreversibility and a sibling escape hatch. The one omission is what the call returns or how to confirm success, which an agent must infer given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3, but the description adds meaning the schema cannot: the fields object is free-form in the schema, and only here do we learn the related_mode/related_ids/off payload for blog related posts, plus the merge semantics of the seo object and the item_id-vs-collection_type+item precedence. That is substantive beyond-schema semantics for the tool's most opaque parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Change ONE existing item ... or publish/unpublish it' — and immediately enumerates concrete examples (post body, product price, dish name). It explicitly separates itself from the create path ('Never creates an item') and from the photo path ('for photos use set_item_photos'), so an agent can pick it over add_collection_item without opening a schema.

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

Usage Guidelines5/5

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

It states when to use it (editing an existing item, status flips), when not to (creation, photos), which sibling handles the excluded case, and how to identify the target (item_id preferred, or collection_type plus slug/exact title in item). It also adds a caution gate — 'confirm public visibility changes before calling' — which is real routing guidance, not filler.

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