Server definition
- Hash
- sha256:a2f097413bf8fb3ece8a3c73fa95b5438fcca69c58f097b82dba199c98fbf701
- What it is
- What a remote MCP server returned when asked what it offers: 3 tools
The blob, as servednamed by its sha256
{
"instructions": "ScriptHaul fetches YouTube transcripts. To answer questions about a channel or playlist: call list_videos to see every video with its date and ID, pick the relevant ones by title, and call get_transcript for each. Cached transcripts are unlimited; uncached fetches and cold enumerations share a small daily allowance per IP. When the user wants every transcript as files, use get_bulk_download_link — bulk downloads run free on scripthaul.com.",
"tools": [
{
"description": "For a YouTube channel or playlist URL, returns a prefilled scripthaul.com link where the user can download every transcript as a ZIP for free. Bulk jobs cannot run over MCP; they need the website.",
"inputSchema": {
"properties": {
"url": {
"description": "YouTube channel or playlist URL (also accepts @handles).",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "get_bulk_download_link",
"outputSchema": {
"properties": {
"type": {
"description": "What the input resolved to.",
"enum": [
"channel",
"playlist"
],
"type": "string"
},
"url": {
"description": "Prefilled scripthaul.com link that starts the bulk download.",
"type": "string"
}
},
"required": [
"url",
"type"
],
"type": "object"
}
},
{
"description": "Fetch the transcript of a single YouTube video by URL or 11-character video ID. Serves the permanent cache instantly when available and otherwise fetches from YouTube (uncached fetches are limited per IP per day). Formats: clean text, timestamped, both, srt, vtt, md, json.",
"inputSchema": {
"properties": {
"format": {
"description": "Output format. Default \"clean\" (plain text). \"timestamped\" prefixes each line with a timestamp; srt/vtt are subtitle files; json is structured.",
"enum": [
"clean",
"timestamped",
"both",
"srt",
"vtt",
"md",
"json"
],
"type": "string"
},
"language": {
"description": "Preferred caption language code such as \"en\" or \"pt-BR\". Optional; defaults to English with fallback to whatever track exists.",
"type": "string"
},
"video_url": {
"description": "YouTube video URL (watch, youtu.be, shorts, embed, live) or a bare 11-character video ID.",
"type": "string"
}
},
"required": [
"video_url"
],
"type": "object"
},
"name": "get_transcript",
"outputSchema": {
"description": "Transcript metadata. The transcript text itself is delivered in the text content block, not duplicated here.",
"properties": {
"channel": {
"description": "Channel name when known.",
"type": "string"
},
"characters": {
"description": "Length of the rendered transcript text.",
"type": "integer"
},
"format": {
"description": "The output format that was rendered.",
"type": "string"
},
"kind": {
"description": "manual = creator captions, asr = auto-generated.",
"enum": [
"manual",
"asr"
],
"type": "string"
},
"language": {
"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.",
"type": "string"
},
"title": {
"description": "Video title when known.",
"type": "string"
},
"video_id": {
"description": "The 11-character YouTube video ID.",
"type": "string"
}
},
"required": [
"video_id",
"language",
"kind",
"format",
"characters"
],
"type": "object"
}
},
{
"description": "List the videos of a YouTube channel or playlist: date, video ID, and title for each. Use this to answer questions about a channel — pick the relevant videos by title, then call get_transcript for each one. Listings are cached for a few hours; a fresh enumeration counts against the same daily allowance as uncached fetches.",
"inputSchema": {
"properties": {
"limit": {
"description": "Maximum videos to list, newest first for channels. Default 100, maximum 200.",
"type": "integer"
},
"url": {
"description": "YouTube channel or playlist URL (also accepts @handles).",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "list_videos",
"outputSchema": {
"properties": {
"shown": {
"description": "How many are included below (bounded by limit).",
"type": "integer"
},
"title": {
"description": "Channel or playlist title when known.",
"type": "string"
},
"truncated": {
"description": "True when the source has more videos than one enumeration returns (500).",
"type": "boolean"
},
"type": {
"enum": [
"channel",
"playlist"
],
"type": "string"
},
"video_count": {
"description": "Total videos in the listing snapshot.",
"type": "integer"
},
"videos": {
"items": {
"properties": {
"id": {
"type": "string"
},
"published_at": {
"description": "ISO date when known.",
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"type",
"video_count",
"shown",
"videos"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:a2f097413bf8fb3ece8a3c73fa95b5438fcca69c58f097b82dba199c98fbf701 | sha256sum