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

# MCP Workflows

> End-to-end recipes for the hosted VideoDB MCP Server - the prompt to type and the tool chain it runs

You talk to the connector in plain language and the client picks the tools. Each recipe below pairs the prompt you type with the chain it runs, so you know what to expect and what to fix when a step is missing.

***

## Highlight reel from a long video

```text theme={null}
Upload https://www.youtube.com/watch?v=... into my default collection, index
the speech, then cut every moment where they demo the product into one reel.
```

**What runs**

1. `upload_media` - pulls the URL into the collection and returns the `m-` video ID
2. `index_spoken_words` - transcribes and indexes everything spoken
3. `create_highlight_clip` - matches your prompt against the index and compiles the hits into one stream

Indexing has to finish before the search returns anything. `create_highlight_clip` matches spoken content by default, and on an unindexed video it comes back with an empty `shots` list. To control the cut yourself, ask for `search_video` to get timestamps, then `generate_clip` for one video or `compile_clips` to stitch across several.

***

## Transcript Q\&A

```text theme={null}
Transcribe m-abc123 and give me the timestamped transcript. Then set it up so
I can ask questions about it, starting with: what pricing objections came up?
```

**What runs**

1. `generate_transcript`
2. `get_transcript` - plain text, or segments timestamped per word, sentence or time window
3. `understand_video` - runs the transcript analyzer over the video
4. `create_index` - builds a retrieval-ready index from that analyzer's output
5. `ask_video` - answers from the index, with sources

`ask_video` and `semantic_search` read only indexes built by `create_index`, so a transcript on its own is not queryable. While step 3 runs, `get_understanding` reports the status of each analyzer.

***

## Subtitled clip for social

```text theme={null}
From m-abc123, take 2:10 to 2:40, crop it to 9:16, burn in subtitles, and give
me an MP4.
```

**What runs**

1. `reframe_video` - re-crops the 2:10-2:40 segment to vertical and saves it as a new video in the same collection
2. `index_spoken_words` - on that new video, since subtitles come from its own index
3. `add_subtitles` - burns them in and returns a stream URL
4. `download_stream` - renders the stream to an MP4, which needs a file name

Order matters here. `reframe_video` and `add_subtitles` both take a video ID rather than a stream URL, so the reframe goes first and the new video gets its own index. `download_stream` is the only step that accepts a stream URL.

***

## Search across a whole library

```text theme={null}
List my collections, index every video in "Customer calls", then find every
mention of the renewal discount.
```

**What runs**

1. `list_collections` - IDs, names and visibility
2. `list_videos` - the videos in the collection you named
3. `index_spoken_words` - once per video
4. `search_collection` - matching moments grouped by video, with start/end timestamps and relevance scores

`search_collection` reads spoken-word and scene indexes. `ask_collection` answers in prose instead of returning moments, but it reads v2 indexes, so every video needs `understand_video` and then `create_index` first.

***

## Live camera monitoring with alerts

```text theme={null}
Connect rtsp://... as "Lobby cam", watch it for anyone entering after hours,
and POST to https://example.com/hooks/lobby when that happens.
```

**What runs**

1. `connect_rtstream` - registers the RTSP, RTMP or HLS feed and starts ingesting it
2. `index_rtstream_scenes` - describes frames on a rolling window using your prompt
3. `create_event` - the condition to watch for, written in natural language
4. `create_rtstream_alert` - attaches that event to the index with your `callback_url`
5. `search_rtstream` or `get_rtstream_scenes` - search the indexed records, or read them straight through for a time range

Alerts POST to a callback URL you control. See [Alerts and callbacks](/pages/act/live-action/alerts-and-callbacks) for the payload fields. Real-time timestamps are Unix seconds, and `get_rtstream_stream` turns a start/end window into a playable URL.

***

## Record and search a meeting

```text theme={null}
Send a recorder bot to this Google Meet link. Once the recording is ready,
index it and tell me what we agreed on.
```

**What runs**

1. `record_meeting` - sends the bot to the Zoom, Google Meet or Microsoft Teams URL
2. `get_meeting` - poll until `status` is `done` and `video_id` appears (`initializing`, `joined`, `processing`, `done`); the speaker timeline comes back here too
3. `index_spoken_words` - on that `video_id`
4. `search_video` - moments with timestamps

For a prose answer rather than moments, run the Transcript Q\&A chain on the recorded video: `understand_video`, `create_index`, `ask_video`.

***

## Working with long jobs

Uploads, indexing runs and renders that outlast the request budget return `{"status": "processing"}` and a `retry_with` field naming the read tool that will show the result, such as `get_meeting`, `get_transcript`, `get_transcode_status` or `list_videos`. The job keeps running. Ask the client to check with that tool; re-issuing the write starts a second job.

***

## Tips

* Name the collection you mean. `default` always exists and is where things land when you do not say.
* Index before you search. An unindexed video returns nothing from `search_*` and `ask_*`, and a timeline caption on one renders with no captions and no error.
* Every stream URL has a matching player URL that opens in a browser.
* ID prefixes tell you what you are holding: `m-` video, `a-` audio, `img-` image, `rts-` real-time stream, `c-` collection.
* Deletes are permanent. `delete_video`, `delete_collection`, `delete_index` and `delete_scene_index` have no undo. `remove_video_storage` drops the stored bytes but keeps the record, indexes and transcripts.

***

## Next Steps

<CardGroup cols={2}>
  <Card icon="wrench" title="Tool Reference" href="/pages/mcp/tools">
    Every tool, grouped by toolset, with what it does and what it needs first
  </Card>

  <Card icon="plug" title="Connect the MCP Server" href="/pages/mcp/connect">
    Setup for Claude, Claude Code, Cursor, MCP Inspector and other clients
  </Card>

  <Card icon="server" title="MCP Server Overview" href="/pages/mcp/index">
    Endpoint, auth, toolsets, and what the connector does not cover
  </Card>

  <Card icon="folder" title="Examples and Tutorials" href="/examples-and-tutorials/index">
    Longer builds that use the same pieces outside a chat client
  </Card>
</CardGroup>
