redact_sensitive
The redact_sensitive tool redacts rectangular regions in videos using ffmpeg. It supports three operating modes and three visual effects, making it easy to hide sensitive content before sharing or analyzing screen recordings.
Quick Start
Section titled “Quick Start”The simplest usage — just provide the video path and describe what to blur using the intent field:
"Redact the video at ./screen-recording.mp4 — blur the API keys shown in the terminal"AI detection is enabled automatically when you use intent. No manual coordinates or explicit consent needed.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
videoPath | string | ✅ | — | Path to the video file (local path, file:// URI, or http(s):// URL) |
intent | string | ❌ | — | Natural-language description of what to redact, e.g. "blur the API keys" or "hide all passwords" |
effect | "blur", "pixelate", "blackout" | ❌ | "blur" | Visual effect applied to redacted regions |
previewOnly | boolean | ❌ | false | If true, returns preview frames with overlays instead of writing a redacted video |
regions | Array<RedactionRegion> | ❌ | — | Array of rectangular regions to redact. Required when detectionMode is "manual" |
detectionMode | "manual", "ai", "hybrid" | ❌ | "manual" | How regions are determined. "manual" = user-supplied coordinates; "ai" = AI detection; "hybrid" = both |
allowRemoteDetection | boolean | ❌ | false | Must be true for AI/hybrid modes (sampled frames are sent to the AI provider). Implicitly granted when using intent. |
provider | "gemini", "m3", "kimi", "qwen", "mimo", "glm" | ❌ | — | AI provider for detection. Falls back automatically if unavailable. |
sampleIntervalSeconds | number | ❌ | 5 | Interval between sampled frames for AI detection |
maxFrames | number | ❌ | 20 | Maximum number of frames to sample for AI detection |
minConfidence | number (0–1) | ❌ | 0.5 | Minimum confidence threshold for AI detections. Detections below this are dropped. |
paddingPixels | number (0–100) | ❌ | 10 | Extra padding in pixels to expand each detected region |
customInstructions | string | ❌ | — | Additional instructions for AI detection, e.g. "Focus on the terminal window in the top-right corner" |
outputPath | string | ❌ | — | Custom output path for the redacted video. If omitted, a temp path is used. |
RedactionRegion
Section titled “RedactionRegion”Each region in the regions array has this shape:
| Field | Type | Required | Description |
|---|---|---|---|
x | number | ✅ | Left edge in pixels from the left of the frame |
y | number | ✅ | Top edge in pixels from the top of the frame |
width | number | ✅ | Width of the region in pixels |
height | number | ✅ | Height of the region in pixels |
startTime | number | ❌ | Start time in seconds (inclusive). Omit for full-video. |
endTime | number | ❌ | End time in seconds (inclusive). Omit for full-video. |
label | string | ❌ | Optional human-readable label for the region |
Operating Modes
Section titled “Operating Modes”1. Intent-Driven (Recommended)
Section titled “1. Intent-Driven (Recommended)”Just describe what you want redacted in natural language. The tool auto-classifies the category, enables AI detection, and grants implicit consent.
intent: "blur the API keys shown in the terminal"intent: "hide all passwords and credentials"intent: "blackout the email addresses in the contact form"No regions, detectionMode, or allowRemoteDetection needed.
2. Manual Mode
Section titled “2. Manual Mode”Supply pixel coordinates directly. Never sends frames to an AI provider — fully local and privacy-safe.
{ "videoPath": "./recording.mp4", "detectionMode": "manual", "effect": "blur", "regions": [ { "x": 100, "y": 200, "width": 300, "height": 50, "startTime": 5, "endTime": 15, "label": "api_key" } ]}3. AI-Assisted Detection
Section titled “3. AI-Assisted Detection”Samples frames across the video, sends them to an AI provider to detect sensitive regions, then applies redaction locally via ffmpeg. Requires allowRemoteDetection: true.
{ "videoPath": "./recording.mp4", "detectionMode": "ai", "allowRemoteDetection": true, "effect": "pixelate", "provider": "gemini", "minConfidence": 0.6}4. Hybrid Mode
Section titled “4. Hybrid Mode”Combines manual regions with AI-detected regions. Set detectionMode: "hybrid" or use intent alongside explicit regions.
{ "videoPath": "./recording.mp4", "intent": "blur the API keys", "regions": [ { "x": 500, "y": 600, "width": 200, "height": 30, "label": "known_secret" } ]}Preview Mode
Section titled “Preview Mode”Set previewOnly: true to generate annotated frames with drawbox overlays so you can verify detected regions before committing to a full render.
{ "videoPath": "./recording.mp4", "intent": "blur the API keys", "previewOnly": true}Response
Section titled “Response”The tool returns:
- Human-readable summary — detection mode, effect, number of sampled frames, detections retained, regions applied
- Structured JSON report — machine-readable block with
inputVideo,outputVideo,effect,detectionMode,providerUsed,sampledFrames,rawDetections,regionsApplied,warnings - Preview frames (in preview mode) — images with redaction boxes overlaid
Requirements
Section titled “Requirements”- Pro license —
VIDEO_MCP_LICENSE_KEYrequired - ffmpeg — required for all redaction rendering; uses bundled
@ffmpeg-installer/ffmpegbinaries - AI provider key — required for AI-assisted detection (any of the 6 video providers)
- AI detection consent —
allowRemoteDetection: truerequired fordetectionMode: "ai"or"hybrid"(automatically granted when usingintent)
Examples
Section titled “Examples”Intent-driven (simplest):
"Redact ./screen-recording.mp4 — blur the API keys shown in the terminal"Manual mode with time-bounded regions:
{ "videoPath": "./meeting.mp4", "detectionMode": "manual", "effect": "blackout", "regions": [ { "x": 0, "y": 0, "width": 400, "height": 60, "startTime": 10, "endTime": 45, "label": "participant_email" } ]}Preview before committing:
{ "videoPath": "./demo.mp4", "intent": "hide all credentials", "previewOnly": true, "minConfidence": 0.7}Custom output path with pixelate effect:
{ "videoPath": "./recording.mp4", "effect": "pixelate", "regions": [{ "x": 100, "y": 200, "width": 300, "height": 50 }], "outputPath": "./output/redacted.mp4"}