Reka
Understand your videos with Reka AI — search, ask questions, and extract insights.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"mcp": {
"command": "uvx",
"args": [
"reka-mcp"
]
}
}
}実行可能なパッケージ
0.1.10stdioリモートエンドポイント
https://mcp.reka.ai/mcpstreamable-httpできること
ツール一覧
ツール(17)
🟡upload_video(video_url, name, description, group_id, rationale)
Upload a video from a URL. Returns a video_id. Local file paths are not accepted; upload files outside the MCP server and pass a reachable video_url. The upload runs asynchronously — poll get_video until status is 'uploaded', then call index_video to enable search and analysis.
入力スキーマ
{
"type": "object",
"properties": {
"video_url": {
"title": "Video Url",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Group Id"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_url"
],
"title": "upload_videoArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "upload_videoOutput"
}🟢list_videos(group_id, rationale)
List all videos in your account, or filter to a specific group by passing group_id. Shows upload status and which features have been indexed for each video. Each video's 'url' is a short-lived HTTPS presigned URL (expires within hours) — fetch immediately and do not store; call list_videos or get_video again for a fresh URL when needed.
入力スキーマ
{
"type": "object",
"properties": {
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Group Id"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"title": "list_videosArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_videosOutput"
}🟢get_video(video_id, rationale)
Get detailed information about a video including upload status, metadata (duration, resolution, fps), and per-feature indexing status. Use this to check if upload or indexing is complete. The 'url' field is a short-lived HTTPS presigned URL (expires within hours) — fetch immediately and do not store; call get_video again for a fresh URL when needed.
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id"
],
"title": "get_videoArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_videoOutput"
}🔴update_video(video_id, name, title, description, group_id, ...)
Update a video's display name, title, description, or move it to a different group. At least one field must be provided. To remove a video from its group, pass group_id as null.
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Title"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Group Id"
},
"move_group": {
"default": false,
"title": "Move Group",
"type": "boolean"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id"
],
"title": "update_videoArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "update_videoOutput"
}🔴delete_video(video_id, rationale)
Permanently delete a video and all its indexed data (transcript, captions, embeddings, etc.). This cannot be undone.
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id"
],
"title": "delete_videoArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "delete_videoOutput"
}🟡create_group(name, rationale)
Create a new video group. Groups organize videos into collections. Returns the new group's ID and name.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"name"
],
"title": "create_groupArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "create_groupOutput"
}🟢list_groups(rationale)
List all video groups. Use list_videos with a group_id to see videos in a specific group.
入力スキーマ
{
"type": "object",
"properties": {
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"title": "list_groupsArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_groupsOutput"
}🔴delete_group(group_id, rationale)
Delete a video group. Videos in the group are not deleted — they are simply removed from the group.
入力スキーマ
{
"type": "object",
"properties": {
"group_id": {
"title": "Group Id",
"type": "string"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"group_id"
],
"title": "delete_groupArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "delete_groupOutput"
}🟢index_video(video_id, pipeline, scene_detection, rationale)
Index a video for search, QA, or full analysis. Processes the video through a pipeline of AI features. Typically takes 3-7 minutes; longer for long videos or the 'full' pipeline. Times out after 10 minutes by default. Pipelines: - search_only: transcription + captions + embeddings (enables search_videos) - qa_only: transcription + captions (enables ask_video) - full: transcription + captions + embeddings (enables all tools) Scene detection is enabled by default and produces scene boundaries for get_scenes. Pass scene_detection=False to skip it. Prerequisites: if using video_id, the video must be in 'uploaded' status. Use get_video to check status before calling this tool.
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"pipeline": {
"default": "search_only",
"enum": [
"search_only",
"qa_only",
"full"
],
"title": "Pipeline",
"type": "string"
},
"scene_detection": {
"default": true,
"title": "Scene Detection",
"type": "boolean"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id"
],
"title": "index_video_hostedArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "index_video_hostedOutput"
}🟢search_videos(query, video_ids, group_id, max_results, rationale)
Find WHEN and WHERE something happens across your videos. Returns timestamped results ranked by relevance — use these timestamps as start/end in ask_video for focused analysis. This is the recommended first step for most questions. Instead of asking ask_video about the entire video, search first to narrow down the relevant moments. Each result's 'video_url' is a short-lived HTTPS presigned URL (expires within hours) — fetch immediately and do not store; call search_videos or get_video again for a fresh URL when needed. Requires search_only or full pipeline.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"video_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Video Ids"
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Group Id"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"query"
],
"title": "search_videosArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "search_videosOutput"
}🟢ask_video(question, video_id, start, end, videos, ...)
Ask a question about one or more videos with visual analysis. Most effective on focused time ranges — use start/end to specify the segment to analyze. BEFORE calling this tool, read the reka://docs/guide resource for recommended workflows. In most cases, you should first: - search_videos to find WHEN something happens, then pass those timestamps here as start/end - segment_video to detect and locate specific objects - get_transcript to read what was said For single-video questions, pass video_id with start/end. For cross-video questions, pass videos — a list of video references with start/end each. For follow-up questions, pass conversation_id from the previous response. You can add start/end to drill into a specific moment while keeping the conversation context. Requires qa_only or full pipeline.
入力スキーマ
{
"type": "object",
"properties": {
"question": {
"title": "Question",
"type": "string"
},
"video_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Video Id"
},
"start": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Start"
},
"end": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "End"
},
"videos": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/VideoContext"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Videos"
},
"conversation_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Conversation Id"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"question"
],
"$defs": {
"VideoContext": {
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"start": {
"title": "Start",
"type": "number"
},
"end": {
"title": "End",
"type": "number"
}
},
"title": "VideoContext",
"type": "object"
}
},
"title": "ask_videoArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "ask_videoOutput"
}🟢segment_video(video_id, prompts, start, end, threshold, ...)
Detect objects in a video segment using text prompts. Describe what to look for and get per-frame detections with bounding boxes and confidence scores. Prompt tips: - Use broad, visual categories: 'animal', 'vehicle', 'person', 'text on screen' - Specific labels ('rabbit', 'Toyota') are less reliable — the detector matches visual patterns, not semantic concepts - Best for confirming whether a category of object appears in a time window, not for precise identification How to pick a time range: - Use search_videos to find WHEN something appears, then pass those timestamps here - Use get_scenes to scan systematically — call segment_video once per scene (scenes typically fit in the 15s window) - Or pass any range you already know Maximum range is 15 seconds per call; for longer spans, make multiple calls with consecutive windows. Does NOT require any feature indexing — works on any uploaded video.
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"prompts": {
"items": {
"type": "string"
},
"title": "Prompts",
"type": "array"
},
"start": {
"title": "Start",
"type": "number"
},
"end": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "End"
},
"threshold": {
"default": 0.5,
"title": "Threshold",
"type": "number"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id",
"prompts",
"start"
],
"title": "segment_videoArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "segment_videoOutput"
}🟢get_transcript(video_id, format, start, end, max_results, ...)
Get the spoken words in a video. Use this instead of ask_video when you need to read what was said — it returns the actual text, not a summary. Use start/end to narrow results for long videos. Requires the transcript feature to be indexed.
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"format": {
"default": "text",
"enum": [
"text",
"segments",
"words"
],
"title": "Format",
"type": "string"
},
"start": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Start"
},
"end": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "End"
},
"max_results": {
"default": 100,
"title": "Max Results",
"type": "integer"
},
"max_chars": {
"default": 10000,
"title": "Max Chars",
"type": "integer"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id"
],
"title": "get_transcriptArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_transcriptOutput"
}🟢get_captions(video_id, start, end, max_results, rationale)
Get AI-generated visual descriptions of what happens on screen. Use this to understand the visual content without watching — each caption describes a short segment with timestamps. Use start/end to narrow results. Requires the captions feature (qa_only or full pipeline).
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"start": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Start"
},
"end": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "End"
},
"max_results": {
"default": 50,
"title": "Max Results",
"type": "integer"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id"
],
"title": "get_captionsArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_captionsOutput"
}🟢get_scenes(video_id, max_results, rationale)
Get detected scene boundaries with start/end timestamps. Use this to understand the video's structure, then pass scene timestamps as start/end to: - ask_video for per-scene contextual analysis - segment_video to detect specific objects per scene (scenes typically fit in segment_video's 15s max range) Requires transcript indexed with scene detection (on by default; skipped only if index_video was called with scene_detection=False).
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"max_results": {
"default": 200,
"title": "Max Results",
"type": "integer"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id"
],
"title": "get_scenesArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_scenesOutput"
}🟢get_feature_catalog(rationale)
List available video analysis features with their dependencies and descriptions. Use this to understand what features exist and what pipelines to use with index_video.
入力スキーマ
{
"type": "object",
"properties": {
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"title": "get_feature_catalogArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_feature_catalogOutput"
}🟢summarize_video(video_id, rationale)
Start here. Get a compact overview of a video: metadata, which features are indexed, a transcript preview, and scene count. Use this to decide which tools to call next — then use segment_video to detect specific objects in time ranges of interest.
入力スキーマ
{
"type": "object",
"properties": {
"video_id": {
"title": "Video Id",
"type": "string"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rationale"
}
},
"required": [
"video_id"
],
"title": "summarize_videoArguments"
}出力スキーマ
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "summarize_videoOutput"
}コミュニティ
エビデンス