The video & audio MCP for AI agents
One command adds it to Claude Code or Cursor. Download and transcribe any URL from your agent, and when you're ready to ship, your agent wires the same API into your app.
$3.00 in free credit. No card required.
Add it to your agent, then replace your_key with your API key.
claude mcp add --transport http importly https://mcp.importly.io/mcp --header "Authorization: Bearer your_key"Run in your terminal, then restart Claude Code.
Works with YouTube, TikTok, X, Instagram, Vimeo, podcasts, and 1000+ other sites.
From first prompt to production
Start by asking your agent for transcripts and downloads. When the idea works, ask it to build Importly into your app with the same key.
- 1
Use it now
Ask for a transcript, a download link, or a video's details.
Your agent Transcribe this talk and pull out the three best quotes https://www.youtube.com/watch?v=…
importly.transcribe_media(url: "https://www.youtube.com/watch?v=…")
Job queued: 7f3c2a1e
importly.check_transcription(jobId: "7f3c2a1e")
Completed: 214 timestamped segments, $0.01
Here are the three quotes, with timestamps so you can jump to each one:
[04:12] "Ship the smallest version that teaches you something."
[11:38] "Your first users are a research team you don't pay."
[27:05] "Speed is a feature until it's the only one."
- 2
Ship it in your app
Your agent reads our docs and writes the integration for you.
Your agent, in your codebase Let users paste a video link in our upload form instead of uploading a file. Use Importly.
fetch(https://importly.io/llms.txt)
Read the import, webhook, and error docs
edit(app/api/import/route.ts)
await fetch('https://api.importly.io/import', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.IMPORTLY_API_KEY}` },
body: JSON.stringify({ url, webhookUrl }),
edit(app/api/webhooks/importly/route.ts)
Saves data.mediaUrl to the upload record
Done. The form accepts links, and IMPORTLY_API_KEY is read from the server environment, never sent to the browser.
Why not a free YouTube MCP?
Free servers run yt-dlp on your machine or in your agent's sandbox. That works until it doesn't.
- Cloud agents get blocked. Agent sandboxes run on datacenter IPs, which YouTube and TikTok flag as bots.
- Every request goes out through rotating residential proxies, and a retry gets a fresh IP.
- yt-dlp breaks every few weeks. Sites change their players and a local install falls behind the fix.
- We roll out new yt-dlp releases as they land, so your agent never has to update anything.
- Media is heavy. Merging streams and pulling out audio needs ffmpeg and room for multi-gigabyte files.
- Downloading, merging, and audio extraction run on our servers. Your agent gets a link.
- Not every video has captions. Caption scrapers return nothing for podcasts, TikToks, and most uploads.
- Transcripts use the video’s own captions when it has them, and speech-to-text when it doesn’t.
Tools your agent gets
Each tool starts a job and returns an ID. The matching check tool returns the result, usually within a minute.
| Tool | What it does | Try asking |
|---|---|---|
| transcribe_media | Transcript with timestamped segments. | “Summarize this podcast episode.” |
| import_media | Downloads video, audio, or both (up to 4K) and returns a direct link. | “Get me the audio from this TikTok.” |
| get_metadata | Formats, uploader, view counts, and thumbnails, without downloading. | “What resolutions is this video available in?” |
| get_basic_metadata | Title, duration, and thumbnail in a second or two. | “How long is this video?” |
| check_balance | Your remaining credit. | “How much Importly credit do I have left?” |
| get_integration_guide | Working code to add Importly to your own app. | “Add import-from-URL to our upload form.” |
Same key, production API
The key in your MCP config is a regular API key. Put it in your server's environment and call the REST API directly.
- Webhooks when a job finishes, or status endpoints to poll.
- Files delivered to your own S3, R2, or B2 bucket.
- Usage-based billing. No seats, no monthly minimum.
// Submit an import; Importly POSTs the result to your webhook.
const res = await fetch('https://api.importly.io/import', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.IMPORTLY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://www.youtube.com/watch?v=jNQXAC9IVRw',
webhookUrl: 'https://your-app.com/webhooks/importly',
}),
})
const { data } = await res.json()
console.log(data.jobId) // poll GET /import/status?id=... or wait for the webhookNode 18+ (built-in fetch).
Pay for what your agent uses
New accounts start with $3.00 in credit and no card. That covers about 300 caption transcripts.
- Transcript of a YouTube video that has captions
- $0.01
- Title, duration, and thumbnail of any video
- $0.01
- Transcript of a 10-minute podcast with speech-to-text
- about $0.30
- A 3-minute video at 720p (about 40 MB)
- about $0.40
Give your agent every video on the internet
Sign up, copy your key, and paste one command. Your first transcripts are on us.
claude mcp add --transport http importly https://mcp.importly.io/mcp --header "Authorization: Bearer your_key"Run in your terminal, then restart Claude Code.