# Administration

The actions of the admin group, with their input fields and their names on every transport.

6 actions: 6 on the command line, 2 as MCP tools, 6 as HTTP endpoints and 2 in the page.

## admin.avatar.sweep

**Sweep orphan pictures.** Removes picture avatar files under u/ that no profile names and that are older than a day (an upload that never reached its record); by key, never by date or name; refused without an identity database.

| Field    | Type    | Required | Description                         |
| -------- | ------- | -------- | ----------------------------------- |
| `dryRun` | boolean | no       | List the orphans and remove nothing |

* Command line: `turboslide admin avatar-sweep --to <to> [--dry-run]`
* MCP tool: No MCP tool.
* HTTP: `POST /api/actions/admin.avatar.sweep`
* Runs on: command line, HTTP.
* Changes the presentation: yes.

## admin.bootstrap

**Bootstrap admin.** With the static bearer, gives an email the admin role and mints the first API key, shown once.

| Field   | Type   | Required | Description |
| ------- | ------ | -------- | ----------- |
| `email` | string | yes      |             |

* Command line: `turboslide admin bootstrap --to <to> --email <email>`
* MCP tool: No MCP tool.
* HTTP: `POST /api/actions/admin.bootstrap`
* Runs on: command line, HTTP.
* Changes the presentation: yes.

## admin.assignOwner

**Assign owner.** An admin sets a deck’s owner.

| Field          | Type             | Required | Description                                                      |
| -------------- | ---------------- | -------- | ---------------------------------------------------------------- |
| `id`           | string           | yes      |                                                                  |
| `to`           | object \| object | yes      |                                                                  |
| `baseRevision` | integer          | yes      | The revision the caller read; a stale value is rejected with 409 |

* Command line: `turboslide admin assign-owner <id> --email <email>`
* MCP tool: `deck_assign_owner`
* HTTP: `POST /api/actions/admin.assignOwner`
* Runs on: command line, MCP, HTTP, page.
* Changes the presentation: yes; send the `baseRevision` you read.

## admin.flag

**Kill switch.** Reads or flips one of the kill switches (realtime, presence, comments, invites, email, exports, uploads, renderThumbs, materialize, htmlBlocks, signup, readOnly), read within 5 s by every instance.

| Field  | Type             | Required | Description           |
| ------ | ---------------- | -------- | --------------------- |
| `name` | one of 13 values | yes      |                       |
| `on`   | boolean          | no       | Absent reads the flag |

* Command line: `turboslide admin flag <name> --on <on>`
* MCP tool: `deck_admin_flag`
* HTTP: `POST /api/actions/admin.flag`
* Runs on: command line, MCP, HTTP, page.
* Changes the presentation: yes.

## admin.migrateStorage

**Migrate storage.** Runs one step of the storage layout v2 migration (plan, copy, verify, cutover, delete or rollback) from its cursor, in batches.

| Field   | Type                                                                | Required | Description |
| ------- | ------------------------------------------------------------------- | -------- | ----------- |
| `step`  | "plan" \| "copy" \| "verify" \| "cutover" \| "delete" \| "rollback" | yes      |             |
| `batch` | integer                                                             | no       |             |

* Command line: `turboslide admin migrate-storage <step> --to <to> --batch <batch>`
* MCP tool: No MCP tool.
* HTTP: `POST /api/actions/admin.migrateStorage`
* Runs on: command line, HTTP.
* Changes the presentation: yes.

## admin.mail.list

**Captured mail.** The mail captured under TURBOSLIDE_MAIL=capture, newest first; absent otherwise.

| Field   | Type    | Required | Description |
| ------- | ------- | -------- | ----------- |
| `since` | string  | no       |             |
| `limit` | integer | no       |             |

* Command line: `turboslide admin mail --to <to> --since <since>`
* MCP tool: No MCP tool.
* HTTP: `POST /api/actions/admin.mail.list`
* Runs on: command line, HTTP.
* Changes the presentation: no.
