https://mcp.videodb.io/mcp exposes 89 tools, grouped into toolsets by what they operate on. Every tool is annotated with a kind, which is how a client knows whether the call changes your account and whether to ask you first.
IDs and conventions
Every ID input takes one of those prefixed forms:
video_id is an m- ID, audio_id an a- ID, image_id an img- ID, rtstream_id an rts- ID, collection_id a c- ID. media_id accepts a video or an audio ID. Every account has a collection named default, so leaving collection_id out sends the call there.
Reading the Inputs column: a plain name is required, a trailing ? means optional, and ?=value is the default the server applies when you omit it. Tools with more than eight inputs show the first six, and a full table of every field follows the toolset table.
- Inputs and outputs are snake_case.
- A write that runs long returns
{"status": "processing", ...}with aretry_withfield naming the read tool that shows the finished result. - Large lists are capped. A capped result carries
truncated: trueandtotal.
collections
Collections hold your media. Account usage and invoices live here too.media
List, fetch, upload, rename and delete videos, audio and images, plus thumbnails, signed download URLs and transcoding.list_assets inputs
transcode_media inputs
Notes
get_media_download_urlcovers audio and images only. For a video, render it withdownload_stream.- Uploads take a public URL. Local file paths are not supported.
- A write that runs long comes back as
status: "processing"with aretry_with:upload_medianameslist_videos,generate_thumbnailnameslist_thumbnails,transcode_medianamesget_transcode_status.
transcripts
Speech to text, plus translation of what comes back.
Prerequisites
translate_transcriptneeds an existing transcript. Runget_transcriptorgenerate_transcriptfirst. It works on videos only.get_transcriptandgenerate_transcriptaccept eithermedia_idorvideo_id. Give exactly one.- While a transcription is still running, both come back as
status: "processing"withretry_with: get_transcript.
indexing
Two pipelines: the v1 spoken-word and scene indexes, and the v2 flow whereunderstand_video extracts artifacts and create_index turns one analyzer’s output into a searchable index.
index_scenes inputs
create_index inputs
Prerequisites
create_indexneeds anunderstand_videorun whose analyzer has finished. Check withget_understanding.create_indexandget_analyzer_outputaccept eitheranalyzer_nameoranalyzer_id. Give exactly one.- An index declares what it can serve through
use_for. The values aresemantic,queryandaggregate, and they map to the search tools below. understand_videotakesanalyzersas a list of objects,[{type: "spoken_words"}, {type: "vlm", prompt: "Describe the scene"}], andsegmentationas{type: "time", seconds: 5}or{type: "shot", threshold: 30}.- A write that runs long comes back as
status: "processing"with aretry_with:index_spoken_wordsnamessearch_video,index_scenesnameslist_scene_indexes,understand_videonamesget_understanding,create_indexnamesget_index.
search
Moment search and question answering, over one video or a whole collection.search_video inputs
semantic_search inputs
aggregate_index inputs
Prerequisites
search_videoandsearch_collectionread the v1 indexes: spoken-word search needsindex_spoken_words, andindex_type='scene'needsindex_scenes.ask_videoandask_collectionneed v2 indexes built bycreate_index.semantic_search,query_indexandaggregate_indexneed an index built bycreate_indexwhoseuse_forincludessemantic,queryandaggregaterespectively. Each takesindex_nameorindex_id, and each runs over one video withvideo_idor the whole collection without it.filtertakes[{"field": "label", "op": "==", "value": "phone"}]or the shorthand{"activity": "walking"}.sorttakes[["start", "asc"]].return_fieldstakes a field name, a list of them, or"all".
streams
Cut, stitch, subtitle and reframe videos into playable streams, then render them to MP4.add_subtitles inputs
Prerequisites
add_subtitlesneedsindex_spoken_wordson the video first.download_streamtakes a stream URL fromgenerate_clip,compile_clips,add_subtitles,create_highlight_cliporget_video.generate_cliptakestimelineas[start_seconds, end_seconds]pairs,[[10, 25], [60, 90]].compile_clipstakesclipsas a list of objects in playback order.reframe_videotakestargetas a preset (vertical,square,landscape) or an explicit{width, height}. It comes back asstatus: "processing"withretry_with: list_videos.
editor
Multi-track timeline rendering. Tracks hold clips, and each clip carries a video, image, audio, text or caption asset.
Notes
- A caption asset with
src: "auto"pulls from the video’s spoken-word index. On an unindexed video the render succeeds with no captions, so runindex_spoken_wordsfirst. - Text assets sized with
width/heightkeep those dimensions only underfit: "contain". The defaultfit: "crop"upscales the text box to fill the frame. trackscarries the whole edit. It is a list of track objects, each holding its clips and their assets.
rtstream
Ingest live RTSP, RTMP and HLS streams, index them continuously, search them, and get alerts on events. All timestamps are Unix seconds.
Prerequisites
- Everything here starts with
connect_rtstream. Indexes, understandings and alerts attach to a stream that is already connected and ingesting. get_rtstream_transcriptneeds transcription running, started either byconnect_rtstreamwithenable_transcriptor byset_rtstream_transcript_status.search_rtstreamneeds a scene index or an understanding-backed index on the stream.create_rtstream_indexneeds anunderstand_rtstreamjob started withstore=true.create_rtstream_alertneeds an event fromcreate_eventand an index to attach it to. Alerts cannot be deleted, only disabled withset_rtstream_alert_status.list_rtstreamsis account-scoped, not per collection. Each row carries its owncollection_id.- Alert tools take
index_kindto say which index theindex_idbelongs to:scene_indexfor one built byindex_rtstream_scenesorindex_rtstream_audio,indexfor one built bycreate_rtstream_index. - A write that runs long comes back as
status: "processing"with aretry_with:connect_rtstreamnameslist_rtstreams,export_rtstream_recordingnamesget_video,index_rtstream_scenesandindex_rtstream_audionamelist_rtstream_scene_indexes,understand_rtstreamnameslist_rtstream_understandings,create_rtstream_indexnameslist_rtstream_indexes,create_eventnameslist_events,create_rtstream_alertnameslist_rtstream_alerts.
meetings
Send a recorder bot into a meeting and collect the recording.
Prerequisites
record_meetingcomes back as soon as the bot is dispatched, withstatus: "processing"andretry_with: get_meeting. Pollget_meetinguntilstatusisdone. Only then doesvideo_idhave a value.
Not exposed
For generation, use the generative media guides. For desktop capture and local files, use VideoDB Agent Skills, which run on your machine.
MCP Server
What the hosted server is and what it connects to
Connect a Client
Add the server to Claude, Cursor and other MCP clients
Workflows
End-to-end recipes built from these tools