← Mintlify MCPCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Mintlify MCP
Snapshot Sep 30, 2026 · 22:48 UTC · version 1.0.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "managing-navigation",
"description": "Use when adding, renaming, moving, or deleting docs pages, groups, tabs, anchors, versions, languages, or products in the navigation tree through the Mintlify Admin MCP, or when restructuring the sidebar.",
"included_files": [],
"skill_md_contents": "---\nname: managing-navigation\ndescription: Use when adding, renaming, moving, or deleting docs pages, groups, tabs, anchors, versions, languages, or products in the navigation tree through the Mintlify Admin MCP, or when restructuring the sidebar.\n---\n\n# Managing Navigation\n\n## Overview\n\nNavigation is a tree of typed nodes edited with dedicated node tools inside a checked-out session — never through `update_config` (which rejects the `navigation` key). Node types: `page`, `group`, `tab`, `anchor`, `version`, `language`, `product`. Parent/child compatibility is enforced (groups cannot contain tabs; pages have no children).\n\n## Explore first\n\n`list_nodes` filters the tree: `parentId: null` = root nodes, `recursive: true` = all descendants (pair with omitted/null `parentId` to dump the whole tree), `type` = single type or array, plus `language`/`version`/`tab` scope filters. Paginates via `cursor`/`nextCursor` (limit max 500). You need real `nodeId`s from here before any mutation.\n\n**Finding a page's nodeId by path**: `list_nodes { type: 'page', recursive: true }` and match each node's `data.href` against the page path (the same path `search` results and `read` use). There is no direct path-lookup parameter.\n\n## Quick reference\n\n| Task | Tool |\n|------|------|\n| New page | `create_node { parentId, data: { type: 'page', path, content } }` (MDX validated) |\n| New group/tab/version/… | `create_node` with that type's name-shaped `data` |\n| Rename group, set page frontmatter, change icon | `update_node { nodeId, data }` — partial merge, `data.type` must match stored type |\n| Reorder or reparent | `move_node { nodeId, parentId?, order? }` — at least one required; `order` is 0-based; `parentId: null` = root |\n| Rename a page's URL path | `move_node` (path/`href` is immutable in `update_node`) |\n| Remove node + subtree | `delete_node { nodeId }` — returns `deletedNodeIds` |\n| Redirect after deletion | `update_config { op: 'add_redirect', redirect: { source, destination, permanent? } }` — point `destination` at the closest surviving replacement page |\n\n## Page frontmatter lives here\n\n`update_node` with `data.type: 'page'` is the correct tool for `title`, `sidebarTitle`, `description`, `icon`, `tag`, `canonical`, `og:*`, `keywords`, `noindex`, `hidden`, `deprecated` — the merged fields serialize back into the MDX `---` block on save. `edit_page` must not touch frontmatter.\n\n## Common mistakes\n\n- Deleting a published page without adding a redirect — breaks inbound links; pair `delete_node` with `add_redirect`.\n- Trying to set `href`/`pageId` via `update_node` — rejected as immutable; use `move_node`.\n- Moving nodes across version/tab/language/product boundaries unintentionally — allowed, but the response flags `crossedBoundary: true`; check it.\n- Guessing `nodeId`s — always fetch them from `list_nodes` first.\n- Forgetting `save` — nav edits stay on the session branch until published.\n"
}SHA-256: 0b696db08f00c7766b087a0638610ab4fbe09f4cfb75fa16de3feb16ab68adfe