SokkoSokko
Sokko
Utilisez Mintlify MCP avec
Sokko.
Connectez Mintlify MCP et dites à Sokko quoi faire. Il exécute les actions que vous demandez et réagit à ce qui se passe. Sans workflows, sans code.
Fonctionne avec plus de 1 000 outils · Aucun code requis
Actions
Tout ce que Sokko peut faire dans Mintlify MCP
Chaque action Mintlify MCP que Sokko peut exécuter. Demandez-en une en une phrase et c'est fait.
Checkout
Select a deployment and open its editor session in one call. This is an org-wide connection, so `subdomain` is required to choose which deployment to open. Subsequent editor tools act on the active session. Required before editor branch tools; deployment-level operations (workflows, deployment, members, billing, integrations, analytics) are reached via `execute_code` and do not require checkout. Calling checkout on another subdomain switches the active session without losing the others; re-checking-out an already-open deployment just re-activates it. Pass `branch` to work on a specific branch — if it already exists in git, the session attaches to it as-is; if not, it is created from `from` (defaults to the deploy branch). Omit `branch` to auto-generate a fresh `admin-mcp/<slug>-<sha>` branch from `from` (uses `slug` when provided, otherwise the session id); if that branch already exists (e.g. a retried task) the session resumes it. Returns `{ branchName, sessionId, baseBranch, baseSha, created, note?, editorUrl, toolkit }`. `toolkit` groups the tools you should load next (`explore`, `editContent`, `editNavigation`, `editConfig`, `codemode`, `ship`) so you can call them without further discovery. Surface `editorUrl` to the user so they can follow along in the dashboard editor as the agent works.
Create node
Insert a node into the navigation tree under `parentId` (null = root). `order` is clamped into siblings and defaults to append. `data` is discriminated by `type`: `page` seeds a Y.Doc from `{ path, content }` (MDX is validated), while `group`, `tab`, `anchor`, `version`, `language`, and `product` take their own name-shaped fields. Parent/child compatibility is enforced against an allowed-children table (e.g. groups cannot contain tabs; pages have no children).
Delete node
Remove a node and its subtree from the navigation tree by `nodeId`. For pages in the removed set, the hocuspocus room, document S3 blob, and baseline (Redis + S3) are cleaned up. To add a redirect for a removed page, use `update_config` with `add_redirect`. Returns `{ deletedNodeIds }`.
Diff
Returns the list of changes between current session and main.
Discard session
End the session without creating a PR
Edit page
String-replace edit on a page Y.Doc body. `path` is the page href or markdown file path (e.g. "/quickstart" or "guides/setup.mdx"), with or without a leading slash or trailing .mdx — the same forms `read` accepts, including markdown files that exist in the repo but are not listed in docs.json navigation. Use this for MDX content edits only — do NOT use it to change frontmatter fields (`title`, `sidebarTitle`, `description`, `icon`, `tag`, `canonical`, `og:*`, `keywords`, `noindex`, `hidden`, etc.); those round-trip through structured node metadata and must be set via `update_node` with `data.type='page'`. For the site-level `description` in `docs.json`, use `update_config`. Edits are broadcast live to connected collaborators: plain inline-text edits inside a single paragraph stream character-by-character (typing effect); structural edits apply atomically. The returned `mode` reports which path ran (`inline-stream` or `rebuild`).
Execute code
Run TypeScript/JavaScript against the Admin MCP dashboard SDK inside a sandboxed Cloudflare isolate. The script body has access to top-level namespace proxies (workflows, deployment, members, billing, integrations, analytics, deployments) plus console. No outbound fetch, no bindings, no secrets. The OAuth scopes on the calling token gate each individual SDK call through the gateway. **Targeting deployments**: every namespace method takes an optional second argument `{ subdomain }` to target a specific deployment in the org — e.g. `workflows.listWorkflows({}, { subdomain: 'acme' })`; omit it to use the token's default deployment. You can target different deployments in a single run. `deployments.list()` enumerates the org's deployments (org-wide; requires the `deployment:read` scope) and returns `{ deployments: [{ _id, subdomain }, ...] }`. **Return semantics**: the script is wrapped in an async function and the value of the LAST expression statement becomes the result — `await workflows.listWorkflows();` on its own line works, but a bare `return X;` at top level is dropped (no enclosing function), and `export default async function() { return X; }` returns the function object, not `X`. To return a structured value either end with an expression (`({ a, b });` or just `x`) or assign to a variable and reference it on the last line. Returns a tagged-union envelope: { ok: true, result, logs, truncated, durationMs } | { ok: false, error: { code, message }, logs, truncated, durationMs }. `truncated: true` signals the result or logs hit the size cap. Error codes: unauthorized, invalid_json, invalid_request, misconfigured, timeout (30s wall-clock), sandbox_error (anything thrown inside the script), execution_failed (worker plumbing failure).
Get session state
Get current session state including branch name, edited files, and nav diff
List branches
List all git branches available for a deployment before or after checkout. Pass `subdomain` to target a deployment; it defaults to the active session and is required before checkout on this org-wide connection. Optionally filter with `query` to only return matching branch names. Returns `{ branches, total, deployBranch }`.
List deployments
List the deployments this connection is authorized for, returning each `{ subdomain, name }`. On an org-wide connection this is every main (non-preview) deployment in your organization; on a connection scoped to specific deployments it returns only those. Use this to discover which subdomain to `checkout` before editing. Hidden when the connection is pinned to a single deployment.
List nodes
List navigation nodes with optional filters over the current branch nav tree. `parentId: null` returns root-level nodes; a string returns direct children of that node; omit for no filter. `recursive: true` extends the parent filter to all descendants of `parentId` — pair with `parentId: null` (or omit) to dump the entire tree in a single call. `type` accepts a single type or array (e.g. "group"). `language`, `version`, and `tab` are scope filters: a node passes only if its ancestor chain (including itself) contains a matching division node — filtering by a value not present in the tree returns empty. `limit` defaults to 500 (max 500). `cursor` is an opaque pagination token returned as `nextCursor`, stable across inserts. Returns { nodes, nextCursor } where nextCursor is null when exhausted.
Move node
Reposition a node in the navigation tree by nodeId. `parentId: null` moves to root; omit to keep the current parent. `order` is 0-based among the new siblings; omit to append. At least one of `parentId` or `order` is required. Parent/child compatibility is enforced against the allowed-children table. Cross-boundary moves (across version, tab, language, or product ancestors) are allowed; the response flags them via `crossedBoundary`.
Read
Read the full MDX content of a single page on the current branch. Reflects in-session edits made via edit_page/write_page, not just the published version. `path` is the page href (e.g. "/quickstart" or "guides/setup"), with or without a leading slash or trailing .mdx, or the page id from an editor URL (".../~/<pageId>"). Returns `{ content, filePath }` on success, or `{ error: "read_failed", reason }` on failure (`reason` carries the human-readable diagnostic such as "No valid pageId found for page" or a hocuspocus connection error).
Save
Flush branch to git. With mode="auto" (default) opens a PR if none exists, otherwise commits to the existing PR branch; it only auto-merges when this deployment's agent review setting is push-to-main. With mode="pr" opens a PR if none exists, otherwise commits to the existing PR branch, and never auto-merges. With mode="commit" commits directly to the branch without opening a PR.
Search
Find lines matching a substring or regex across every page on the current branch. Returns { matches, truncated } where each match is { path, lineNumber, line }, sorted by path. Reflects in-session edits: pages edited in this session are scanned even before indexing catches up. `query` is treated as a literal fixed string by default; pass `regex: true` for regex syntax. `caseSensitive` defaults to false. `limit` caps results (default 100, max 500). The response is bounded to 30KB — `truncated: true` indicates results were dropped and you should refine the query.
Search code operations
Lexical (BM25) search over the Admin MCP code-mode SDK. Use this to find the right SDK method for a task before writing an `execute_code` script. `query` is matched against method names, namespaces, parameter names, and JSDoc descriptions (camelCase tokens like `createWorkflow` are split, so `create workflow` also matches). Pass `namespace` (one of workflows, deployment, members, billing, integrations, analytics) to scope results to a single namespace — this also enumerates that namespace (every method in it, best query matches first), e.g. to confirm whether a getter exists. Returns up to `limit` hits (default 5, max 20), each `{ operationId, namespace, method, requiredScope, description, inputSchema, score }`. `inputSchema` is the full JSON Schema for the method’s parameters — no extra lookup needed before calling `execute_code`. Returns `{ hits: [] }` when nothing matches.
Update config
Update any top-level `docs.json` field except `navigation` (use the navigation tree tools for that). This is the ONLY way to change the site-level `description` (the SEO/social description for the whole docs site) — do not use `edit_page` (which targets page body) or `update_node` (which targets a single page's frontmatter description). `op` selects the operation: `set` ({ docsConfig }) shallow-merges any partial `docs.json` (e.g. `{ theme, name, description, colors, logo, favicon, api, appearance, background, navbar, footer, fonts, search, contextual, banner, interaction, errors, seo, styling, integrations, metadata, ... }` — see https://www.mintlify.com/docs.json); `add_redirect` ({ redirect: { source, destination, permanent? } }) appends to `redirects` (rejects on duplicate source); `remove_redirect` ({ source }) removes by source (rejects if missing). `set` rejects `navigation` and `$schema` keys. Set a top-level key to `null` in `docsConfig` to unset (remove) it entirely. The merged config is validated against the @mintlify/validation schema — any violation rejects the call with no partial writes. Returns `{ diff }` of only the changed fields: array-valued fields (e.g. `redirects`, `navbar.links`) report `{ added, removed }`, nested objects recurse under `{ changed }`, and scalar leaves report `{ before, after }`.
Update node
Update a navigation node's properties in place by nodeId — no repositioning. `data` is a discriminated union on `type` carrying partial, type-specific fields that are merged into existing `node.data`. For `type:'page'`, this is the correct tool for editing the page's frontmatter (`title`, `sidebarTitle`, `description`, `icon`, `tag`, `canonical`, `og:title`, `og:url`, `keywords`, `noindex`, `hidden`, `deprecated`, etc.) — the merged fields are serialized back into the MDX `---` block on save; do not use `edit_page` for these. `data.type` must match the stored node type. Immutable fields (`href`/`pageId` on pages, internal flags) are rejected — use `move_node` to rename a page path. Page updates emit an `update` pending action with source `metadata`; structural node updates emit an `update-navigation` action. Emits `editor_nav_updated`. Examples: set a page's frontmatter description (`{type:'page', description:'…'}`), rename a group (`{type:'group', group:'New Name'}`), change a tab icon, set a version as default.
Write page
Full overwrite of a page Y.Doc content. `path` accepts the same forms as `read` and `edit_page`: the page href or markdown file path, with or without a leading slash or trailing .mdx, including markdown files not listed in docs.json navigation.
Tout connecter
Dans votre Slack en deux minutes.
Aucun workflow à configurer. Activez les outils que vous utilisez déjà et votre agent se met au travail.
Ajouter à Slack
1
Ajoutez Sokko à Slack
Un clic depuis la marketplace Slack. Toute votre équipe a Sokko d'un coup.
Composio
GitHub
Supabase
Code Interpreter
Firecrawl
Tavily
Bitbucket
Composio Search
2
Connectez vos outils
Sokko fonctionne avec plus de 1 000 apps et n'importe quel serveur MCP.
Martin
9:53 AM
@Sokko
Que peux-tu faire avec Mintlify MCP ?
3
Mettez Sokko au travail
@mentionnez Sokko dans n'importe quel canal et c'est parti. Quelques minutes, pas un week-end.
Vos questions, nos réponses.
Sokko est un assistant IA qui vit dans votre Slack. Connectez vos applis, demandez ce dont vous avez besoin en langage courant, et Sokko s'occupe du travail à votre place.
Inscrivez-vous à Sokko, demandez à Sokko de se connecter à Mintlify MCP, et approuvez la connexion quand on vous le demande. Ensuite, vous pouvez demander à Sokko d'agir dans Mintlify MCP dès que vous en avez besoin.
Non. Il n'y a rien à créer ni à configurer. Vous demandez à Sokko dans Slack comme vous le demanderiez à un collègue, et Sokko s'occupe du reste.
Oui. Demandez une fois et dites à Sokko quand le répéter, par exemple chaque lundi à 9 h, et cela devient une routine qui tourne sans vous.
Lire et agir sur les données dans Mintlify MCP, et déclencher des workflows quand quelque chose y change. Dites à Sokko le résultat que vous voulez et il s'occupe du reste.
Oui. Sokko se connecte à plus de 1 000 applis et à n'importe quel serveur MCP : vous pouvez donc confier des tâches qui couvrent Mintlify MCP et le reste de votre stack en une seule demande.

Que fera votre premier agent ?

Créez un agent, connectez vos outils et confiez-lui une tâche. Des modèles IA gratuits sont inclus pour commencer.