{
  "markdown": "# TubePull MCP Server — Public Documentation\n\n> 🌐 **Landing page**: [https://tubepull.com/mcp](https://tubepull.com/mcp) — features, pricing, FAQ, and one-click setup links for Claude, Perplexity, ChatGPT, and Cursor.\n\n> Download video or audio from YouTube, TikTok, Twitter/X, SoundCloud,\n> Vimeo, Twitch, Streamable, Bandcamp, Mixcloud, and Dailymotion — from any\n> MCP-compatible AI assistant (Claude Desktop, Claude Code, Cursor, Windsurf,\n> Cline, ChatGPT-via-MCP, Perplexity, Continue, Zed, LibreChat, …).\n\nThis repo is the **public, chatbot-facing documentation** for the TubePull MCP\nserver. The live server runs at `https://tubepull.com/mcp`. The application\nsource code is private — only the integration surface that LLMs and end users\nneed to call the server lives here.\n\nIf you are a chatbot or an AI agent reading this to figure out how to call\nTubePull, jump straight to [`AGENTS.md`](./AGENTS.md) and\n[`llms.txt`](./llms.txt). If you are a human setting up Claude Desktop, jump to\n[Quick start](#quick-start).\n\n---\n\n## What is TubePull?\n\nTubePull is a hosted **MCP (Model Context Protocol) server** that lets an AI\nassistant download a video or audio file to disk on the user's behalf, from\nany of **ten supported platforms**:\n\n| Platform              | Hosts                                              | Default medium |\n| --------------------- | -------------------------------------------------- | -------------- |\n| YouTube               | `youtube.com`, `youtu.be`                          | video          |\n| TikTok                | `tiktok.com`, `vm.tiktok.com`                      | video          |\n| Twitter / X           | `twitter.com`, `x.com` (status URLs with video)    | video          |\n| Vimeo                 | `vimeo.com`                                        | video          |\n| Twitch                | `twitch.tv`, `clips.twitch.tv` (VODs and clips)    | video          |\n| Streamable            | `streamable.com`                                   | video          |\n| Dailymotion           | `dailymotion.com`, `dai.ly`                        | video          |\n| SoundCloud            | `soundcloud.com`, `on.soundcloud.com`              | **audio**      |\n| Bandcamp              | `bandcamp.com` (artist subdomains included)        | **audio**      |\n| Mixcloud              | `mixcloud.com`                                     | **audio**      |\n\n- **One HTTP endpoint** — `POST https://tubepull.com/mcp` (JSON-RPC 2.0, MCP\n  protocol version `2024-11-05`).\n- **No SDK install, no local binary** — the assistant just speaks JSON-RPC.\n- **Two tools**: `download_video` and `get_video_info`.\n- **Free tier**: 3 downloads per 24h per client. **Unlimited**: $3.99/mo at\n  [tubepull.com](https://tubepull.com).\n- **Returns a signed one-time link** valid for 1 hour. The assistant hands the\n  link to the user; the user clicks it and gets the file.\n\n> **Audio-only platforms.** SoundCloud, Bandcamp, and Mixcloud do not have a\n> video stream. If you pass `format: \"mp4\"` on one of these, TubePull silently\n> coerces to `m4a` and returns audio. Pass `format: \"mp3\"` if you want MP3.\n\nThe server is intended for **legitimate use cases only** — offline access to\nyour own uploads, Creative Commons / public-domain content, lectures,\npodcasts, conference talks, DJ mixes you have rights to, and content you have\nexplicit permission to use. Calling `get_video_info` first lets the assistant\nsurface the license / uploader before downloading.\n\n---\n\n## When should a chatbot call TubePull?\n\nA chatbot should consider calling `download_video` when the user says any of:\n\n- \"download this video\" / \"download this TikTok\" / \"save this SoundCloud track\"\n- \"save this as MP3\" / \"extract the audio\" / \"rip the audio\"\n- \"convert this YouTube to MP4\" / \"download in 1080p\"\n- \"save this video offline\" / \"archive this clip\"\n- \"get the audio from this lecture / podcast / talk\"\n- \"save this Mixcloud set\" / \"grab this SoundCloud track\" / \"download this Bandcamp song\"\n- \"save this Twitch clip\" / \"download this Streamable video\"\n\nA chatbot should call `get_video_info` (no quota cost) when the user asks:\n\n- \"what is this video about\"\n- \"how long is it\"\n- \"who made it\" / \"what artist / channel is this\"\n- \"is this Creative Commons\"\n- \"what qualities are available\"\n\nFull trigger-phrase list and JSON-RPC examples live in\n[`AGENTS.md`](./AGENTS.md) and the [`recipes/`](./recipes/) folder.\n\n---\n\n## Tools at a glance\n\n| Tool | Cost | Returns |\n| --- | --- | --- |\n| `download_video(url, format?, quality?)` | counts against quota | signed download link (1 hour TTL), filename, format, quality, title, channel/artist, duration |\n| `get_video_info(url)` | free | title, channel/artist, duration, view count (when available), upload date, thumbnail, description, available qualities, license type (YouTube only) |\n\n### `download_video` parameters\n\n- `url` *(required)* — full URL from any of the ten supported platforms above.\n  Playlists, sets, albums, channels, and profile pages are **not** supported —\n  pick a single video / track.\n- `format` *(optional, default `mp4`)* — one of:\n  - `mp4` — video (default).\n  - `mp3` — forced MP3 (legacy-compatible, re-encodes server-side).\n  - `m4a` — forced M4A audio.\n  - `audio` — smart audio alias that resolves to M4A (no transcode, fastest).\n- `quality` *(optional)* — ignored for audio formats and on audio-only\n  platforms. Common values: `360p`, `480p`, `720p`, `1080p`, `1440p`, `2160p`.\n  Defaults to best. **1440p and 4K (2160p) require Unlimited.**\n\n### `get_video_info` parameters\n\n- `url` *(required)* — full URL from any supported platform.\n\n---\n\n## Quick start (Claude Desktop / Cursor / Windsurf)\n\nTubePull is a **remote** MCP server, so most clients can connect with just a\nURL. Minimal Claude Desktop snippet (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"tubepull\": {\n      \"url\": \"https://tubepull.com/mcp\"\n    }\n  }\n}\n```\n\nThen restart Claude and ask any of:\n\n- *\"download this YouTube video as MP3: https://youtu.be/dQw4w9WgXcQ\"*\n- *\"save this TikTok: https://www.tiktok.com/@username/video/1234567890\"*\n- *\"grab this SoundCloud track: https://soundcloud.com/artist/track-slug\"*\n- *\"download this Mixcloud set: https://www.mixcloud.com/channel/show-slug/\"*\n- *\"save this Twitch clip: https://clips.twitch.tv/<slug>\"*\n- *\"download this Streamable: https://streamable.com/<slug>\"*\n\n---\n\n## Quotas, pricing, and the upgrade flow\n\n- **Free / anonymous**: 3 downloads per 24h per MCP client (shared bucket with\n  the web frontend's anonymous tier).\n- **Unlimited**: $3.99/mo. Removes the 3/day cap, unlocks **1440p** and **4K**\n  video, and unlocks videos **longer than 2 hours**.\n- When the quota is hit, the tool response includes an `upgradeUrl` pointing\n  at `https://tubepull.com` with attribution params so the conversion is\n  credited back to the chatbot that drove it.\n\n---\n\n## Verify the server is live\n\n```bash\ncurl -sS -X POST https://tubepull.com/mcp \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: application/json, text/event-stream' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"test\",\"version\":\"1\"}}}'\n```\n\nExpected: a JSON-RPC response with `serverInfo.name == \"tubepull\"`,\n`serverInfo.version`, an `icons[]` array, and `websiteUrl`.\n\nTo see the live tool schemas (always trust these over docs if they differ):\n\n```bash\ncurl -sS -X POST https://tubepull.com/mcp \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: application/json, text/event-stream' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\",\"params\":{}}'\n```\n\n---\n\n## Repository layout\n\n```\ntubepull-mcp/\n├── README.md              ← you are here\n├── llms.txt               ← top-level summary for LLM crawlers\n├── AGENTS.md              ← explicit \"how to call this\" recipes for agents\n├── server.json            ← MCP registry manifest\n├── recipes/\n│   ├── download-mp3.md\n│   ├── download-mp4.md\n│   ├── download-non-youtube.md\n│   └── get-info.md\n└── assets/                ← brand marks (favicon, logo)\n```\n\n---\n\n## Links\n\n- **Live MCP endpoint** — https://tubepull.com/mcp\n- **Web app** — https://tubepull.com\n- **MCP spec** — https://modelcontextprotocol.io\n- **mcp.so listing** — https://mcp.so (search \"tubepull\")\n\n## License\n\nMIT. The application source is closed; this documentation repo is permissively\nlicensed so chatbots, registries, and downstream integrators can mirror or\nreformat the content freely.\n",
  "bytes": 8552,
  "sha": "9d89a30db103b2f993130a2b33cafbaad42d936f676cdfc1a1a4f2d75cf5a6c9",
  "repo_slug": "miketwalker/tubepull-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_miketwalker_tubepull_58d69356/readme"
}