Ask about anything in HelpGuides.io Documentation

Type a question in your own words below. Answers are written from our published articles and cite the ones they came from.

Recently updated

    ↑↓ select · ↵ open · esc close
    Dashboard
    Edit Article Logout

    Model Context Protocol Endpoints


    HelpGuides exposes a set of Model Context Protocol (MCP) tools that let AI assistants and agents search, read, write and manage the documentation in your project. This article lists every tool and its parameters.

    Endpoint

    AI Settings Model Context Protocol tab with the MCP URL
    Finding your MCP URL

    Each project has its own MCP endpoint on its site's domain:

    https://YOUR-DOMAIN/mcp

    Copy it from AI Settings on the Model Context Protocol tab. The endpoint uses the Streamable HTTP transport. When Enable Model Context Protocol is off, it returns 404. See AI Settings.

    Authentication

    The endpoint uses OAuth 2.1. MCP clients such as Claude and ChatGPT handle this for you:

    1. A request without a valid token gets 401 with a WWW-Authenticate header pointing to /.well-known/oauth-protected-resource.
    2. The client registers itself using dynamic client registration and sends you to HelpGuides to sign in.
    3. HelpGuides asks you to Approve or Deny the client's access to search and read your articles, create and update draft articles, and publish articles.
    4. The client receives an access token, valid for one hour, and a refresh token it uses to get new ones.
    EndpointURL
    Protected resource metadatahttps://YOUR-DOMAIN/.well-known/oauth-protected-resource
    Authorization server metadatahttps://helpguides.io/.well-known/oauth-authorization-server
    Client registrationhttps://helpguides.io/oauth/register
    Authorizationhttps://helpguides.io/oauth/authorize
    Tokenhttps://helpguides.io/oauth/token

    Authorization uses PKCE with S256. Send the access token as Authorization: Bearer ACCESS_TOKEN. A token only works for projects in the HelpGuides account that approved it; using it on another account's project returns 403. The MCP endpoint accepts only these OAuth access tokens, not API keys.

    Working copies

    Edits made through MCP don't change the live article. update_article, update_article_blocks and add_image_to_article save a working copy by default (saveAsWorkingCopy is true), and each edit builds on the working copy left by the one before.

    • get_article returns the working copy when there is one, with has_working_copy: true. Always use the block IDs it returns.
    • publish_article makes the working copy live.
    • Setting saveAsWorkingCopy to false saves straight to the article, including a published one.

    Tools

    ToolWhat it doesChanges content
    get_whoamiNames the connected project and site, and summarizes what the tools can do. Call it first.No
    get_instructionsReturns usage rules and workflow guidance, plus your project's Prompt Instructions.No
    get_block_schemaReturns the JSON structure of every block type.No
    searchSearches articles.No
    get_articleReturns an article's blocks, or its working copy.No
    create_articleCreates a draft article.Yes
    update_articleReplaces an article's title and/or all its blocks.Yes
    update_article_blocksUpdates, inserts or deletes individual blocks.Yes
    publish_articlePublishes or schedules an article.Yes
    get_categoriesLists categories.No
    set_categoryAssigns an article to a category.Yes
    create_categoryCreates a category.Yes
    update_categoryRenames, describes or moves a category.Yes
    build_linksAdds links to an article from related published articles.Yes
    get_stale_articlesLists articles past their stale date.No
    get_articles_with_open_commentsLists articles with open review comments.No
    list_agent_commentsLists every open review comment.No
    get_commentsReturns an article's review comments.No
    resolve_commentMarks a review comment resolved.Yes
    dismiss_commentDismisses a review comment.Yes
    create_image_uploadStarts an image upload.No
    finish_image_uploadChecks and publishes an uploaded image.Yes
    add_image_to_articleInserts an image block into an article.Yes

    Every tool that takes postuid_or_url accepts either the article's postuid or its full URL. Tools return JSON; a failure returns {"error": "..."}.

    Project and guidance

    get_whoami, get_instructions and get_block_schema take no parameters. get_instructions ends with anything you've entered under Prompt Instructions in AI Settings. get_block_schema describes each block type (paragraph, header, list, checklist, table, image, code, quote, callout, faq, raw, video, file, subcategories, hr and api).

    ParameterTypeRequiredDescription
    sstringYesWhat to search for. Start with keyword: to match exact words instead of meaning.
    limitintegerNoNumber of results. Default 10, maximum 25.

    Results include drafts as well as published articles. Each result has the postuid, title, slug, status, the matching section and an excerpt, so the same article can appear more than once.

    get_article

    ParameterTypeRequiredDescription
    postuid_or_urlstringYesThe article's postuid or full URL.

    Returns postuid, title, blocks (with their IDs), status and has_working_copy.

    Create and edit

    create_article

    ParameterTypeRequiredDescription
    titlestringYesThe article's title. The slug is made from it.
    blocksarrayOne of blocks or htmlThe body as Editor.js blocks. Preferred.
    htmlstringOne of blocks or htmlThe body as HTML, converted to blocks. Used only when blocks is missing.

    Always creates a draft. Returns the new postuid and an edit_url for the editor.

    update_article

    ParameterTypeRequiredDescription
    postuid_or_urlstringYesThe article's postuid or full URL.
    titlestringYes (may be empty)The new title. Leave empty to keep the current one.
    blocksarrayNoA complete set of blocks that replaces all existing blocks. Omit to change only the title.
    saveAsWorkingCopybooleanNoDefault true. See Working copies.

    update_article_blocks

    ParameterTypeRequiredDescription
    postuid_or_urlstringYesThe article's postuid or full URL.
    operationsarrayYesEdits applied in order. Each has action, block and targetBlockId.
    saveAsWorkingCopybooleanNoDefault true.
    ActionWhat it does
    updateReplaces the block with ID targetBlockId with block.
    insertInserts block before targetBlockId, or at the end when targetBlockId is null. To insert several blocks in order, target the same block with each insert.
    deleteRemoves the block with ID targetBlockId.
    { "postuid_or_url": "https://docs.example.com/article/getting-started", "operations": [ { "action": "update", "targetBlockId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "block": { "type": "paragraph", "data": { "text": "Updated text." } } }, { "action": "insert", "targetBlockId": null, "block": { "type": "header", "data": { "text": "Next steps", "level": 2 } } } ] }

    New block IDs must be UUIDs in the standard 8-4-4-4-12 format, or left out so one is generated.

    publish_article

    ParameterTypeRequiredDescription
    postuid_or_urlstringYesThe article's postuid or full URL.
    publish_datestringNoAn ISO 8601 date and time with a UTC offset, such as 2026-03-17T15:00:00-05:00. A future time schedules the article instead of publishing it now.

    Promotes any working copy. Returns the status, the public url and promotedWorkingCopy.

    Categories

    ToolParameters
    get_categoriesNone. Returns each category's categoryuid, name and description.
    set_categorypostuid_or_url and categoryuid (both required).
    create_categoryname (required), description and parentuid for a subcategory. Returns the new categoryuid.
    update_categorycategoryuid (required), and any of name, description and parentuid. Empty values keep what's there.
    ToolParametersNotes
    build_linkspostuid_or_url (required)The article must be published. Finds related published articles and adds a link to this article in up to 5 of them, then lists what changed. See AI Writing Tools.
    get_stale_articleslimit (default 50)Articles whose Date Stale is today or earlier, with their status, status notes and URL.

    Review comments

    These tools let an agent act on instructions left in the editor's Review tab. See Review Comments and AI Agents.

    ToolParametersNotes
    get_articles_with_open_commentslimit (default 50)Articles with open comments and how many each has.
    list_agent_commentslimit (default 100)Every open comment with its article, oldest first.
    get_commentspostuid_or_url (required)All comments on one article, open, resolved and dismissed, newest first.
    resolve_commentcommentuid (required), resolution_notesMarks the comment resolved by Cowork. Can post to Slack when Notify on Cowork updates is on.
    dismiss_commentcommentuid (required), resolution_notesCloses the comment without edits. Never posts to Slack.

    Images

    Adding an image takes three tools, so the image itself never passes through the conversation:

    1. create_image_upload (no parameters) returns an uploadId and a write-only uploadUrl that's valid for 10 minutes.
    2. The client uploads the file with an HTTP PUT that includes the header x-ms-blob-type: BlockBlob.
    3. finish_image_upload with upload_id checks the file is a PNG, JPEG, GIF or WebP under 5 MB, publishes it and returns its public url, width and height. Each upload can be finished once.
    curl -sS -X PUT -H "x-ms-blob-type: BlockBlob" --data-binary @screenshot.png "UPLOAD_URL"

    Then add_image_to_article inserts it:

    ParameterTypeRequiredDescription
    postuid_or_urlstringYesThe article's postuid or full URL.
    image_urlstringYesThe https URL from finish_image_upload.
    alt_textstringYesWhat the image shows.
    captionstringNoText shown under the image.
    insert_before_block_idstringNoThe block to insert before. Omit to add the image at the end.
    width, heightintegerNoPixel size from finish_image_upload.
    saveAsWorkingCopybooleanNoDefault true.
    1. Call get_whoami and get_instructions.
    2. Call search to find existing articles before writing a new one.
    3. Call get_block_schema, then create_article, or get_article followed by update_article_blocks.
    4. Call get_categories and set_category.
    5. Review the draft or working copy in HelpGuides, then publish it in the editor or with publish_article.

    To connect an assistant, see Add Claude as an MCP Connector and Add ChatGPT as an MCP Connector.


    How helpful was this article?

    👍 or 👎

    Related Articles

    Markdown Version