About Unwatched
Unwatched is an MCP server and CLI that turns YouTube videos into validated, structured runbooks for agents. It supports Markdown, YAML, and JSON output, with tools for decoding videos and retrieving saved results.
Key features
- 01Decode YouTube videos into runbooks
- 02Validated Markdown, YAML, or JSON output
- 03CLI for decoding and job status
- 04List and filter previous decodes
- 05MCP tools for job and runbook retrieval
Use cases
- 01Creating executable steps from a tutorial video
- 02Retrieving a previously decoded runbook
- 03Having an agent process a video through MCP
MCP support
The stdio MCP server exposes tools to start video decoding, wait for jobs, inspect job artifacts, retrieve runbooks, and list prior decodes.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEunwatched-mcp
Video URL in → validated runbook out. MCP server + CLI for UNWATCHED. Any AI agent (Claude Code, Cursor, any MCP client) can decode a video into a validated, structured runbook by calling the UNWATCHED API.
Requires Node.js ≥ 18 and an API key from https://unwatched.cloud/app/settings → API Keys.
60-second quickstart
# 1. Install
npm i -g unwatched-mcp # or use npx below without installing
# 2. Set your key
export UNWATCHED_API_KEY=uk_live_... # or: ~/.config/unwatched/config
# 3. Decode a video (starts the job, waits, writes the runbook)
unwatched decode "https://www.youtube.com/watch?v=VIDEO_ID" --format yaml -o runbook.yaml
That's it: runbook.yaml now holds the validated runbook.
CLI
unwatched decode <url> [--profile agent] [--format md|yaml|json] [-o file] [--timeout 600]
unwatched library [query] [--json]
unwatched status <job_id> [--wait] [--timeout 600]
decodestarts a job, polls until it completes, fetches the runbook and writes it to-o <file>(or stdout).librarylists your tenant's previous decodes;queryfilters client-side.statusshows job status + artifact list.
API key resolution
UNWATCHED_API_KEYenvironment variable~/.config/unwatched/config— a file containing eitherUNWATCHED_API_KEY=uk_live_...or the bare key on one line
UNWATCHED_BASE_URL overrides the API base URL (default https://unwatched.cloud/api/v1).
MCP server
The package ships an MCP server (stdio transport) with these tools:
| Tool | What it does |
|---|---|
decode_video(url, profiles?) | start a decode job → returns job_id |
get_job(job_id) | status + artifact list |
get_runbook(job_id, video_id, format: md|yaml|json) | runbook content |
list_library(query?) | previous decodes of your tenant |
wait_for_job(job_id, timeout_s=600) | poll until completed/partial/failed |
Typical agent flow: decode_video → wait_for_job → get_job (find the
video_id) → get_runbook.
Errors are mapped to actionable messages: 401 → check your API key,
402 → quota exhausted, upgrade at https://unwatched.cloud/app/settings,
429 → rate limited (respects Retry-After).
Claude Code
claude mcp add unwatched --env UNWATCHED_API_KEY=uk_live_... -- npx -y unwatched-mcp
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"unwatched": {
"command": "npx",
"args": ["-y", "unwatched-mcp"],
"env": { "UNWATCHED_API_KEY": "uk_live_..." }
}
}
}
Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"unwatched": {
"command": "npx",
"args": ["-y", "unwatched-mcp"],
"env": { "UNWATCHED_API_KEY": "uk_live_..." }
}
}
}
Any other MCP client
Run the server directly over stdio:
UNWATCHED_API_KEY=uk_live_... npx -y unwatched-mcp
# or, when installed globally:
unwatched-mcp
Development
npm install
npm run build
npm test # smoke tests of the API client with mocked HTTP
Layout: src/api-client.ts (REST wrapper + error mapping),
src/cli.ts (commander CLI), src/mcp-server.ts (stdio MCP server),
src/config.ts (key/base-URL resolution).
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.