- Brand
- Documentation.AI
- Category
- Content & Design
- Primary Subcategory
- CMS & Website Content Management
Integration details
Description
Documentation.AI is a documentation and knowledge platform for product guides, knowledge bases, help centers, and API references. This plugin works directly in your Documentation.AI projects: search and read pages, write new pages, edit existing content, reorganize navigation, manage images and screenshots, and publish when you're ready. Changes appear as unpublished edits in the same editor your team uses, so you can review the diff before anything goes live. For larger updates, work on a separate working version and apply it to your live site when it's approved. Use it to: - Update pages after a product release or API change - Write new guides, help center articles, and changelog entries from a spec or your notes - Find and fix outdated steps and inconsistent terminology - Move or rename pages, update navigation, and add redirects - Import screenshots and diagrams, or replace an outdated screenshot everywhere it appears - Review unpublished changes and publish them Sign in with your Documentation.AI account. The plugin reaches only the projects your account can access, with your organization role: Viewers can read, Editors and Admins can edit and publish, and only Admins can delete files from the media library. Limitations: search covers the published site, so content that exists only as unpublished changes is found by browsing files rather than by search. Images are imported from public https links or uploaded through a short-lived link. The plugin does not edit documentation hosted on other platforms.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- CMS & Website Content Management
- Secondary Subcategories
- None listed
- Brand
- Documentation.AI
- Access
- Account required
- First tracked
- 2026-11-04
- Tool count
- 32
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Documentation.AI
Get updates when Documentation.AI’s Discoverability Score or category rank changes.
Competing in ChatGPT CMS & Website Content Management
View Category32 tools agents can invoke
Applies published changes from a source working version to a target working version in the documentation project. Use this when changes are ready to be shared with another working version. Applying them to the live version updates the live site. Only published changes are applied; unpublished changes in the source working version are not included. <examples> merge_branches(base='main', head='update-auth-docs') merge_branches(base='main', head='api-v2-docs', commitMessage='Document the v2 endpoints') </examples> <hints> - base identifies the target working version; head identifies the source working version. list_branches marks the live version. - If the changes have already been applied, the result reports alreadyMerged instead of failing. - The source working version remains available afterwards. - If both working versions changed the same passage, nothing is applied. resolve_conflict does not cover this case: make the passage read the same in both working versions, publish, and retry. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#branches
merge_branches
Returns a line-by-line comparison of unpublished changes to one file in a working version of the documentation project, against the content those edits started from. Use this to review a file before publishing, including documentation.json. Use list_changes to find files with unpublished changes and get_page to read current content. <examples> diff_page(path='docs/guide.mdx') diff_page(path='documentation.json', branch='update-auth-docs') </examples> <hints> - A file with no unpublished changes returns changed=false and no comparison. - An added file is compared with an empty file, so all content appears as additions. - The comparison is returned in `diff` and is truncated above 100 KB. get_page returns current content subject to its own size limit. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#review-and-publish
diff_page
Creates a file on a working version in the documentation project, with optional placement in the navigation. Changes stay unpublished until publish runs. Use this for a new page, or for any other new file such as a stylesheet, script or snippet. addToNav adds a page to navigation in the same call; update_site_config can add it later. Publishing the live version puts it on the live site. <examples> create_page(path='docs/webhooks.mdx', content='---\ntitle: Webhooks\n---\n\n# Webhooks\n\n...') create_page(path='docs/webhooks.mdx', content='...', addToNav={title: 'Webhooks', after: 'docs/getting-started'}) create_page(path='docs/webhooks.mdx', content='...', addToNav={title: 'Webhooks', parent: '/navigation/tabs/0/groups/1'}) </examples> <hints> - path is a file path with its extension. A navigation path such as "docs/webhooks" would create a file the site cannot render. - An MDX page must begin with YAML frontmatter containing at least a title; other files, such as .css or .js, take their content as-is. - Creating a file that already exists fails rather than overwriting it. - addToNav.after takes the navigation path of a page to follow; addToNav.parent takes the pointer of a group or tab from get_site_config. The page is created either way, and the result says whether the navigation changed. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
create_page
Creates a working version of the documentation project from an existing version, using the live version when sourceBranch is omitted. Use this to prepare changes separately before updating the live site. Publish changes to the working version, then use merge_branches to apply them to the live version when ready. <examples> create_branch(branchName='update-auth-docs') create_branch(branchName='api-v2-docs', sourceBranch='develop') </examples> <hints> - Version names cannot contain spaces; use hyphens to separate words. - The new working version starts from the most recently published state of its source. Later changes to the source are not included. - Unpublished changes in the source working version are not copied. - Creating a working version does not select it. Pass its name as `branch` on later calls, or use select_project to set the session default. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#branches
create_branch
Deletes up to 100 files from the documentation project's library. Use this to clear files that are no longer needed. Pages still showing a deleted file show it as missing; nothing rewrites those pages. <examples> delete_media({ mediaIds: ["b1f2..."] }) </examples> <hints> - mediaIds are the ids files carry when they are stored or listed. - Check what still uses a file before deleting it. This does not refuse a file that is in use. - One result per file: some may be refused while the rest are deleted. - Deletion cannot be undone from here. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
delete_media
Deletes a file on a working version in the documentation project and removes its navigation entries. Changes stay unpublished until publish runs. Use this to remove a page that is no longer wanted. Every navigation entry for it is removed in the same call, so nothing is left pointing at a page that is gone. <examples> delete_page(path='docs/legacy-api.mdx') </examples> <hints> - The deletion stays unpublished until publish runs, and revert_page undoes it before then. - Redirecting the old path in documentation.json keeps existing links working. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
delete_page
Deletes a working version of the documentation project. Use this after its changes have been applied elsewhere or the work has been abandoned. Changes available only in that working version may become inaccessible. list_pull_requests shows whether a review request is still open for it. <examples> delete_branch(branchName='update-auth-docs') </examples> <hints> - The live version cannot be deleted, and editing restrictions may prevent deleting others. - Applying changes with merge_branches leaves the source working version in place; delete it separately when no longer needed. - There is no undo. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#branches
delete_branch
Returns the current content of one page on a working version in the documentation project using a search result ID, including unpublished changes. Use this to read a page found by search. It returns current content from the editing session with a title, URL and metadata. This may differ from the search snippet or live site. Use get_page when you already have a file path. <examples> fetch(id='docs/getting-started.mdx') fetch(id='docs/getting-started') </examples> <hints> - id is the file path from a search result. This tool also accepts a navigation path without the extension. - text is the file verbatim, frontmatter included; title comes from the frontmatter, or the file name when there is none. - url is where the published page is served, for citing it. The text here may be newer than what that URL shows. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#read-content
fetch
Returns the Documentation.AI MDX component reference, including attributes, allowed values and usage examples, plus reusable snippets and page frontmatter. Use this before writing or editing MDX components. Supported components: Callout, Card, Columns, Tabs, Steps, Expandable, CodeGroup, Image, Icon, Video, Iframe, MermaidDiagram, ParamField, CollectionList, CollectionContent, Update, Board, Request, Response, ResponseField, ExpandableGroup, Script, SVG, AuthParams, BodyParams. Omit component for the full reference. No documentation project selection is required. <examples> get_component_reference() get_component_reference(component='Callout') get_component_reference(component='Board') get_component_reference(component='Reusable snippets') </examples> <hints> - Attributes are kebab-case, such as `param-type`, `default-open`, `show-lines` and `due-date`. - Boolean attributes are written as strings: `required="true"`, not `required={true}`. - MDX component names are case-sensitive; components from other platforms do not render. - Content shared across pages lives in `snippets/`; ask for "Reusable snippets" for the import rules, including the restrictions on `.jsx` components. - Site-wide CSS and JavaScript are documentation.json settings, not components; ask for "Custom CSS and scripts". - AuthParams and BodyParams are normally generated from an OpenAPI spec rather than written by hand. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#authoring-reference
get_component_reference
Returns the Documentation.AI configuration reference for documentation.json, including setting types, allowed values and descriptions. Use this before changing site configuration or navigation to check the supported format. No documentation project selection is required. Use get_site_config to read the current documentation.json for a documentation project. <examples> get_config_reference() get_config_reference(section='navigation') get_config_reference(section='customCss') get_config_reference(section='page') </examples> <hints> - Called with no argument it lists every section that can be described. - Settings under navigation are kebab-case, such as `show-sidebar` and `openapi-mode`. - Navigation paths omit the .mdx extension; file paths carry it. - Site-wide styling is `customCss` and site-wide JavaScript is `scripts`; both reference files relative to the documentation project root or https:// URLs, and neither accepts inline content. - Unknown settings are rejected rather than ignored, so a misspelling breaks the site build. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#authoring-reference
get_config_reference
Returns the current content of one file on a working version in the documentation project, including unpublished changes and YAML frontmatter for an MDX page. Use this to read a page before changing it, or to quote what a page says. It returns one file, so use list_pages to discover paths and search to find pages by topic. <examples> get_page(path='docs/getting-started.mdx') get_page(path='documentation.json') get_page(path='docs/guide.mdx', branch='update-auth-docs') get_page(path='api/openapi.yaml', find='x-rate-limit') get_page(path='changelog.mdx', offset=1200, limit=200) </examples> <hints> - path is a file path with its extension, as list_pages reports it. A navigation path such as "docs/guide" will not resolve. - Reads the current content in the editing session, including changes made by other collaborators. - This is the text an edit is matched against, so an edit built from anywhere else may match nothing. - A file over 200 KB is too large to return whole, so its opening lines come back with, for a page, its outline. offset and limit read any part, find locates text, and outline maps a page; edits still apply to the whole file. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#read-content
get_page
Returns documentation.json from a working version in the documentation project, including unpublished changes to navigation, branding, SEO, redirects and integrations — the whole file, one part of it, an outline of its navigation, or the navigation entries matching a search. Use this to understand the site's structure before changing it, to find where a page sits in the navigation, or to read site-wide settings. It does not return page content — get_page does that. <examples> get_site_config() get_site_config(outline=true, depth=2) get_site_config(find='webhooks') get_site_config(pointer='/navigation/tabs/0/groups/3') </examples> <hints> - Reads the current content in the editing session, including changes made by other collaborators. - On a large site, start with outline: every tab and group with its pointer and the number of pages and links beneath it, in a few kilobytes. Then read one part in full with pointer, or locate an entry by title or path with find. - The whole file can only be returned while it is under 200000 bytes. Past that, outline, find and pointer still work. - The pointers returned are the ones update_site_config takes. They are positions, so guard a write with a test patch on the entry’s name: if the navigation changed since it was read, the write is refused rather than applied to the wrong entry. - When the file is not valid JSON, config is null and parseError and raw are returned instead, so the file can be repaired rather than guessed at. - Navigation entries hold navigation paths, without the .mdx extension. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#read-content
get_site_config
Imports up to 10 files into the documentation project from public https URLs, and returns the stored address and the MDX snippet for each. Use this to bring a diagram, screenshot or document into the library so a page can show it. It stores the file and returns its address and snippet; no page is changed. <examples> import_media({ files: [{ url: "https://example.com/architecture.png", altText: "Service architecture" }] }) import_media({ files: [{ url: "https://example.com/a.png", name: "overview.png" }, { url: "https://example.com/b.mp4" }] }) </examples> <hints> - https only, and the address must be reachable from the public internet. - A file whose bytes are already in the library is reused rather than stored twice. - A name already taken gets a suffix, so importing screenshot.png twice gives screenshot-2.png. - One result per file: some may fail while the rest succeed. Check failed. - Give images altText. It is what a screen reader announces. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
import_media
Lists unpublished changes in a working version of the documentation project, including files added, modified or deleted. Use this to review what publish would include. It covers changes from all collaborators in the working version, whether made in the editor or through MCP. Publishing the live version updates the live site. <examples> list_changes() list_changes(branch='update-auth-docs') </examples> <hints> - changeStatus is added, modified or deleted. - An empty list means the working version has no unpublished changes; it does not indicate what is on the live site. - diff_page shows the changes inside one file. - Pass nextCursor as cursor to retrieve more results. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#review-and-publish
list_changes
Lists images, video and files stored in the documentation project, with the public address of each and the MDX that places it on a page. Use this to see what a project holds, to get the snippet for a file, or to see what was added after someone uploaded from the dashboard. It reads the library and changes nothing. <examples> list_media() list_media({ kind: "video" }) list_media({ since: "2026-09-18T10:00:00Z" }) </examples> <hints> - Newest first, so the first page is what changed most recently. - since narrows the answer to files stored after a moment you name, such as when you last looked. - The snippet is the MDX that would place a file on a page; listing changes no page. - Pass nextCursor as cursor to retrieve more results; a large library needs several calls. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#read-content
list_media
Lists files on a working version in the documentation project, including unpublished changes, with a file path and size when available. Use this to get exact file paths, to check whether a file already exists before creating it, or to see what a folder contains. It is not a way to find pages by topic — search answers that, and it does not return file contents. <examples> list_pages() list_pages(branch='update-auth-docs') </examples> <hints> - Returns every file, not only pages: documentation.json, OpenAPI specs and images are included. - Paths are file paths, with the extension, which is the form the page tools take. - A file listed here may still be absent from the navigation, in which case the site does not show it. - Pass nextCursor as cursor to retrieve more results. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#read-content
list_pages
Lists organizations and documentation projects accessible to the signed-in user, including organization roles and the IDs accepted by documentation project tools. Use this to find organizationId and documentationId before selecting a documentation project or targeting one on a tool call. The organization role indicates whether the user can read or change its documentation projects. Page content is not included. <examples> list_projects() </examples> <hints> - role is the role in the organization: admin and editor can change content, viewer cannot. - One organization can hold several documentation projects. - IDs are UUIDs; pass organizationId and documentationId together, exactly as returned here. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#projects
list_projects
Lists review requests for the documentation project, with source and target working versions, status, timestamps and a URL for each request. Use this to see which published changes are awaiting review or whether a working version already has an open review request. This tool only lists requests; it does not create, apply or close them. <examples> list_pull_requests() list_pull_requests(state='closed') list_pull_requests(state='all') </examples> <hints> - Defaults to open review requests. - head identifies the source working version; base identifies the target working version. - mergedAt records when the requested changes were applied. It is null if the request was closed without applying them. - Pass nextCursor as cursor to retrieve more results. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#branches
list_pull_requests
Lists working versions of the documentation project, marking the live version, with the latest publication identifier for each and whether direct publication is restricted. Use this to find exact version names before reading, editing or publishing changes, including the live version to target when applying changes to the live site. It does not select a working version. <examples> list_branches() </examples> <hints> - live is true for the live version. Publishing it, or applying changes to it, updates the live site; other working versions do not. - Restricted working versions may refuse direct publication. - Working version names are case-sensitive. Pass them exactly as returned in the `branch` parameter of other tools. - Pass nextCursor as cursor to retrieve more results. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#branches
list_branches
Moves or renames a file on a working version in the documentation project, preserving its content and editing history. Use this to reorganise files or rename a page. Every navigation entry for the file is updated to the new navigation path in the same call. <examples> move_page(path='guide.mdx', destination='docs/guide.mdx') move_page(path='docs/old-name.mdx', destination='docs/new-name.mdx') </examples> <hints> - destination is the full path to move to, not just a new file name. - After deployment, moving a page changes its URL on the live site. Add a redirect in documentation.json to preserve existing links. - Stays unpublished until publish runs. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
move_page
Publishes all unpublished changes in a working version of the documentation project. Publishing the live version also updates the live site. list_changes and diff_page show what would be published. Publication includes changes from all collaborators in that working version, whether made in the editor or through MCP. If newer published content conflicts with the edits, nothing is published and the conflicts are returned. <examples> publish(commitMessage='Document the webhook retry behaviour') publish(commitMessage='Fix broken links', branch='update-auth-docs') </examples> <hints> - Collaborators with the documentation project open see a notice naming who published. - Edits made while publishing remain unpublished so they can be included next time. - For conflicts, the file is left untouched and each conflict returns the merged file with the disputed passages. resolve_conflict takes the reconciled file. - Publishing another working version saves its changes without updating the live site. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#review-and-publish
publish
Replaces a stored file with what a public https URL serves, keeping the same address so every page already showing it picks up the new version. Use this to update a screenshot or diagram without editing any page. The replacement must be the same type as the file it replaces. <examples> replace_media({ mediaId: "b1f2...", url: "https://example.com/architecture-v2.png" }) </examples> <hints> - mediaId is the id a file carries when it is stored or listed. - An image can only be replaced by an image, a video by a video. - The previous version is kept, so support can recover it after a mistaken replacement. - Readers may see the old file for a short while after, until caches catch up. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
replace_media
Returns a short-lived link where the person can drop files from their own computer into the documentation project, such as a screenshot. A tool call cannot carry a file, so this is how a local file reaches the library. Use this when the person has a file that is not at a public https address. Give them the link and wait for them to say they are done; whatever they drop is then in the library, stored after the requestedAt this returns. <examples> request_upload({ note: "Screenshot of the billing page" }) </examples> <hints> - The link opens in the dashboard and needs the person to sign in; it lasts 15 minutes. - Uploaded files get the same type, size and quota checks as any upload. - The note is shown on the upload page, so say what you are asking for. - A file already at a public https address does not need this; it can be imported directly. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
request_upload
Saves reconciled content for a file with a publication conflict in a working version of the documentation project. Use this after publish returns conflicts. ours already includes every change that does not conflict; diff shows each disputed passage, with the newer published content as removed lines and the unpublished edits as added lines. Supply the complete file, starting from ours, with those passages reconciled. The resolution stays unpublished until publish runs again. <examples> resolve_conflict(path='docs/guide.mdx', content='---\ntitle: Guide\n---\n\n# Guide\n\n...') </examples> <hints> - content is the complete reconciled file, including frontmatter for an MDX page. - Resolve each affected file, then call publish again. - A file removed from the newer published content cannot be resolved with this tool. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#review-and-publish
resolve_conflict
Discards every unpublished change in a working version of the documentation project, across all files and all collaborators, restoring its published state. Use this only to abandon all pending work on a working version. To discard edits to a single page, use revert_page. It does not undo changes already published. <examples> revert_all_changes() revert_all_changes(branch='draft-v2') </examples> <hints> - This discards other collaborators' unpublished work as well as your own. Discarded work is not recoverable. - list_changes shows what would be discarded; check it first. - Collaborators with an affected file open see the restored content immediately. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#review-and-publish
revert_all_changes
Discards unpublished changes to one file in a working version of the documentation project, restoring its published content. Use this to discard unwanted edits to a single page before publishing. It does not undo changes already published. <examples> revert_page(path='docs/guide.mdx') </examples> <hints> - Every unpublished change to the file is discarded, including changes from other collaborators. Discarded work is not recoverable. - Collaborators with the file open see the restored content immediately. - diff_page shows what would be discarded. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#review-and-publish
revert_page
Replaces the content of a page on a working version in the documentation project, applying a line-by-line comparison to preserve concurrent edits where possible. Use this when a change is too structural to express as replacements — a reorganised page, a format conversion. For anything smaller, update_page is safer because it touches only what it names. <examples> rewrite_page(path='docs/guide.mdx', content='---\ntitle: Guide\n---\n\n# Guide\n\n...') </examples> <hints> - content is the complete file, frontmatter included. An MDX page needs at least a title in its frontmatter. - The comparison is made against the current content get_page returns and applied in the editing session; concurrent edits may cause changes to be skipped. - If the page moved on too far for the comparison to apply, the call is refused and the current text is returned. - Stays unpublished until publish runs. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
rewrite_page
Searches the live site of the documentation project by meaning and keyword, returning each match with its title, file path, URL and snippet. Use this to find pages by topic. Results reflect the last live site deployment: unpublished changes, and working versions other than the live version, are not searched. get_page and fetch return current content, which may differ from a result. <examples> search(query='configure webhooks') search(query='rate limits', limit=5) search(query='authentication', semanticRatio=0) </examples> <hints> - semanticRatio balances meaning against exact wording: 0 matches keywords only, 1 matches meaning only, and the default of 0.75 favours meaning. - Lower semanticRatio when looking for an exact term such as a function or header name. - id and path are the same file path: fetch and get_page both read the page by it. url is where the published page is served, for citing or linking it; the current text of the page comes from fetch or get_page, not from that URL. - Search does not accept `branch` and does not use the session working version. Use list_pages to discover files on another working version. - No results can mean the topic is missing, or that it is not on the live site yet. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#read-content
search
Finds files in the documentation project by name or alternative text, with the public address of each and the MDX that places it on a page. Use this before importing a file, to check the project does not already have it, and to find one file in a library too large to read through. It searches the stored library, not the pages that use those files. <examples> search_media({ query: "architecture" }) search_media({ query: "logo", kind: "image" }) </examples> <hints> - Matches any part of the file name or its alternative text, ignoring case. - Nothing found is an answer, not a failure: import the file, or ask for the upload link. - Newest first, and paged; pass nextCursor as cursor for the rest. - A file whose bytes are already stored is reused on import, so a near-match is worth checking. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#read-content
search_media
Selects the default documentation project and optional working version for later tool calls. The documentation project selection is remembered for seven days; the working version selection lasts for this session. Use this when working on one documentation project across several calls. To target a different documentation project for one call, pass organizationId and documentationId on that call without changing the selection. <examples> select_project(organizationId='11111111-1111-4111-8111-111111111111', documentationId='22222222-2222-4222-8222-222222222222') select_project(organizationId='11111111-1111-4111-8111-111111111111', documentationId='22222222-2222-4222-8222-222222222222', branch='update-auth-docs') </examples> <hints> - Both IDs come from list_projects and are UUIDs. - Omitting working version clears the previous session working version, so later calls default to the live version. - Use list_branches to find working version names. Selecting a working version does not create it. - Selecting an inaccessible documentation project fails and preserves the previous selection. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#projects
select_project
Replaces exact text in a page on a working version in the documentation project. Changes appear in the editing session and stay unpublished until publish runs. Use this for focused changes to an existing page: a sentence, section or code sample. Edits are matched against the current content get_page returns. create_page adds a new page and rewrite_page replaces most of one. <examples> update_page(path='docs/guide.mdx', edits=[{old_string: '## Setup', new_string: '## Getting started'}]) update_page(path='docs/guide.mdx', edits=[{old_string: 'v1.2', new_string: 'v2.0'}], replaceAll=true) </examples> <hints> - old_string must be the exact text from the page, copied with its indentation, and must appear only once unless replaceAll is set. - Read the page first: it may have changed since it was last seen, and an edit is matched against what it says now. - The stored text is not always what was written. Saving normalises a page — underscores in prose become \_, components gain their default attributes such as collapsed="false", long frontmatter values fold onto several lines — so build old_string from what get_page returns, never from what was sent to create_page or rewrite_page. - Several edits apply in order, so a later one can target text an earlier one produced. - If an edit matches nothing the whole call is refused and the page is left alone, with the current text returned to rebuild from. - A skipped change means that passage moved on between reading the page and applying the edit. The other changes still apply, and the skipped one is reported rather than forced. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
update_page
Updates documentation.json on a working version in the documentation project by adding, removing, replacing, moving or copying values at JSON pointers. Use this for any change to site configuration — a navigation entry, a colour, a redirect, the site name. get_site_config returns the current structure, and a pointer addresses a place in it. The change is checked before it lands: one that would leave the navigation pointing at a page that does not exist, or otherwise break the site, is refused with the reason. Not for page content, which update_page handles. <examples> update_site_config(patches=[{op: 'add', path: '/navigation/tabs/0/groups/1/pages/-', value: {title: 'Webhooks', path: 'docs/webhooks'}}]) update_site_config(patches=[{op: 'replace', path: '/colors/light/brand', value: '#0c6b56'}]) update_site_config(patches=[{op: 'test', path: '/navigation/tabs/0/groups/1/group', value: 'v4.2'}, {op: 'add', path: '/navigation/tabs/1', value: {tab: 'v4.2'}}, {op: 'move', from: '/navigation/tabs/0/groups/1/pages', path: '/navigation/tabs/1/groups'}, {op: 'remove', path: '/navigation/tabs/0/groups/1'}]) </examples> <hints> - Pointers follow RFC 6901: segments separated by "/", array entries by index, and "-" to append to an array. - Navigation entries carry navigation paths, without the .mdx extension. - Patches apply in order as one atomic change, validated once after the last, so a later patch can address what an earlier one created. - To restructure, use move or copy: they name a source, so a subtree is never resent as a literal. - Guard entries addressed by index with a test on their name, as in the last example: if a collaborator moved one, the whole patch is refused. - A refused change leaves the file untouched and names every problem. A change the site would merely ignore lands, with warnings. - The file is written in its canonical two-space form. Stays unpublished until publish runs. </hints> Documentation: https://documentation.ai/docs/ai/authoring-mcp-server#edit-content
update_site_config
Documentation.AI ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Documentation.AI's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Documentation.AI alternatives on ChatGPT?
As of 2026-11-04, Documentation.AI competes with About My Sound, Adobe Experience Manager, AI Engine for WordPress, Atmoscreen, BrightSite, CMDPress, Contentful, Digital Vibes Echo and 20 more in ChatGPT CMS & Website Content Management, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.


