ScriptHaul
What this MCP does
Retrieves YouTube transcripts, lists channel or playlist videos, and provides bulk transcript download links.
Tools
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'YouTube channel or playlist URL (also accepts @handles).'}}}
Output schema
{'type': 'object', 'required': ['url', 'type'], 'properties': {'url': {'type': 'string', 'description': 'Prefilled scripthaul.com link that starts the bulk download.'}, 'type': {'enum': ['channel', 'playlist'], 'type': 'string', 'description': 'What the input resolved to.'}}}
Input schema
{'type': 'object', 'oneOf': [{'required': ['channel']}, {'required': ['playlist']}], 'properties': {'channel': {'type': 'string', 'maxLength': 300, 'minLength': 1, 'description': 'UC channel ID, a /channel/UC… URL, or an already-resolved alias.'}, 'playlist': {'type': 'string', 'maxLength': 300, 'minLength': 1, 'description': 'Public YouTube playlist ID or URL.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ok', 'videos'], 'properties': {'ok': {'const': True}, 'videos': {'type': 'array', 'items': {'type': 'object', 'required': ['video_id', 'title', 'published_at', 'url', 'cached'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'cached': {'type': 'boolean'}, 'video_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{11}$'}, 'published_at': {'type': 'string', 'format': 'date-time'}}}, 'maxItems': 15}}}
Input schema
{'type': 'object', 'required': ['video_url'], 'properties': {'format': {'enum': ['clean', 'timestamped', 'both', 'srt', 'vtt', 'md', 'json'], 'type': 'string', 'description': 'Output format. Default "clean" (plain text). "timestamped" prefixes each line with a timestamp; srt/vtt are subtitle files; json is structured.'}, 'language': {'type': 'string', 'description': 'Preferred caption language code such as "en" or "pt-BR". Optional; defaults to English with fallback to whatever track exists.'}, 'video_url': {'type': 'string', 'description': 'YouTube video URL (watch, youtu.be, shorts, embed, live) or a bare 11-character video ID.'}}}
Output schema
{'type': 'object', 'required': ['video_id', 'language', 'kind', 'format', 'characters'], 'properties': {'kind': {'enum': ['manual', 'asr'], 'type': 'string', 'description': 'manual = creator captions, asr = auto-generated.'}, 'title': {'type': 'string', 'description': 'Video title when known.'}, 'format': {'type': 'string', 'description': 'The output format that was rendered.'}, 'channel': {'type': 'string', 'description': 'Channel name when known.'}, 'language': {'type': 'string', 'description': 'Language of the DELIVERED track. May differ from the requested language when YouTube refuses on-the-fly translation; the text header says so when it happens.'}, 'video_id': {'type': 'string', 'description': 'The 11-character YouTube video ID.'}, 'characters': {'type': 'integer', 'description': 'Length of the rendered transcript text.'}}, 'description': 'Transcript metadata. The transcript text itself is delivered in the text content block, not duplicated here.'}
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'YouTube channel or playlist URL (also accepts @handles).'}, 'limit': {'type': 'integer', 'description': 'Maximum videos to list, newest first for channels. Default 100, maximum 200.'}}}
Output schema
{'type': 'object', 'required': ['type', 'video_count', 'shown', 'videos'], 'properties': {'type': {'enum': ['channel', 'playlist'], 'type': 'string'}, 'shown': {'type': 'integer', 'description': 'How many are included below (bounded by limit).'}, 'title': {'type': 'string', 'description': 'Channel or playlist title when known.'}, 'videos': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}, 'title': {'type': 'string'}, 'published_at': {'type': 'string', 'description': 'ISO date when known.'}}}}, 'truncated': {'type': 'boolean', 'description': 'True when the source has more videos than one enumeration returns (500).'}, 'video_count': {'type': 'integer', 'description': 'Total videos in the listing snapshot.'}}}
Recent tool changes
Similar MCP servers
Social Fetch
Retrieves public content and metadata from social networks, music services, Facebook Marketplace, events, profiles, posts, commen…
Heista
Analyzes video advertising, builds brand intelligence profiles, researches markets, and generates advertising scripts and creativ…
VarynForge
Supports SEO research and content planning through niche analysis, competitor and keyword research, opportunity discovery, and wr…
Tmdb
Provides TMDB-based movie, television, and people discovery, metadata, credits, recommendations, videos, and trend-related entert…
AfterLaunch: the agentic growth marketing engine
Runs growth-marketing workflows covering SEO, AI-search visibility, competitor analysis, content planning, distribution channels,…
Setlist Fm
Provides setlist.fm concert research by artist, venue, city, country, and date, including artist records, concert histories, and …
Watchmode
Searches streaming catalogs and availability across regions, services, genres, networks, titles, and release dates.
Vimeo
Searches and retrieves public Vimeo videos, channels, categories, and related metadata.