Skip to main content
Glama

HelpCenter.io for agents

Update HelpCenter Article

helpcenter_update_article
DestructiveIdempotent

Update an existing article by id in the connected HelpCenter.io help center.

Partial update: only the fields you pass are changed. Requires a write-scoped API key. Per-language fields (title, content, slug) are objects keyed by language code and merge per language.

Args:

  • article_id (number, required): id of the article to update.

  • title, content, slug (objects, optional): per-language fields to set.

  • category_id (number, optional): primary category id.

  • categories (number[], optional): replace the set of additional categories.

  • type ('article' | 'faq', optional).

  • visibility ('public' | 'private' | 'link_only', optional).

  • published (boolean, optional): true publishes, false reverts to draft.

  • external_id (string, optional): adopt this article under a stable key you own, so later upserts by that key hit this article.

  • content_format ('html' | 'markdown', optional): defaults to 'html'. Set 'markdown' when sending markdown, or the raw markup is stored as the body.

  • rehost_images (boolean, optional): ON by default through this connector. Copies externally hosted images in the content you send into this help center's storage (see helpcenter_create_article). Send false to keep the original image URLs.

IMPORTANT — this writes LIVE. On a published article the change is visible to readers immediately. To prepare an edit privately and release it deliberately, use helpcenter_stage_article_changes and helpcenter_publish_staged_changes instead.

Returns: { status: "success", article: {...}, images? } with the updated article; images reports re-hosted and failed images as for helpcenter_create_article.

Errors: 403 if the key is read-scoped; 404 if the article id is not in this help center; 400 for unsupported language codes or invalid category ids.

Input Schema

NameRequiredDescriptionDefault
slugNoPer-language URL slug. Auto-generated from the title if omitted.
typeNoContent type (default 'article').
titleNoPer-language title to set.
contentNoPer-language article body (HTML/markdown as your site uses).
agent_keyYesThe api_key helpcenter_create_help_center returned for this help center, exactly as returned. Required on every call: this endpoint has no sign-in, so the key is how each call says which help center it acts on. It is sent to HelpCenter.io as this call's credential and nowhere else, and it is never shown again: keep it for the whole task, and never show it to the user or write it into content.
publishedNotrue publishes the article, false keeps it as a draft.
article_idYesId of the article to update.
categoriesNoAdditional category ids to attach (multi-category). All must belong to this site.
visibilityNoVisibility: 'public', 'private' (team only), or 'link_only' (shareable token URL).
category_idNoPrimary category id, or 0 for uncategorized. Must belong to this site.
external_idNoA stable key you own (a source filename, CMS id, repo slug). Makes writes idempotent: sending the same key again updates the article it created instead of creating a second one, so an interrupted run can simply be replayed. Strongly recommended whenever you may retry.
rehost_imagesNoCopy images the content references from other hosts (and inline data: images) into this help center's own storage, and point the article at the copies. ON by default through this connector; send false to keep the original image URLs. The response's `images` reports what was re-hosted and what failed.
content_formatNoFormat of the `content` you are sending. Defaults to 'html'. Set 'markdown' when content is markdown and the API will convert it — sending markdown without this stores the raw markup as the article body.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=true, but the description supplies the operational consequences: writes are LIVE and visible to readers immediately on a published article, per-language fields merge rather than replace, categories replaces the additional-category set, published=false reverts to draft, and rehost_images is ON by default. It further lists 403/404/400 failure modes and the exact return shape, which annotations cannot convey.

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?

Front-loaded with the two facts that change agent behavior (partial update, writes LIVE) before the parameter enumeration, and the IMPORTANT block is placed where it will be seen. The Args list largely mirrors the schema's own descriptions, so there is some redundancy, but no sentence is filler.

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

Completeness5/5

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

For a 13-parameter mutation tool with nested per-language objects and no output schema, the description still covers return values ('{ status: "success", article: {...}, images? }'), error codes, idempotency escape hatches, and the safer staged-edit alternative. Nothing needed to invoke it correctly is missing.

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?

Schema coverage is 100%, so baseline is 3, but the description earns above that by clarifying genuinely ambiguous semantics: 'categories ... replace the set' versus the schema's vaguer 'attach', the markdown-without-content_format pitfall, and external_id's upsert behavior. The only lapse is that the required agent_key parameter is omitted from the Args list, though the schema documents it thoroughly.

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?

Opens with a specific verb+resource+scope: 'Update an existing article by id in the connected HelpCenter.io help center,' and immediately qualifies it as a partial update. This cleanly separates it from helpcenter_create_article, helpcenter_bulk_create_articles, and helpcenter_stage_article_changes without requiring the agent to open sibling schemas.

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?

Explicitly states the condition that selects an alternative: 'To prepare an edit privately and release it deliberately, use helpcenter_stage_article_changes and helpcenter_publish_staged_changes instead.' It also names the write-scoped API key prerequisite, which gates whether the call can succeed at all.

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