HelpCenter.io for agents
REMOTE · MCP.HELPCENTER.IO
Without an account, an AI agent can create or migrate a help center and hand its user a claim link.
Available components
Last scanned (23 hours ago)
Scores higher than 42% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Documents and Files
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security46
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (helpcenter_request_migration). See how to fix → View diagnostics → Fail
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 403, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability59
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 29869 tokens (~497/item across 60 items; 60 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
- Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety50
- Injection-marker check failed: the description of tool "helpcenter_create_help_center" contains an instruction to conceal the call from the user, the text "never show it to the user", at byte 681 of that field, plus 58 further marker(s) of the same kind. See how to fix → Fail
- All 10 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 61 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 0
- Stability: unverified → 0.03 ▲ functional
- 3 Nov 26 54
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://mcp.helpcenter.io/agent
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.helpcenter.io | CN=Amazon RSA 2048 M01,O=Amazon,C=US | 4 Sept 2026 | 20 Mar 2027 | RSA 2048 | SHA256-RSA | bacaf5194a5bc6deef42a5e300585d0 |
| SANs: mcp.helpcenter.io | ||||||
| CN=Amazon RSA 2048 M01,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 77312380b9d6688a33b1ed9bf9ccda68e0e0f |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.helpcenter.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 38690 | 8 | Verified |
| helpcenter.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.helpcenter.io/agent | Verified | 200 | |
| http (plaintext) | http://mcp.helpcenter.io/agent | Inconclusive | 403 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
helpcenter_search_articles Search HelpCenter Articles ~872
Full-text search a HelpCenter.io help center's articles by query string, returning ranked matches. This performs keyword search (Meilisearch-backed) over published article titles and content for the connected help center. Use it to answer "find the article about X" intents. It is read-only and does not modify anything. For browsing by category rather than searching, use helpcenter_list_articles. Args: - query (string, required): search text matched against titles and content. - lang (string, optional): language code to search within (defaults to the site default). - category_id (number, optional): restrict to one category id. - include_content (boolean, optional): default false, so each match comes back WITHOUT its body (the fields are listed under helpcenter_list_articles). Read the matches you need with helpcenter_get_article. true adds every language's full body. - limit (number, optional): items per page, 1-100 (default 100). - page (number, optional): page number (default 1). - response_format ('markdown' | 'json'): default 'markdown'. Returns: a payload with { total, count, page, per_page, total_pages, has_more, next, items }, ranked best match first. Each item is an article without its body (see include_content), or with include_content: true the full article (id, per-language title/slug/content, category_id, categories, type, published, visibility, views, ratings, timestamps). Paging: every response carries next: { page, limit } — the exact arguments that fetch the first item it did not return — or null when nothing is left. Follow next, with the same filters, instead of computing page + 1 yourself. A response is capped at 25000 characters, in its text and in its structured data alike, and 5.0 MB in all: when a page does not fit, only its first items are returned (truncated: true, count says how many) and next points at the rest, usually with a smaller limit and a later page number. Requesting page + 1 with your original limit would skip t…
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| category_id | integer | – | Restrict results to a single category id. |
| include_content | boolean | – | Default false: each article comes back without its body — id, external_id, title, slug, type, category ids, published, visibility, views, staged-change flags, updated_at and content_length per langua… |
| lang | string | – | Language code to search within (defaults to the site's default language). |
| limit | integer | – | Maximum items to return per page (1-100, default 100). |
| page | integer | – | Page number for pagination (default 1). |
| query | string | yes | Full-text search string matched against article titles and content. |
| response_format | string | – | Output format: 'markdown' for a human-readable summary or 'json' for the full structured payload. |
No output schema declared.
No examples provided.
helpcenter_set_custom_domain Set the Custom Domain ~344
Connect the help center to the user's own domain (e.g. help.example.com), as its Settings page does. Then give the user the DNS record from the result to add at their DNS provider; the certificate is requested once the record points here, and the domain goes live minutes later. Follow it with helpcenter_get_custom_domain. Works once the user has claimed the help center, verified their email address and activated a plan; until then it answers capability_locked with the user's next step (helpcenter_get_help_center shows it too). Changing to a new domain counts against the help center's 4 changes a month and stops the old domain answering: only set the domain the user asked for. Setting the domain it already has changes nothing. Refused when another help center already holds the domain (domain_taken). Args: - domain (string, required): a host name, without http(s):// or a path. Returns: { custom_domain } as helpcenter_get_custom_domain answers it.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| domain | string | yes | The user's host name for the help center, like 'help.example.com': no http(s)://, no path. A leading 'www.' is dropped. |
No output schema declared.
No examples provided.
helpcenter_set_template_navigation Set the Navigation Menu ~507
Replace the help center's navigation menu — the one every Navigation component draws, in the header or elsewhere — with the items given, in order. It edits the help center's design DRAFT (its v2 template): the draft the dashboard's Template Editor opens, with a live preview. Nothing reaches visitors until helpcenter_publish_template — after editing, give the customer the Template Editor link from the result to review, and publish only when they ask. v2 help centers only (a classic one answers template_migration_required). Ids come from helpcenter_get_template. The whole menu is replaced: include every item to keep, with its id (helpcenter_get_template, section 'navigation'), so its translations survive; an empty list clears it. Links are '/', '/category/<id>' (ids from helpcenter_list_categories), '/content/<article slug>', '/contacts', or a full https:// URL with type 'external' to open in a new tab. Items take one level of children, and a cssClass to style one — a button-like "Sign up" — with custom CSS. This is the guide's `set_navigation` operation. Args: - items (array, up to 30): {label, href, type?, cssClass?, id?, children?}. - etag (string, optional): from your last read or edit; refuses (stale_draft) if the draft changed since. Returns: what each entry did (new ids), warnings worth relaying, and the draft status with its new etag.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| etag | string | – | Optimistic lock: the draft etag from your last read, or the one your last edit returned. When given, the call is refused (stale_draft) if someone changed the draft since — so you never build on a sta… |
| items | array | yes | The whole menu, in order. An empty array clears it. |
No output schema declared.
No examples provided.
helpcenter_stage_article_changes Stage Article Changes ~849
Save an edit to a published article WITHOUT readers seeing it. Nothing goes live until you call helpcenter_publish_staged_changes. Staged changes let you edit a PUBLISHED article without readers seeing it, then release it deliberately. Staged content is invisible to everything public: the rendered help center, sitemap, site search, the widget, the AI answer path, and this API's read endpoints. Staged versions are held per article AND per language, so an English hot fix is never held back by an in-progress Portuguese translation. Prefer this over helpcenter_update_article whenever the article is already published and the change should not appear the instant you write it — a rewrite in progress, a coordinated multi-language update, anything wanting review. This is a PATCH over the staged copy: fields you omit keep whatever was staged before, they are not cleared. Unlike the live article endpoints, the text fields here are plain strings, because a staged version IS one language — named by the required `locale`. Args: - article_id (number, required): must be a PUBLISHED article. - locale (string, required): the language this version is for. - title, content, slug (strings, optional): a title-only change does NOT rename the URL; send slug to rename. The redirect from the old address is created at publish, never here — so a staged rename cannot redirect live traffic while still private. - category_id, categories, visibility (optional): these belong to the ARTICLE, not a language. Sibling staged languages published together must agree on them, or publish refuses with 422 naming the field and the two locales. - release_translation (boolean, optional): mark this language released when the change is published. - etag (string, optional): pass the one from your last read; a mismatch returns 409 STALE_ETAG with the current value, meaning somebody else moved the staged copy — re-read, re-apply, retry. Returns: { status: "success", staged: { locale, fields, etag…
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| article_id | integer | yes | Id of the PUBLISHED article to stage an edit on. |
| categories | array | – | Additional category ids. Shared across locales. |
| category_id | integer | – | Primary category id. Shared across locales — siblings published together must agree. |
| content | string | – | Body for this language (HTML). |
| etag | string | – | Optimistic lock: pass the etag from your last read and the write is refused with 409 STALE_ETAG if someone else moved the staged copy meanwhile. Omit to write unconditionally. |
| locale | string | yes | Language code this staged version belongs to, e.g. 'en' or 'pt-BR'. Staged changes are held per article AND language, so an English fix and a Portuguese translation never hold each other up. |
| release_translation | boolean | – | true marks this language released when the change is published. |
| slug | string | – | URL slug for this language. A title-only change does NOT rename the URL — send this to rename it. The redirect from the old address is created at publish, never at stage. |
| title | string | – | Title for this language. |
| visibility | string | – | Visibility. Shared across locales. |
No output schema declared.
No examples provided.
helpcenter_sync_template_region Share or Unshare a Region Across Pages ~560
Make a region one shared copy on every page, or let each page keep its own. It edits the help center's design DRAFT (its v2 template): the draft the dashboard's Template Editor opens, with a live preview. Nothing reaches visitors until helpcenter_publish_template — after editing, give the customer the Template Editor link from the result to review, and publish only when they ask. v2 help centers only (a classic one answers template_migration_required). Ids come from helpcenter_get_template. header and footer are synced by default: one region mirrored to all six pages under the same component ids. enabled:false unsyncs it, and each page keeps its own copy (same ids), so later edits name the page. enabled:true makes every page take source_page's version (default home), translations included, replacing the other pages' copies wherever they differ. An edit to a synced region whose pages differ is refused until you run this, either way. main cannot be synced. This is the guide's `sync_region` operation. Args: - region: header, hero, sidebar, footer or utility. - enabled (boolean): share it (true) or let pages differ (false). - source_page (optional): when enabling, the page every page copies. Default home. - etag (string, optional): from your last read or edit; refuses (stale_draft) if the draft changed since. Returns: what each entry did (new ids), warnings worth relaying, and the draft status with its new etag.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| enabled | boolean | yes | true: one region shared by every page. false: let pages differ. |
| etag | string | – | Optimistic lock: the draft etag from your last read, or the one your last edit returned. When given, the call is refused (stale_draft) if someone changed the draft since — so you never build on a sta… |
| region | string | yes | A region that can be shared across pages (every region but main). |
| source_page | string | – | When enabling (or re-syncing), the page whose version every page takes. Default home. |
No output schema declared.
No examples provided.
helpcenter_update_article Update HelpCenter Article ~854
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| article_id | integer | yes | Id of the article to update. |
| categories | array | – | Additional category ids to attach (multi-category). All must belong to this site. |
| category_id | integer | – | Primary category id, or 0 for uncategorized. Must belong to this site. |
| content | object | – | Per-language article body (HTML/markdown as your site uses). |
| content_format | string | – | Format 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 b… |
| external_id | string | – | A 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… |
| published | boolean | – | true publishes the article, false keeps it as a draft. |
| rehost_images | boolean | – | Copy 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 fals… |
| slug | object | – | Per-language URL slug. Auto-generated from the title if omitted. |
| title | object | – | Per-language title to set. |
| type | string | – | Content type (default 'article'). |
| visibility | string | – | Visibility: 'public', 'private' (team only), or 'link_only' (shareable token URL). |
No output schema declared.
No examples provided.
helpcenter_update_category Update HelpCenter Category ~447
Update an existing category by id in the connected HelpCenter.io help center. Partial update — only fields you pass change. Requires a write-scoped API key. Name and description are per-language objects keyed by language code. Args: - category_id (number, required): id of the category to update. - name (object, optional): per-language category name. - description (object, optional): per-language description. - parent_id (number, optional): id of the parent category for nesting (must belong to this site). Use 0 to make the category top-level. - icon (string, optional): icon identifier, max 190 chars. - position (number, optional): sibling order, ascending. To move several categories at once use helpcenter_reorder_categories instead. Returns: { status: "success", category: {...} } with the updated category. Errors: 403 if the key is read-scoped; 404 if the category id is not in this help center; 422 for unsupported language codes, an invalid parent_id, or a parent that would make the tree a loop (a category cannot be its own parent or a descendant's child).
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| category_id | integer | yes | Id of the category to update. |
| description | object | – | Per-language category description. |
| icon | string | – | Icon identifier for the category (max 190 chars). |
| name | object | – | Per-language category name. |
| parent_id | integer | – | Id of the parent category (for nesting). Must belong to this site. |
| position | integer | – | Sibling order, ascending. Only comparable within one parent. 0 puts the category first. |
No output schema declared.
No examples provided.
helpcenter_update_template_components Change Component Settings ~534
Change the settings of components already in the draft: a heading, a variant, a column count, a CustomHtml block's markup. It edits the help center's design DRAFT (its v2 template): the draft the dashboard's Template Editor opens, with a live preview. Nothing reaches visitors until helpcenter_publish_template — after editing, give the customer the Template Editor link from the result to review, and publish only when they ask. v2 help centers only (a classic one answers template_migration_required). Ids come from helpcenter_get_template. Settings are merged: name only the ones to change, and null resets one to its default. Read the component first (helpcenter_get_template, section 'component' with its id) and the values its type accepts (helpcenter_get_template_guide, topic 'components'). In a synced region (header and footer usually are) the change reaches every page, and one whose pages differ is refused until you choose with helpcenter_sync_template_region. Where an unsynced region holds the same id on several pages, name the page. This is the guide's `update_component` operation. Args: - components (array, 1-50): {id, config, page?}. - etag (string, optional): from your last read or edit; refuses (stale_draft) if the draft changed since. Returns: what each entry did (new ids), warnings worth relaying, and the draft status with its new etag.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| components | array | yes | The components to change, each with the settings to merge. Applied in order, all-or-nothing: if one is refused, nothing from this call is saved and the error names it by position (operation 0 is the… |
| etag | string | – | Optimistic lock: the draft etag from your last read, or the one your last edit returned. When given, the call is refused (stale_draft) if someone changed the draft since — so you never build on a sta… |
No output schema declared.
No examples provided.
helpcenter_update_template_css Change Custom CSS ~560
Change one custom CSS block: replace its CSS, rename it, switch it on or off, or move it in the order. Fields left out keep their value. It edits the help center's design DRAFT (its v2 template): the draft the dashboard's Template Editor opens, with a live preview. Nothing reaches visitors until helpcenter_publish_template — after editing, give the customer the Template Editor link from the result to review, and publish only when they ask. v2 help centers only (a classic one answers template_migration_required). Ids come from helpcenter_get_template. Read the block first (helpcenter_get_template, section 'custom_css' with its id). Switching a block off (enabled:false) shows the design without it and keeps it to switch back on. A theme's blocks are the customer's too, edited in the dashboard (Advanced → Custom CSS): to change how a theme looks, prefer a block of your own (helpcenter_add_template_css), which comes later and wins. This is the guide's `update_css` operation. Args: - id (string): the block. - css, label, enabled, index (optional): what to change. - etag (string, optional): from your last read or edit; refuses (stale_draft) if the draft changed since. Returns: what each entry did (new ids), warnings worth relaying, and the draft status with its new etag.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| css | string | – | The new CSS, replacing the block's. |
| enabled | boolean | – | false switches the block off without deleting it. |
| etag | string | – | Optimistic lock: the draft etag from your last read, or the one your last edit returned. When given, the call is refused (stale_draft) if someone changed the draft since — so you never build on a sta… |
| id | string | yes | Id of a custom CSS block, as the draft reports it. |
| index | integer | – | Move the block to this 0-based position among the CSS blocks. |
| label | string | – | A name for the block, e.g. 'Cards · hover lift'. |
No output schema declared.
No examples provided.
helpcenter_update_template_region Style a Page Region ~556
Style one region's wrapper on one page: its background, padding, bottom border and alignment. It edits the help center's design DRAFT (its v2 template): the draft the dashboard's Template Editor opens, with a live preview. Nothing reaches visitors until helpcenter_publish_template — after editing, give the customer the Template Editor link from the result to review, and publish only when they ask. v2 help centers only (a classic one answers template_migration_required). Ids come from helpcenter_get_template. config takes background (hex, or 'var(--hc-color-primary)' to follow the theme), padding (compact | standard | tall), borderBottom (boolean) and align (left | center); null resets one, and keys left out keep their value. Themes ship custom CSS that can paint a region itself (Compass paints the header and hero), and that CSS outranks this setting: when the outline marks the region "laid out by custom CSS", restyle it with helpcenter_add_template_css instead. This is the guide's `update_region` operation. Args: - page, region: which region. - config (object): the styling keys to change. - etag (string, optional): from your last read or edit; refuses (stale_draft) if the draft changed since. Returns: what each entry did (new ids), warnings worth relaying, and the draft status with its new etag.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| config | object | yes | Region styling: background (hex or 'var(--hc-color-primary)'), padding (compact | standard | tall), borderBottom (boolean), align (left | center). null resets one. |
| etag | string | – | Optimistic lock: the draft etag from your last read, or the one your last edit returned. When given, the call is refused (stale_draft) if someone changed the draft since — so you never build on a sta… |
| page | string | yes | Page kind: home, category, article, search, contact or notFound. |
| region | string | yes | Region of the page: header, hero, sidebar, main, footer or utility. |
No output schema declared.
No examples provided.
helpcenter_update_template_script Change a Script ~694
Change one script: its code (sending src, inlineBody or htmlBody switches it to that kind), position, pages, label or loading flags — or switch it off (enabled:false) without deleting it. Fields left out keep their value. It edits the help center's design DRAFT (its v2 template): the draft the dashboard's Template Editor opens, with a live preview. Nothing reaches visitors until helpcenter_publish_template — after editing, give the customer the Template Editor link from the result to review, and publish only when they ask. v2 help centers only (a classic one answers template_migration_required). Ids come from helpcenter_get_template. Once published, the script runs for every visitor: change its code only as the customer asked, from a source they trust. This is the guide's `update_script` operation. Args: - id (string): the script. - position, src | inlineBody | htmlBody, label, pages, enabled, defer, async, integrity, index (optional): what to change. - etag (string, optional): from your last read or edit; refuses (stale_draft) if the draft changed since. Returns: what each entry did (new ids), warnings worth relaying, and the draft status with its new etag.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| async | boolean | – | For src scripts: load async (default false). |
| defer | boolean | – | For src scripts: load deferred (default true). |
| enabled | boolean | – | false keeps the script configured without running it. |
| etag | string | – | Optimistic lock: the draft etag from your last read, or the one your last edit returned. When given, the call is refused (stale_draft) if someone changed the draft since — so you never build on a sta… |
| htmlBody | string | – | Raw HTML emitted verbatim — a vendor snippet, a <meta> verification tag. One of src / inlineBody / htmlBody. |
| id | string | yes | Id of a script, as the draft reports it. |
| index | integer | – | 0-based position in the list. Omit to append at the end. |
| inlineBody | string | – | JavaScript source, WITHOUT <script> tags. One of src / inlineBody / htmlBody. |
| integrity | string|null | – | Subresource Integrity hash, e.g. 'sha384-…'. |
| label | string | – | A name for the script, e.g. 'Plausible analytics'. |
| pages | – | – | Only run on these page kinds; null or omitted runs everywhere. |
| position | string | – | Where it is emitted: headStart, headEnd, bodyStart or bodyEnd. |
| src | string | – | External script URL (https only). One of src / inlineBody / htmlBody. |
No output schema declared.
No examples provided.
helpcenter_update_template_settings Change Design Settings ~599
Change document-level design settings in the draft: theme colours (light and dark), fonts, corner radius and density; the brand (name, logo, favicon); meta and SEO; and per-page settings such as a page's layout or how a category page lists its articles. It edits the help center's design DRAFT (its v2 template): the draft the dashboard's Template Editor opens, with a live preview. Nothing reaches visitors until helpcenter_publish_template — after editing, give the customer the Template Editor link from the result to review, and publish only when they ask. v2 help centers only (a classic one answers template_migration_required). Ids come from helpcenter_get_template. Each entry is a path and its new value — 'theme.colors.primary' → '#635bff' — or a whole group at once: 'theme.colors' → {primary, accent, …}. The paths and the values each accepts are in helpcenter_get_template_guide (topic 'settings'); anything else is refused with the list of what is accepted. Colours take hex, rgb() or hsl() (stored as hex); set theme.darkColors alongside theme.colors so dark mode stays readable. An image setting (brand.logoAssetId, brand.faviconAssetId) takes {source_url: 'https://…'}: the image is copied onto this help center. Region styling has its own tool (helpcenter_update_template_region). This is the guide's `set` operation. Args: - settings (array, 1-50): {path, value}; null clears a nullable setting. - etag (string, optional): from your last read or edit; refuses (stale_draft) if the draft changed since. Returns: what each entry did (new ids), warnings worth relaying, and the draft status with its new etag.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_key | string | yes | The 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… |
| etag | string | – | Optimistic lock: the draft etag from your last read, or the one your last edit returned. When given, the call is refused (stale_draft) if someone changed the draft since — so you never build on a sta… |
| settings | array | yes | The settings to change. Applied in order, all-or-nothing: if one is refused, nothing from this call is saved and the error names it by position (operation 0 is the first entry). |
No output schema declared.
No examples provided.
How do I install the HelpCenter.io for agents MCP server?
HelpCenter.io for agents is a hosted endpoint at https://mcp.helpcenter.io/agent, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.helpcenter.io
claude mcp add --transport http io-helpcenter-agent 'https://mcp.helpcenter.io/agent'
What is the HelpCenter.io for agents MCP server?
HelpCenter.io for agents is an MCP server listed in the public MCP registry as io.helpcenter/agent. Without an account, an AI agent can create or migrate a help center and hand its user a claim link. This page covers its hosted endpoint (https://mcp.helpcenter.io/agent).
Is the HelpCenter.io for agents MCP server safe to use?
HelpCenter.io for agents scores 54 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the HelpCenter.io for agents MCP server expose?
HelpCenter.io for agents exposes 60 tools: helpcenter_create_help_center, helpcenter_request_migration, helpcenter_get_migration_request, helpcenter_get_help_center, helpcenter_discard_help_center, and 55 more. Their descriptions and schemas cost roughly 29,527 tokens of context every time the server is loaded.
Does the HelpCenter.io for agents MCP server require authentication?
No. We connected to HelpCenter.io for agents without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the HelpCenter.io for agents MCP server still maintained?
HelpCenter.io for agents is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.