> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tekma.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI command catalog

> Every Tekma CLI command, argument, flag and permission, generated from the verified release command catalog.

This reference lists all 84 commands in the verified CLI release. Start with the [CLI guide](/developers/cli) for a walkthrough or [CLI reference](/developers/reference) for output and error handling. Run `tekma COMMAND --help` to check your installed version.

Angle-bracket arguments are required; square-bracket arguments are optional. Replace placeholders with your own values. OAuth scopes do not override your current workspace role, folder access or privacy settings. Commands that change or send data require an explicit action; do not run them just to inspect a capture.

Use `--json` before or after a command for structured output. Piped output is already JSON; `doctor` stays human-readable. Download the [machine-readable catalog](/reference/cli-catalog.json), or run `tekma agent-context` to inspect your installation.

## Install and maintain

### version

`tekma version`

Report package/build version, OS and installation manager; also --version.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**Result:** Version, source revision, dirty build flag, platform, architecture, Node version and installation ownership.

### install

`tekma install`

Install a verified release into a new dedicated user-local prefix (macOS/Linux).

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Flag         | Type   | Meaning                                                                                                                            |
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| `--manifest` | string | HTTPS release manifest, or explicit local manifest path. Defaults to the official feed on install and the saved source on upgrade. |
| `--target`   | string | Require this exact version in the supplied manifest; no historical release endpoint is assumed.                                    |
| `--prefix`   | string | New dedicated directory; defaults to \~/.local/share/tekma-cli. No shell startup files are edited.                                 |

**Result:** Installed version, build, SHA256, prefix, executable and PATH directory. Requires Node 22.17+ and npm.

### upgrade

`tekma upgrade`

Verify, stage and atomically activate a release in this managed installation.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Flag         | Type   | Meaning                                                                                                                            |
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| `--manifest` | string | HTTPS release manifest, or explicit local manifest path. Defaults to the official feed on install and the saved source on upgrade. |
| `--target`   | string | Require this exact version in the supplied manifest; no historical release endpoint is assumed.                                    |

**Result:** Upgraded/unchanged receipt. npm-managed executables refuse self-update with npm guidance.

### uninstall

`tekma uninstall`

Remove only this owned user-local installation, preserving credentials, recordings and skills.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Flag    | Type    | Meaning                                                             |
| ------- | ------- | ------------------------------------------------------------------- |
| `--yes` | boolean | Required confirmation. npm-managed executables refuse self-removal. |

**Result:** Removed prefix and retained data categories. Refuses changed launchers, foreign files and symlinks.

### agent-context

`tekma agent-context`

Emit this catalogue as JSON, so an agent can discover the CLI instead of guessing.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**Result:** \{ version, exitCodes, commands\[] }

### doctor

`tekma doctor`

Check configuration, credentials and reachability.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**Result:** human-readable report

## Authentication and skills

### skills list

`tekma skills list`

List skills bundled with this CLI; no login required.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**Result:** \{ skills\[] }

### skills show

`tekma skills show <name>`

Read a bundled skill and its supporting references.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Argument | Required | Meaning     |
| -------- | -------- | ----------- |
| `name`   | Yes      | Skill name. |

**Result:** \{ name, description, files\[] }

### skills path

`tekma skills path`

Preview the skill installation directory without writing files.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Flag          | Type    | Meaning                                                                                                                            |
| ------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `--agent`     | string  | Agent skills directory. skills install defaults to every agent found; other commands default to codex. Allowed: `codex`, `claude`. |
| `--directory` | string  | Custom parent skills directory; overrides --agent.                                                                                 |
| `--project`   | boolean | Use this project's agent skills directory instead of your home directory.                                                          |

**Result:** \{ path }

### skills source

`tekma skills source [name]`

Locate a bundled SKILL.md; defaults to tekma-recorder.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Argument | Required | Meaning     |
| -------- | -------- | ----------- |
| `name`   | No       | Skill name. |

**Result:** \{ name, path }

### skills install

`tekma skills install [name]`

Install a bundled skill without overwriting an existing skill. Defaults to tekma-recorder and to every agent directory found in your home (\~/.codex, \~/.claude).

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Argument | Required | Meaning                                 |
| -------- | -------- | --------------------------------------- |
| `name`   | No       | Skill name; defaults to tekma-recorder. |

| Flag          | Type    | Meaning                                                                                                                            |
| ------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `--agent`     | string  | Agent skills directory. skills install defaults to every agent found; other commands default to codex. Allowed: `codex`, `claude`. |
| `--directory` | string  | Custom parent skills directory; overrides --agent.                                                                                 |
| `--project`   | boolean | Use this project's agent skills directory instead of your home directory.                                                          |

**Result:** \{ name, path, status, hint } or an array, one per agent

### auth login

`tekma auth login`

Sign in and store a token for later commands.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Flag            | Type    | Meaning                                                                                                                                                                        |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--token-stdin` | boolean | Read a personal access token from stdin instead of opening a browser. Use this in CI; never pass a token as an argument, where it lands in shell history and process listings. |
| `--no-browser`  | boolean | Print the sign-in URL instead of opening a browser. The command still waits for the sign-in to finish.                                                                         |
| `--scope`       | string  | Extra scopes to request, separated by spaces or commas. Sign-in asks only for captures:read; add captures:record to upload recordings or comments:write to post comments.      |

**Result:** \{ status, storedIn, refreshable, scopes\[] }

### auth status

`tekma auth status`

Verify your user, authentication method, scopes and accessible workspaces online.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Flag        | Type    | Meaning                                                                               |
| ----------- | ------- | ------------------------------------------------------------------------------------- |
| `--offline` | boolean | Report local credential presence without verifying identity or contacting the server. |

**Result:** \{ authenticated: true|false|null, credentialPresent, verification, source, endpoint, user?, authMethod?, scopes?, workspaceId?, workspaces?, workspacesTruncated? }

### auth logout

`tekma auth logout`

Revoke a stored OAuth refresh token where supported, then forget the local credential. PAT removal is local only.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Flag      | Type    | Meaning                                                                       |
| --------- | ------- | ----------------------------------------------------------------------------- |
| `--local` | boolean | Explicitly forget the stored credential without attempting server revocation. |

**Result:** \{ status, localCredential, refreshTokenRevocation, accessTokenRevocation, message? }

## Record and import

### inspect trace

`tekma inspect trace <file>`

Inspect local Playwright page IDs and screencast timing without uploading or authenticating.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

| Argument | Required | Meaning                    |
| -------- | -------- | -------------------------- |
| `file`   | Yes      | Playwright trace ZIP path. |

**Result:** \{ traceVersions, playwrightVersions, importSupported, pages, videoStartMonotonicMs: null, alignment }

### create capture

`tekma create capture [source]`

Create an independently uploaded image/video capture from strict JSON, @file, or stdin. Requires normal media validation and OAuth upload permission.

**Permissions:** `captures:record`

Every input requires screenDimensions. The local FFmpeg-free path accepts WebM only and requires posterImagePath, durationMs, width, height and micEnabled together. Imported pixels and audio are not automatically redacted.

| Argument | Required | Meaning                                                                                                               |
| -------- | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `source` | No       | JSON payload or @file; omitted reads stdin. Supplied screenDimensions are reported viewport, not measured media size. |

**Result:** Normal import receipt with durable checkpoint. screenshotMediaId copies a current same-workspace screenshot and additionally requires captures:read. Video input may supply posterImagePath, durationMs, width, height and micEnabled together to bypass local FFmpeg; server media validation still applies.

### import resume

`tekma import resume <directory>`

Resume a retained image or video import checkpoint.

**Permissions:** `captures:record`

| Argument    | Required | Meaning                                     |
| ----------- | -------- | ------------------------------------------- |
| `directory` | Yes      | Checkpoint directory printed by the import. |

**Result:** \{ status, captureId, shareUrl?, checkpoint, imported, hint }

### import video

`tekma import video <file>`

Import a local video, preserving its dimensions and first available audio track while transcoding to WebM. Optional trace import adds verified, aligned diagnostics.

**Permissions:** `captures:record`

Only the first video stream and optional first audio stream are imported. This is not an original-byte or all-audio-track archive. The --idle-threshold-ms option requires --trace and can remove visible activity that has no matching diagnostic event. Review the result.

| Argument | Required | Meaning           |
| -------- | -------- | ----------------- |
| `file`   | Yes      | Local video file. |

| Flag                  | Type   | Meaning                                                                                                                                                               |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--trace`             | string | Playwright trace.zip (version 8 or 9); format 8 requires --video-start-ms; format 9 can align an embedded byte-identical video record. --trace-page selects the page. |
| `--trace-page`        | string | Page ID belonging to the imported video.                                                                                                                              |
| `--idle-threshold-ms` | number | Opt in to cutting diagnostic gaps longer than this many milliseconds (2000–3600000), retaining 500ms at each edge. May remove visual activity absent from the trace.  |
| `--video-start-ms`    | number | Video zero in the trace monotonic clock; must be measured, not inferred from context start.                                                                           |
| `--url`               | string | Required original page URL.                                                                                                                                           |
| `--title`             | string | Capture title; defaults to filename.                                                                                                                                  |
| `--workspace-id`      | string | Destination workspace UUID; defaults to the recorder workspace.                                                                                                       |

**Result:** \{ status, captureId, captureUrl?, shareUrl?, durationMs, imported, diagnosticsAvailable, hint }

### import image

`tekma import image <file>`

Upload a PNG, JPEG, or WebP image without inventing diagnostics.

**Permissions:** `captures:record`

Imported pixels are not automatically redacted. Review and redact the source image before upload.

| Argument | Required | Meaning                        |
| -------- | -------- | ------------------------------ |
| `file`   | Yes      | Local PNG, JPEG, or WebP file. |

| Flag             | Type   | Meaning                                                         |
| ---------------- | ------ | --------------------------------------------------------------- |
| `--url`          | string | Required original page URL.                                     |
| `--title`        | string | Capture title; defaults to filename.                            |
| `--workspace-id` | string | Destination workspace UUID; defaults to the recorder workspace. |

**Result:** \{ status, captureId, captureUrl?, shareUrl?, imageBytes, mimeType, imported, diagnosticsAvailable, hint }

### record displays

`tekma record displays`

List explicit native capture target IDs. No frames captured; no browser diagnostics.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**Result:** \{ backend, targets: \[\{ id, width?, height?, x?, y? }], limitations }

### record windows

`tekma record windows`

List explicit native capture target IDs. No frames captured; no browser diagnostics.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**Result:** \{ backend, targets: \[\{ id, width?, height?, x?, y? }], limitations }

### record desktop

`tekma record desktop [command]`

Record a native display/window in the foreground; defaults to the primary display. Stops after duration or Ctrl-C, finalizes silent video, and uploads unless --local. No pixel redaction or browser diagnostics.

**Permissions:** `captures:record`

Native capture supports macOS displays, isolated windows on macOS 15 or newer, and local Linux X11 displays/windows. Wayland and Windows native capture are unsupported. Linux X11 window capture requires a visible, uncovered window; overlapping windows may appear. Audio and browser diagnostics are not recorded. Upload limits still apply when --until-stopped removes the local timer. --until-stopped is standalone-only and cannot accompany a child command. Upload requires OAuth or a recording link; a personal access token is not sufficient.

| Argument  | Required | Meaning                                                                                                                                  |
| --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `command` | No       | Optional child executable and literal arguments after --. Child output goes to stderr; its failure code is preserved after finalization. |

| Flag                 | Type    | Meaning                                                                                                                                                                                                              |
| -------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--display`          | string  | Exact display ID from record displays; mutually exclusive with --window-id.                                                                                                                                          |
| `--window-id`        | string  | Exact window ID from record windows. macOS15+ isolates the window; Linux X11 requires it visible and uncovered.                                                                                                      |
| `--app`              | string  | Exact macOS application name or Linux X11 WM\_CLASS (instance, class or instance.class), case-insensitive. Requires one matching window; Linux needs wmctrl. Mutually exclusive with other target selectors.         |
| `--pid`              | number  | macOS or Linux X11 process ID with one available window. Linux requires wmctrl. Multiple matches require --window-id; mutually exclusive with other target selectors.                                                |
| `--description`      | string  | Recording description, up to 5000 characters. Preserved locally and through OAuth upload recovery; not supported with recording-link upload.                                                                         |
| `--folder`           | string  | Destination folder UUID in the OAuth workspace. Its audience restrictions apply from creation. Preserved through upload recovery; recording-link folders remain owner-controlled.                                    |
| `--speedup`          | boolean | Shorten runs of identical decoded pixels longer than two seconds. Retains the original video and a half-second at each end of each static run; visible changes remain. Off by default.                               |
| `--bundle-id`        | string  | Exact macOS application bundle ID with one available window. Requires macOS15+ and Screen Recording permission. Mutually exclusive with other selectors.                                                             |
| `--no-outline`       | boolean | Hide the macOS isolated-window recording outline. Has no effect on display or Linux capture.                                                                                                                         |
| `--until-stopped`    | boolean | Standalone recording without a duration timer; Ctrl-C finalizes. Overrides --duration-seconds. The 256 MiB media limit still applies; source or size-limit termination retains media locally with a failure receipt. |
| `--duration-seconds` | number  | Maximum video/child duration, 1–1800 seconds. Ctrl-C finalizes sooner; a second interrupt cancels pending upload. Default: `60`.                                                                                     |
| `--local`            | boolean | Retain local video without authentication or upload.                                                                                                                                                                 |
| `--title`            | string  | Capture title; defaults to Desktop recording.                                                                                                                                                                        |
| `--url`              | string  | Required context/project URL for OAuth upload; does not claim a browser visit.                                                                                                                                       |
| `--record-token`     | string  | Recording-link token; defaults to CAPTURE\_RECORD\_TOKEN.                                                                                                                                                            |
| `--api`              | string  | API origin for recording links; defaults to CAPTURE\_API\_URL.                                                                                                                                                       |

**Result:** Recording receipt with local files, backend/target, duration, stopReason and explicit unavailable diagnostics/audio/redaction. Early source failures retain partial media locally and exit nonzero.

### record run

`tekma record run <command>`

Record a browser while a command runs, then finalize even when the command fails. Pass the command after --; child output goes to stderr.

**Permissions:** `captures:record`

| Argument  | Required | Meaning                                                       |
| --------- | -------- | ------------------------------------------------------------- |
| `command` | Yes      | Executable and literal arguments after --. No implicit shell. |

| Flag                | Type    | Meaning                                                                                          |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------ |
| `--local`           | boolean | Save locally without login or upload.                                                            |
| `--url`             | string  | Launch and record this URL; otherwise attach to CDP.                                             |
| `--cdp`             | string  | Existing Chromium endpoint; mutually exclusive with --url.                                       |
| `--headed`          | boolean | Show the browser launched with --url.                                                            |
| `--title`           | string  | Title to use when finalizing the recording.                                                      |
| `--timeout-seconds` | number  | Command timeout, 1–3600 seconds. Timed-out commands exit 124 after finalization. Default: `600`. |
| `--record-token`    | string  | Recording-link token; defaults to CAPTURE\_RECORD\_TOKEN.                                        |
| `--api`             | string  | API origin for recording-link uploads; defaults to CAPTURE\_API\_URL.                            |

**Result:** Recording receipt plus commandExitCode, commandSignal and timedOut. Nonzero child exits take precedence over finalization errors; stdout remains JSON when piped.

### record start

`tekma record start`

Start recording the browser an agent is driving by attaching over CDP. The recorder shares that browser session; review capture and privacy requirements before starting.

**Permissions:** `captures:record`

| Flag             | Type    | Meaning                                                                                                                                                     |
| ---------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--local`        | boolean | Save footage locally without login or upload. Stop returns local artifact paths; copy them before starting another recording.                               |
| `--cdp`          | string  | Chromium DevTools endpoint: a ws\:// URL or an HTTP endpoint with its host and port. Defaults to \$CAPTURE\_CDP\_URL, then a running agent-browser session. |
| `--record-token` | string  | Recording-link token (or the full /record/ URL) for the account-less path. Defaults to \$CAPTURE\_RECORD\_TOKEN.                                            |
| `--api`          | string  | API origin for the record-token path. Defaults to \$CAPTURE\_API\_URL.                                                                                      |

**Result:** \{ status, page, title, pid }

### record open

`tekma record open <url>`

Launch a Chromium on a URL and start recording it, for agents with no browser tooling of their own.

**Permissions:** `captures:record`

| Argument | Required | Meaning                      |
| -------- | -------- | ---------------------------- |
| `url`    | Yes      | The page to open and record. |

| Flag             | Type    | Meaning                                                                                                          |
| ---------------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
| `--local`        | boolean | Save locally without login or upload.                                                                            |
| `--headed`       | boolean | Show the browser window instead of running headless.                                                             |
| `--record-token` | string  | Recording-link token (or the full /record/ URL) for the account-less path. Defaults to \$CAPTURE\_RECORD\_TOKEN. |
| `--api`          | string  | API origin for the record-token path. Defaults to \$CAPTURE\_API\_URL.                                           |

**Result:** \{ status, page, title, pid }

### record stop

`tekma record stop`

Finalize the recording and upload unless it is local-only. Return the available capture or share link when publication and workspace policy permit it.

**Permissions:** `captures:record`

| Flag             | Type   | Meaning                                                                                                                                                         |
| ---------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--metadata`     | string | JSON context for uploads, max 10 KiB. For recording links, replaces saved defaults; \{} clears them. Local-only recordings save metadata.json beside the video. |
| `--title`        | string | Capture title override. Recording links use their URL title or saved preset when omitted; signed-in uploads use the page title.                                 |
| `--record-token` | string | Recording-link token (or the full /record/ URL) for the account-less path. Defaults to \$CAPTURE\_RECORD\_TOKEN.                                                |
| `--api`          | string | API origin for the record-token path. Defaults to \$CAPTURE\_API\_URL.                                                                                          |

**Result:** \{ status: uploaded | saved\_locally, captureId, captureUrl, shareUrl, durationMs, eventCount, videoBytes, frameCountRecorded }, plus interrupted when the recording was cut short and shareUnavailableReason when workspace policy withheld the link. --local returns \{ status, videoFile, eventsFile, metadataFile?, durationMs, frameCountRecorded, eventCount } and no link.

### record status

`tekma record status`

Report whether a recording is running and how much it has.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**Result:** \{ recording } alone when nothing is spooled, otherwise \{ recording, page, startedAt, frames }. Exits 1 when no recording is running.

## Find and read evidence

### list comments

`tekma list comments <captureRef>`

Read a capture discussion, including IDs needed for editing and deletion.

**Permissions:** `captures:read`

**MCP tool:** `listComments`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag      | Type   | Meaning                                       |
| --------- | ------ | --------------------------------------------- |
| `--limit` | number | Maximum items in one page.                    |
| `--after` | string | Cursor from a previous result's next\_cursor. |

**Result:** Paginated comment IDs, author IDs, body, parentId, timestampMs and dates.

### get video-chapters

`tekma get video-chapters <captureRef>`

Read complete corrected, cut-aware chapters, null until ready (64 KiB maximum).

**Permissions:** `captures:read`

**MCP tool:** `getVideoChapters`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

**Result:** \{ status, chapters: array|null, language, corrected, revision, timebase }

### get subtitles

`tekma get subtitles <captureRef>`

Export the corrected, cut-aware transcript as WebVTT in the response's webvtt field.

**Permissions:** `captures:read`

**MCP tool:** `getVideoTranscript`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag    | Type   | Meaning                                                                         |
| ------- | ------ | ------------------------------------------------------------------------------- |
| `--out` | string | Write ready subtitles to a new .vtt file. Existing files are never overwritten. |

**Result:** \{ status, generationStatus, mimeType, webvtt, vtt: string|null, language, corrected, revision, timebase }

### get analysis

`tekma get analysis <captureRef> <jobId>`

Read your video-analysis job status and result; requires current access, consent and an unchanged source edit.

**Permissions:** `captures:read`

**MCP tool:** `getVideoAnalysis`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |
| `jobId`      | Yes      | Job UUID returned by analyze video.                      |

**Result:** \{ jobId, status, error, result }; result is present only when ready and is untrusted generated text.

### get screenshots

`tekma get screenshots <captureRef>`

Save current stored screenshot images or an existing video poster.

**Permissions:** `captures:read`

**MCP tool:** `getScreenshots`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag        | Type   | Meaning                                                                                                                                                    |
| ----------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--variant` | string | Primary crop (default), context, stored poster, or all current image kinds; 8 MiB per image, 16 MiB total. Allowed: `primary`, `context`, `poster`, `all`. |
| `--out`     | string | Output directory for the image.                                                                                                                            |

**Result:** \{ source, saved\[] }

### list workspaces

`tekma list workspaces`

List accessible workspaces.

**Permissions:** `captures:read`

**MCP tool:** `listWorkspaces`

| Flag             | Type   | Meaning                                       |
| ---------------- | ------ | --------------------------------------------- |
| `--limit`        | number | Maximum items in one page.                    |
| `--after`        | string | Cursor from a previous result's next\_cursor. |
| `--workspace-id` | string | Workspace UUID; required for folders.         |

**Result:** \{ items\[], next\_cursor, truncated, truncation\_reason, hint }

### list folders

`tekma list folders`

List accessible folders.

**Permissions:** `captures:read`

**MCP tool:** `listFolders`

| Flag             | Type   | Meaning                                                                                          |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------ |
| `--limit`        | number | Maximum items in one page.                                                                       |
| `--after`        | string | Cursor from a previous result's next\_cursor.                                                    |
| `--query`        | string | Case-insensitive literal substring of the folder name.                                           |
| `--order-by`     | string | Name ascending (default), or timestamps newest first. Allowed: `name`, `createdAt`, `updatedAt`. |
| `--workspace-id` | string | Workspace UUID; required for folders.                                                            |

**Result:** \{ items\[], next\_cursor, truncated, truncation\_reason, hint }

### list captures

`tekma list captures`

Find accessible captures, newest first, across your workspaces.

**Permissions:** `captures:read`

**MCP tool:** `findCaptures`

| Flag                | Type   | Meaning                                                                                                                                                                  |
| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--limit`           | number | Maximum items in one page.                                                                                                                                               |
| `--after`           | string | Cursor from a previous result's next\_cursor.                                                                                                                            |
| `--order-by`        | string | Newest first by recording time (default), creation time or update time. Allowed: `capturedAt`, `createdAt`, `updatedAt`.                                                 |
| `--author-id`       | string | Exact creator user ID from list members.                                                                                                                                 |
| `--source-url`      | string | Case-insensitive literal substring of the recorded page URL only.                                                                                                        |
| `--folder-id`       | string | Only captures in this folder UUID, exact name or short ID; names/short IDs need --workspace-id with multiple workspaces.                                                 |
| `--type`            | string | Media family; video includes tab and desktop recordings; replay selects Instant Replay. Combine only with a compatible --kind. Allowed: `screenshot`, `video`, `replay`. |
| `--kind`            | string | Capture media type. Allowed: `screenshot`, `tab_video`, `desktop_video`, `instant_replay`.                                                                               |
| `--captured-from`   | string | Inclusive ISO 8601 date/time with timezone.                                                                                                                              |
| `--captured-before` | string | Exclusive ISO 8601 date/time with timezone.                                                                                                                              |
| `--state`           | string | Defaults to active; trash lists deleted captures for restoration. Allowed: `active`, `trash`.                                                                            |
| `--query`           | string | Words in the capture title or page URL.                                                                                                                                  |
| `--workspace-id`    | string | Limit to one workspace UUID.                                                                                                                                             |

**Result:** \{ items\[], workspaces\[], next\_cursor, truncated, truncation\_reason, hint }

### get capture

`tekma get capture <captureRef>`

Summary details for one capture. Start here.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getDetails`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

**Result:** \{ id, title, description, descriptionTruncated, sourceUrl, kind, status, browser, operatingSystem, durationMs, capturedAt, access, devtoolsAvailable, createdAt?, updatedAt?, author?, folder? }. Author/folder and creation/update dates are member-only.

### get transcript

`tekma get transcript <captureRef>`

Read corrected transcript with cut footage excluded. Timestamps use source-video milliseconds.

**Permissions:** `captures:read`

**MCP tool:** `getTranscript`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag      | Type   | Meaning                                                     |
| --------- | ------ | ----------------------------------------------------------- |
| `--limit` | number | Maximum items in one page.                                  |
| `--after` | string | Cursor from a previous result's next\_cursor.               |
| `--query` | string | Case-insensitive text search.                               |
| `--from`  | number | Start of source-video time range in milliseconds.           |
| `--to`    | number | End of source-video time range in milliseconds (exclusive). |

**Result:** \{ status, timebase, language, revision, corrected, items\[], next\_cursor, truncated, truncation\_reason, hint }

### get chapters

`tekma get chapters <captureRef>`

Read corrected chapters with cut footage excluded. Timestamps use source-video milliseconds.

**Permissions:** `captures:read`

**MCP tool:** `getChapters`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag      | Type   | Meaning                                                     |
| --------- | ------ | ----------------------------------------------------------- |
| `--limit` | number | Maximum items in one page.                                  |
| `--after` | string | Cursor from a previous result's next\_cursor.               |
| `--query` | string | Case-insensitive text search.                               |
| `--from`  | number | Start of source-video time range in milliseconds.           |
| `--to`    | number | End of source-video time range in milliseconds (exclusive). |

**Result:** \{ status, timebase, language, revision, corrected, items\[], next\_cursor, truncated, truncation\_reason, hint }

### get diagnosis

`tekma get diagnosis <captureRef>`

Clustered errors with the request and action associated with each, the evidence, and the alternatives.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getDiagnosis`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

**Result:** \{ algorithm\_version, clusters\[] }

### get console

`tekma get console <captureRef>`

Console messages, filterable by level.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getConsoleLogs`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag          | Type   | Meaning                                                                                                        |
| ------------- | ------ | -------------------------------------------------------------------------------------------------------------- |
| `--log-level` | string | Alias for --level; use only one spelling.                                                                      |
| `--level`     | string | Comma-separated levels; matches any selected level. Allowed: `error`, `warn`, `info`, `debug`, `log`, `trace`. |
| `--limit`     | number | Maximum items in one page.                                                                                     |
| `--after`     | string | Cursor from a previous result's next\_cursor.                                                                  |

**Result:** \{ items\[], next\_cursor, truncated, truncation\_reason, hint }

### get network

`tekma get network <captureRef>`

Network requests as compact rows.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getNetworkRequests`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag             | Type    | Meaning                                                                                                                                |
| ---------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `--status-code`  | string  | Alias for --status; use only one spelling.                                                                                             |
| `--bodies`       | string  | Include bounded sanitized body previews for failed requests (default), no requests, or all requests. Allowed: `none`, `errors`, `all`. |
| `--status`       | string  | Comma-separated exact codes (500), classes (5xx), or ranges (400-499).                                                                 |
| `--method`       | string  | Comma-separated HTTP methods.                                                                                                          |
| `--host`         | string  | Comma-separated hostname substrings.                                                                                                   |
| `--content-type` | string  | Comma-separated response content-type substrings.                                                                                      |
| `--failed-only`  | boolean | Only transport failures, 4xx, 5xx and GraphQL errors.                                                                                  |
| `--limit`        | number  | Maximum items in one page.                                                                                                             |
| `--after`        | string  | Cursor from a previous result's next\_cursor.                                                                                          |

**Result:** \{ items\[], next\_cursor, truncated, truncation\_reason, hint }

### get request

`tekma get request <captureRef> <requestId>`

One request's headers and body as a bounded, sanitized preview. Secrets are removed and truncation is reported.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getNetworkRequest`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |
| `requestId`  | Yes      | From get network.                                        |

**Result:** \{ requestId, method, url, status, requestHeaders, responseBody, … }

### get events

`tekma get events <captureRef>`

All recorded event types, with bounded sanitized JSON previews.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getEvents`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag      | Type   | Meaning                                       |
| --------- | ------ | --------------------------------------------- |
| `--limit` | number | Maximum items in one page.                    |
| `--after` | string | Cursor from a previous result's next\_cursor. |

**Result:** \{ items\[], next\_cursor, truncated, truncation\_reason, hint }

### get user-events

`tekma get user-events <captureRef>`

Recorded clicks, typing and navigation in chronological order. Requires diagnostic access.

**Permissions:** `captures:read`

**MCP tool:** `getUserEvents`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag      | Type   | Meaning                                       |
| --------- | ------ | --------------------------------------------- |
| `--limit` | number | Maximum items in one page.                    |
| `--after` | string | Cursor from a previous result's next\_cursor. |

**Result:** \{ note, items: \[\{ at, atMs?, kind, target, selector?, pageUrl? }], next\_cursor, truncated, truncation\_reason, hint }; atMs is source-video milliseconds and omitted when the recording clock is unavailable.

### get environment

`tekma get environment <captureRef>`

Browser, operating system, viewport and extension version.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getEnvironment`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

**Result:** \{ browser, operatingSystem, viewport, extensionVersion, sourceUrl }

### get intents

`tekma get intents <captureRef>`

Read your cached, evidence-cited inferred objective, observed issue and impact.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getIntents`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag       | Type   | Meaning                                                |
| ---------- | ------ | ------------------------------------------------------ |
| `--job-id` | string | Specific request job; defaults to your latest request. |

**Result:** \{ status: not\_requested | queued | running | ready | failed | cancelled | stale, value, jobId? }. No generation on read. Claims are uncertain inferences.

### get metadata-entries

`tekma get metadata-entries <captureRef>`

Paginate stored capture-time metadata keys and values, in key order.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getMetadataEntries`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag      | Type   | Meaning                                                        |
| --------- | ------ | -------------------------------------------------------------- |
| `--limit` | number | Maximum items in one page.                                     |
| `--after` | string | Cursor from a previous result's next\_cursor.                  |
| `--query` | string | Case-insensitive top-level key substring (max 200 characters). |

**Result:** \{ source: capture\_metadata, representation: key\_value\_entries, items: \[\{ key, value }], next\_cursor, truncated, truncation\_reason, hint }. Stored keys, not SDK events.

### get metadata

`tekma get metadata <captureRef>`

Capture metadata and, for workspace members, guest recording reference.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getMetadata`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

**Result:** \{ metadata, recordingReference? }

### get frames

`tekma get frames <captureRef>`

Still frames from the recording, saved as JPEG files. Defaults to one contact sheet of the whole timeline.

**Permissions:** No additional OAuth scope listed; command-specific prerequisites still apply.

**MCP tool:** `getFrames`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag         | Type    | Meaning                                                                                                       |
| ------------ | ------- | ------------------------------------------------------------------------------------------------------------- |
| `--from-ms`  | number  | Alias for --from; use only one spelling.                                                                      |
| `--to-ms`    | number  | Alias for --to; use only one spelling.                                                                        |
| `--size`     | string  | Frame height: 320, 640 (default), or 1280 pixels. Overview ignores size. Allowed: `small`, `medium`, `large`. |
| `--overview` | boolean | One contact sheet spanning the recording. The default.                                                        |
| `--at`       | string  | One millisecond timestamp or a comma-separated list, in requested order.                                      |
| `--from`     | number  | Window start, in ms.                                                                                          |
| `--to`       | number  | Window end, in ms.                                                                                            |
| `--count`    | number  | Frames to sample across the window.                                                                           |
| `--out`      | string  | Directory to save frames into. Defaults to ./tekma-frames/\<capture-id>/, including when given a capture URL. |

**Result:** Saved frame files; prints their paths.

## Analyze recordings

### analyze video

`tekma analyze video <captureRef> <requestKey>`

Request AI analysis of retained video frames; requires workspace consent and sends sampled footage to the configured provider.

**Permissions:** `captures:read`, `captures:write`

**MCP tool:** `analyzeVideo`

| Argument     | Required | Meaning                                                                   |
| ------------ | -------- | ------------------------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment.                  |
| `requestKey` | Yes      | Unique request key; reuse only for retries of the same question and edit. |

| Flag         | Type   | Meaning                                              |
| ------------ | ------ | ---------------------------------------------------- |
| `--question` | string | Optional focus for analysis, up to 2,000 characters. |

**Result:** \{ jobId, status }; poll with get analysis. Findings are observations and hypotheses, not proven root causes.

### analyze intents

`tekma analyze intents <captureRef> <requestKey>`

Request AI intent inference from capture excerpts under workspace consent.

**Permissions:** `captures:read`, `captures:write`

**MCP tool:** `requestIntents`

| Argument     | Required | Meaning                                                                   |
| ------------ | -------- | ------------------------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment.                  |
| `requestKey` | Yes      | Idempotency key (1–128 characters); use a new key after evidence changes. |

**Result:** \{ jobId, status }. Poll get intents; results belong to the requester.

## Integrations

### list integrations

`tekma list integrations`

List workspace integration provider IDs and connection status.

**Permissions:** `captures:read`

**MCP tool:** `listIntegrations`

| Flag             | Type   | Meaning                                       |
| ---------------- | ------ | --------------------------------------------- |
| `--workspace-id` | string | Required workspace UUID.                      |
| `--limit`        | number | Maximum items in one page.                    |
| `--after`        | string | Cursor from a previous result's next\_cursor. |

**Result:** Paginated integration id, provider, status and accountLabel.

### list integration-resources

`tekma list integration-resources <captureRef> <provider> <resource>`

Look up valid issue destinations and metadata for GitHub, GitLab, Linear, Jira, Asana, ClickUp, Slack, Notion or Azure DevOps.

**Permissions:** `captures:write`

**MCP tool:** `listIntegrationResources`

| Argument     | Required | Meaning                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment.                                                                                                                                                                                                                                                                                                                                    |
| `provider`   | Yes      | github, gitlab, linear, jira, asana, clickup, slack, notion or azure\_devops                                                                                                                                                                                                                                                                                                                |
| `resource`   | Yes      | destinations, labels, assignees, milestones (GitHub/GitLab), projects/states/cycles/estimates (Linear), issueTypes/fields (Jira), workspaces/projects/assignees/tags/sections/fields (Asana), workspaces/spaces/folders/lists/assignees/tags/types/fields (ClickUp), channels/users (Slack), dataSources/search/fields (Notion), projects/types/teams/assignees/areas/fields (Azure DevOps) |

| Flag               | Type   | Meaning                                                                                                                                                                                    |
| ------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--work-item-type` | string | Required for Azure fields; select from types.                                                                                                                                              |
| `--team-id`        | string | Required for Azure assignees and areas; select from teams.                                                                                                                                 |
| `--data-source-id` | string | Required for Notion fields; select from dataSources or search.                                                                                                                             |
| `--query`          | string | Notion title search only.                                                                                                                                                                  |
| `--parent-id`      | string | ClickUp workspace ID for spaces; space ID for folders/lists (owner only).                                                                                                                  |
| `--folder-id`      | string | ClickUp folder ID for lists; omit for folderless lists (owner only).                                                                                                                       |
| `--workspace-id`   | string | Asana workspace GID, or ClickUp workspaceId returned by types when requesting custom-type fields.                                                                                          |
| `--issue-type-id`  | string | Jira issue type for fields; for ClickUp fields use the types result ID with --workspace-id.                                                                                                |
| `--cursor`         | string | Linear/Jira/Asana/Slack/Notion/Azure nextCursor; not numeric page pagination.                                                                                                              |
| `--destination`    | string | Repository, project ID/path, Linear team UUID, Jira project key, Asana project GID or ClickUp list ID Notion database UUID or Azure project name/UUID; defaults to configured destination. |
| `--page`           | number | Page1–100; use returned nextPage.                                                                                                                                                          |

**Result:** \{ items: \[\{value,label}], nextPage, nextCursor, canChooseDestination, destination, fields?, blockedFields?, asanaFields?, workspaceId?, notionFields?, dataSourceId?, azureFields?, clickupFields?, statuses?, spaceId? }

### send capture

`tekma send capture <captureRef> <provider>`

Create an external item through an already-connected workspace integration.

**Permissions:** `captures:write`

**MCP tool:** `sendCaptureToIntegration`

| Argument     | Required | Meaning                                                       |
| ------------ | -------- | ------------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment.      |
| `provider`   | Yes      | Connected provider ID, such as github, linear, jira or slack. |

| Flag                   | Type   | Meaning                                                                                                                                                                |
| ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--azure-fields`       | string | JSON Azure project, workItemType, teamId, assigneeId and values by field reference name. Requires azure\_devops.                                                       |
| `--notion-fields`      | string | JSON Notion databaseId, dataSourceId and values keyed by property ID.                                                                                                  |
| `--slack-destination`  | string | JSON Slack \{"kind":"channel"\|"user","id":"..."}; alternate channels/DM require the connecting owner.                                                                 |
| `--clickup-fields`     | string | JSON ClickUp listId, status, priority, assigneeIds, tags and customFields; standard tasks only.                                                                        |
| `--asana-fields`       | string | JSON object with workspaceId, projectId, assigneeId, sectionId, tagIds, dueDate and customFields. Asana only; discover fields first.                                   |
| `--jira-fields`        | string | JSON object with projectKey, issueTypeId and values keyed by field ID. Discover Jira fields first; unsupported required fields block sending.                          |
| `--linear-fields`      | string | JSON object with teamId, projectId, assigneeId, labelIds, priority0–4 and optional stateId/cycleId/estimate. Linear only; alternate teams require workspace ownership. |
| `--gitlab-fields`      | string | JSON object with projectId, labels, assigneeId or assigneeIds, milestoneId and dueDate. GitLab only; alternate projects require workspace ownership.                   |
| `--github-fields`      | string | JSON object with repository, labels, assignees and milestone. GitHub only; alternate repositories require workspace ownership.                                         |
| `--title`              | string | Optional destination title override, up to 200 characters.                                                                                                             |
| `--additional-context` | string | Extra item context, up to 2000 characters.                                                                                                                             |

**Result:** \{ id, provider, externalId, externalUrl }

## Recording requests and domains

### connect recording-domain

`tekma connect recording-domain <url>`

Get a human owner-sign-in setup link; optionally wait for actual ownership and installation verification.

**Permissions:** `captures:write`

**MCP tool:** `getRecordingUrlVerifyLink`

| Argument | Required | Meaning                                          |
| -------- | -------- | ------------------------------------------------ |
| `url`    | Yes      | Public HTTPS site URL; its origin is registered. |

| Flag                | Type    | Meaning                                                                                                    |
| ------------------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `--workspace-id`    | string  | Required workspace UUID.                                                                                   |
| `--wait`            | boolean | Poll actual installation status; never marks a domain verified itself.                                     |
| `--timeout-seconds` | number  | Total command deadline, 1–300 seconds. Timeout returns a pending receipt and exits nonzero. Default: `60`. |

**Result:** \{ domainId, origin, setupUrl, requiresOwnerSignIn, verified, humanActionRequired, installationStatus, timedOut }

### verify recording-domain

`tekma verify recording-domain <domainId>`

Check a domain's public ownership proof as an owner; does not verify recorder installation.

**Permissions:** `captures:write`

**MCP tool:** `verifyRecordingDomain`

| Argument   | Required | Meaning                 |
| ---------- | -------- | ----------------------- |
| `domainId` | Yes      | Registered domain UUID. |

| Flag             | Type   | Meaning                  |
| ---------------- | ------ | ------------------------ |
| `--workspace-id` | string | Required workspace UUID. |

**Result:** \{ domain, verified, installationStatus }

### delete recording-domain

`tekma delete recording-domain <domainId>`

Remove a domain ownership registration as an owner; captures and recording links remain.

**Permissions:** `captures:write`

**MCP tool:** `deleteRecordingDomain`

| Argument   | Required | Meaning                 |
| ---------- | -------- | ----------------------- |
| `domainId` | Yes      | Registered domain UUID. |

| Flag             | Type   | Meaning                  |
| ---------------- | ------ | ------------------------ |
| `--workspace-id` | string | Required workspace UUID. |

**Result:** \{ id, deleted, changed }

### create recording-domain

`tekma create recording-domain`

Register a public HTTPS recording origin as an owner; returns public ownership instructions.

**Permissions:** `captures:write`

**MCP tool:** `createRecordingDomain`

| Flag             | Type   | Meaning                                                           |
| ---------------- | ------ | ----------------------------------------------------------------- |
| `--workspace-id` | string | Required workspace UUID.                                          |
| `--origin`       | string | Required public HTTPS origin, without path, query or custom port. |

**Result:** \{ domain, ownershipProof, installationStatus }

### get recording-domain-setup

`tekma get recording-domain-setup <domainId>`

Get the owner sign-in page for a registered domain's ownership setup.

**Permissions:** `captures:read`

**MCP tool:** `getRecordingDomainSetup`

| Argument   | Required | Meaning                 |
| ---------- | -------- | ----------------------- |
| `domainId` | Yes      | Registered domain UUID. |

| Flag             | Type   | Meaning                  |
| ---------------- | ------ | ------------------------ |
| `--workspace-id` | string | Required workspace UUID. |

**Result:** \{ domain, setupUrl, requiresOwnerSignIn, installationStatus }

### list recording-domains

`tekma list recording-domains`

List registered recording domains and their current saved ownership and installation status as a workspace owner. Listing does not perform a new verification.

**Permissions:** `captures:read`

**MCP tool:** `listRecordingDomains`

| Flag             | Type   | Meaning                                       |
| ---------------- | ------ | --------------------------------------------- |
| `--limit`        | number | Maximum items in one page.                    |
| `--after`        | string | Cursor from a previous result's next\_cursor. |
| `--workspace-id` | string | Required workspace UUID.                      |

**Result:** \{ items\[], domains\[], next\_cursor, truncated, truncation\_reason, hint }; domains aliases the current page.

### list recording-links

`tekma list recording-links`

List workspace recording links newest first, without revealing secrets.

**Permissions:** `captures:read`

**MCP tool:** `listRecordingLinks`

| Flag                | Type    | Meaning                                       |
| ------------------- | ------- | --------------------------------------------- |
| `--limit`           | number  | Maximum items in one page.                    |
| `--after`           | string  | Cursor from a previous result's next\_cursor. |
| `--include-revoked` | boolean | Include revoked links (excluded by default).  |
| `--workspace-id`    | string  | Required workspace UUID.                      |

**Result:** \{ items\[], next\_cursor, truncated, truncation\_reason, hint }

### get recording-link

`tekma get recording-link <recordingLinkId>`

Get recording-link metadata without revealing its secret.

**Permissions:** `captures:read`

**MCP tool:** `getRecordingLink`

| Argument          | Required | Meaning                                        |
| ----------------- | -------- | ---------------------------------------------- |
| `recordingLinkId` | Yes      | Recording-link UUID from list recording-links. |

| Flag             | Type   | Meaning                  |
| ---------------- | ------ | ------------------------ |
| `--workspace-id` | string | Required workspace UUID. |

**Result:** Recording-link metadata and status, without credentials.

### list recording-link-captures

`tekma list recording-link-captures <recordingLinkId>`

List captures submitted through one recording link, newest first.

**Permissions:** `captures:read`

**MCP tool:** `listRecordingLinkCaptures`

| Argument          | Required | Meaning                                        |
| ----------------- | -------- | ---------------------------------------------- |
| `recordingLinkId` | Yes      | Recording-link UUID from list recording-links. |

| Flag             | Type   | Meaning                                       |
| ---------------- | ------ | --------------------------------------------- |
| `--limit`        | number | Maximum items in one page.                    |
| `--after`        | string | Cursor from a previous result's next\_cursor. |
| `--workspace-id` | string | Required workspace UUID.                      |

**Result:** \{ items\[], next\_cursor, truncated, truncation\_reason, hint }

### create recording-link

`tekma create recording-link`

Create a recording link as a workspace owner; returns its URL once.

**Permissions:** `captures:write`

**MCP tool:** `createRecordingLink`

| Flag                    | Type    | Meaning                                                                                                         |
| ----------------------- | ------- | --------------------------------------------------------------------------------------------------------------- |
| `--recording-domain-id` | string  | Current verified and installed domain UUID in this workspace; mutually exclusive with --recording-origin.       |
| `--default-metadata`    | string  | JSON object copied into new captures; use \{} to clear. Sensitive values are redacted.                          |
| `--default-title`       | string  | Default capture title; per-submission titles take precedence.                                                   |
| `--never-expires`       | boolean | Keep the link active until revoked.                                                                             |
| `--reference`           | string  | Default ticket URL or customer email.                                                                           |
| `--workspace-id`        | string  | Required workspace UUID.                                                                                        |
| `--name`                | string  | Optional link name; defaults to Recording request.                                                              |
| `--recording-origin`    | string  | URL of the page to record; use this or --recording-domain-id.                                                   |
| `--folder-id`           | string  | Destination folder UUID, exact name or eight-character short ID.                                                |
| `--expires-at`          | string  | Absolute ISO timestamp with timezone, within the next 90 days. Conflicts with relative or never-expiring modes. |
| `--expires-in-days`     | number  | Lifetime in days, 1–90; defaults to 30.                                                                         |

**Result:** \{ id, expiresAt, url }

### update recording-link

`tekma update recording-link <workspaceId> <recordingLinkId>`

Update an active recording link as a workspace owner without changing its secret URL.

**Permissions:** `captures:write`

**MCP tool:** `updateRecordingLink`

| Argument          | Required | Meaning              |
| ----------------- | -------- | -------------------- |
| `workspaceId`     | Yes      | Workspace UUID.      |
| `recordingLinkId` | Yes      | Recording-link UUID. |

| Flag                    | Type    | Meaning                                                                                                         |
| ----------------------- | ------- | --------------------------------------------------------------------------------------------------------------- |
| `--default-metadata`    | string  | JSON object copied into new captures; use \{} to clear. Sensitive values are redacted.                          |
| `--clear-default-title` | boolean | Remove the saved capture title and use the link name fallback.                                                  |
| `--default-title`       | string  | Default capture title; per-submission titles take precedence.                                                   |
| `--never-expires`       | boolean | Keep the link active until revoked.                                                                             |
| `--clear-reference`     | boolean | Remove the default reference.                                                                                   |
| `--reference`           | string  | Default ticket URL or customer email.                                                                           |
| `--name`                | string  | New display name.                                                                                               |
| `--folder-id`           | string  | Destination folder UUID, exact name or eight-character short ID.                                                |
| `--clear-folder`        | boolean | Remove the destination folder.                                                                                  |
| `--recording-origin`    | string  | Allowed HTTP(S) recording origin.                                                                               |
| `--expires-at`          | string  | Absolute ISO timestamp with timezone, within the next 90 days. Conflicts with relative or never-expiring modes. |
| `--expires-in-days`     | number  | Reset expiry to 1–90 days from now.                                                                             |

**Result:** Updated metadata only; no secret URL.

### revoke recording-link

`tekma revoke recording-link <recordingLinkId>`

Revoke a recording link as a workspace owner; keep existing recordings.

**Permissions:** `captures:write`

**MCP tool:** `revokeRecordingLink`

| Argument          | Required | Meaning              |
| ----------------- | -------- | -------------------- |
| `recordingLinkId` | Yes      | Recording link UUID. |

| Flag             | Type   | Meaning                  |
| ---------------- | ------ | ------------------------ |
| `--workspace-id` | string | Required workspace UUID. |

**Result:** \{ id, revoked, changed }

## Collaborate and manage captures

### move capture

`tekma move capture <captureRef>`

Move a capture to a workspace folder or return it to Unfiled.

**Permissions:** `captures:write`

**MCP tool:** `moveCapture`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag          | Type    | Meaning                                                                   |
| ------------- | ------- | ------------------------------------------------------------------------- |
| `--folder-id` | string  | Destination folder UUID, exact name or short ID in the capture workspace. |
| `--unfiled`   | boolean | Remove the capture from its current folder.                               |

**Result:** \{ id, folderId }

### set status

`tekma set status <captureRef> <status>`

Archive a capture or reopen an archived capture.

**Permissions:** `captures:write`

**MCP tool:** `setCaptureStatus`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |
| `status`     | Yes      | ready or archived; ready reopens an archived capture.    |

**Result:** \{ id, status }

### attach finding

`tekma attach finding <captureRef> <title> <summary>`

Attach a structured finding to a capture discussion.

**Permissions:** `captures:write`

**MCP tool:** `attachFinding`

| Argument     | Required | Meaning                                                           |
| ------------ | -------- | ----------------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment.          |
| `title`      | Yes      | Finding title, up to 200 characters.                              |
| `summary`    | Yes      | Explanation; complete formatted finding must fit 5000 characters. |

| Flag                | Type   | Meaning                                                                                  |
| ------------------- | ------ | ---------------------------------------------------------------------------------------- |
| `--severity`        | string | Finding severity. Allowed: `info`, `low`, `medium`, `high`, `critical`. Default: `info`. |
| `--at`              | number | Source-video timestamp in milliseconds.                                                  |
| `--idempotency-key` | string | Reuse the same 8–200 character key on retry.                                             |

**Result:** \{ id, created }

### list members

`tekma list members`

List workspace members as an owner, including their roles.

**Permissions:** `captures:read`

**MCP tool:** `listMembers`

| Flag             | Type   | Meaning                                                     |
| ---------------- | ------ | ----------------------------------------------------------- |
| `--limit`        | number | Maximum items in one page.                                  |
| `--after`        | string | Cursor from a previous result's next\_cursor.               |
| `--query`        | string | Case-insensitive literal substring of member name or email. |
| `--workspace-id` | string | Required workspace UUID.                                    |

**Result:** \{ items\[], next\_cursor, truncated, truncation\_reason, hint }

### invite folder-member

`tekma invite folder-member <folderId>`

Email a selected-folder invitation as an owner; recipient must verify their email and accept in the browser.

**Permissions:** `captures:write`

**MCP tool:** `inviteFolderMember`

| Argument   | Required | Meaning                              |
| ---------- | -------- | ------------------------------------ |
| `folderId` | Yes      | Folder UUID, exact name or short ID. |

| Flag             | Type   | Meaning                                                                                                         |
| ---------------- | ------ | --------------------------------------------------------------------------------------------------------------- |
| `--workspace-id` | string | Required workspace UUID.                                                                                        |
| `--email`        | string | Required recipient email.                                                                                       |
| `--role`         | string | New workspace member role; existing member roles are preserved. Allowed: `member`, `viewer`. Default: `viewer`. |

**Result:** \{ id, folderId, expiresAt, url, emailStatus }

### set folder-members

`tekma set folder-members <folderId>`

Replace private folder membership as an owner, or explicitly restore workspace visibility.

**Permissions:** `captures:write`

**MCP tool:** `setFolderMembers`

| Argument   | Required | Meaning                              |
| ---------- | -------- | ------------------------------------ |
| `folderId` | Yes      | Folder UUID, exact name or short ID. |

| Flag             | Type   | Meaning                                                                             |
| ---------------- | ------ | ----------------------------------------------------------------------------------- |
| `--workspace-id` | string | Required workspace UUID.                                                            |
| `--visibility`   | string | Required visibility. Owners always retain access. Allowed: `selected`, `workspace`. |
| `--member-ids`   | string | Comma-separated current workspace user IDs; omit for no grants.                     |

**Result:** \{ id, visibility, memberIds\[] }

### create folder

`tekma create folder`

create a workspace folder.

**Permissions:** `captures:write`

**MCP tool:** `createFolder`

| Flag             | Type   | Meaning                                                                                                        |
| ---------------- | ------ | -------------------------------------------------------------------------------------------------------------- |
| `--visibility`   | string | Workspace visibility by default; selected grants the creator initial access. Allowed: `workspace`, `selected`. |
| `--workspace-id` | string | Required workspace UUID.                                                                                       |
| `--name`         | string | Required folder name, up to 80 characters.                                                                     |

**Result:** \{ id, name? }

### rename folder

`tekma rename folder <folderId>`

rename a workspace folder.

**Permissions:** `captures:write`

**MCP tool:** `renameFolder`

| Argument   | Required | Meaning                                              |
| ---------- | -------- | ---------------------------------------------------- |
| `folderId` | Yes      | Folder UUID, exact name or eight-character short ID. |

| Flag             | Type   | Meaning                                    |
| ---------------- | ------ | ------------------------------------------ |
| `--workspace-id` | string | Required workspace UUID.                   |
| `--name`         | string | Required folder name, up to 80 characters. |

**Result:** \{ id, name? }

### delete folder

`tekma delete folder <folderId>`

Delete a folder; optionally permanently delete its captures with --delete-contents.

**Permissions:** `captures:write`

**MCP tool:** `deleteFolder`

| Argument   | Required | Meaning                                              |
| ---------- | -------- | ---------------------------------------------------- |
| `folderId` | Yes      | Folder UUID, exact name or eight-character short ID. |

| Flag                | Type    | Meaning                                                                         |
| ------------------- | ------- | ------------------------------------------------------------------------------- |
| `--workspace-id`    | string  | Required workspace UUID.                                                        |
| `--delete-contents` | boolean | Permanently delete all contained captures, including trash. Cannot be restored. |

**Result:** \{ id, name? }

### add reaction

`tekma add reaction <captureRef> <commentId> <emoji>`

Add your emoji reaction on a comment (retry-safe).

**Permissions:** `comments:write`

**MCP tool:** `addCommentReaction`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |
| `commentId`  | Yes      | Comment UUID.                                            |
| `emoji`      | Yes      | One Unicode emoji.                                       |

**Result:** \{ commentId, emoji, active }

### remove reaction

`tekma remove reaction <captureRef> <commentId> <emoji>`

Remove your emoji reaction on a comment (retry-safe).

**Permissions:** `comments:write`

**MCP tool:** `removeCommentReaction`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |
| `commentId`  | Yes      | Comment UUID.                                            |
| `emoji`      | Yes      | One Unicode emoji.                                       |

**Result:** \{ commentId, emoji, active }

### delete comment

`tekma delete comment <captureRef> <commentId>`

Delete your own comment, or moderate as a workspace owner.

**Permissions:** `comments:write`

**MCP tool:** `deleteComment`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |
| `commentId`  | Yes      | Comment UUID.                                            |

**Result:** \{ id, deleted }

### update comment

`tekma update comment <captureRef> <commentId> <body>`

Edit your own comment without changing its timestamp or attachments.

**Permissions:** `comments:write`

**MCP tool:** `updateComment`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |
| `commentId`  | Yes      | Comment UUID.                                            |
| `body`       | Yes      | Replacement comment text.                                |

**Result:** \{ id, body, timestampMs }

### delete capture

`tekma delete capture <workspaceId> <captureId>`

Move to trash for 30 days; stops share access and retains media.

**Permissions:** `captures:write`

**MCP tool:** `deleteCapture`

| Argument      | Required | Meaning         |
| ------------- | -------- | --------------- |
| `workspaceId` | Yes      | Workspace UUID. |
| `captureId`   | Yes      | Capture UUID.   |

**Result:** \{ id, workspaceId, state, changedAt }

### restore capture

`tekma restore capture <workspaceId> <captureId>`

Restore a trashed capture and cancel cleanup.

**Permissions:** `captures:write`

**MCP tool:** `restoreCapture`

| Argument      | Required | Meaning         |
| ------------- | -------- | --------------- |
| `workspaceId` | Yes      | Workspace UUID. |
| `captureId`   | Yes      | Capture UUID.   |

**Result:** \{ id, workspaceId, state, changedAt }

### purge capture

`tekma purge capture <workspaceId> <captureId>`

Schedule permanent deletion of a trashed capture.

**Permissions:** `captures:write`

**MCP tool:** `purgeCapture`

| Argument      | Required | Meaning         |
| ------------- | -------- | --------------- |
| `workspaceId` | Yes      | Workspace UUID. |
| `captureId`   | Yes      | Capture UUID.   |

**Result:** \{ id, workspaceId, state, changedAt }

### update capture

`tekma update capture <captureRef>`

Edit a capture title or description; omitted fields stay unchanged.

**Permissions:** `captures:write`

**MCP tool:** `updateCapture`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |

| Flag            | Type   | Meaning                                                                  |
| --------------- | ------ | ------------------------------------------------------------------------ |
| `--title`       | string | New title, up to 200 characters.                                         |
| `--description` | string | New description, up to 5000 characters; use an empty string to clear it. |

**Result:** \{ id, title, description }

### comment

`tekma comment <captureRef> <body>`

Post a comment onto a capture.

**Permissions:** `comments:write`

The --at value is source-video milliseconds from recording start, matching diagnostic atMs. It is not a wall-clock timestamp or an edited-playback offset.

**MCP tool:** `createComment`

| Argument     | Required | Meaning                                                  |
| ------------ | -------- | -------------------------------------------------------- |
| `captureRef` | Yes      | A capture id, or a link to a capture on this deployment. |
| `body`       | Yes      | Comment text.                                            |

| Flag                | Type   | Meaning                                                                                                       |
| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------- |
| `--mention`         | string | Comma-separated workspace user IDs from list members, up to 20. Queues mention email for eligible recipients. |
| `--parent-id`       | string | Reply to this comment UUID on the same capture.                                                               |
| `--at`              | number | Position in the recording, in milliseconds.                                                                   |
| `--idempotency-key` | string | Reuse on retry so the comment is posted once.                                                                 |

**Result:** \{ id, created }
