Open-source client + docs for FrameFetch — any social-video URL to transcript, metadata & frames. Agent-first API + MCP, pay with x402 (USDC).
git clone https://github.com/MarvinRey7879/framefetch-client{
"mcpServers": {
"framefetch-client": {
"command": "node",
"args": ["/path/to/framefetch-client/dist/index.js"]
}
}
}MCP Servers overview
<p align="center">
<img src="logo.svg" width="84" height="84" alt="FrameFetch logo">
</p>
<h1 align="center">FrameFetch</h1>
<p align="center">
<b>Any social-video URL → metadata, transcript, insights, frames & on-screen text (OCR).</b><br>
Agent-first video data API + MCP server. Pay per call, or with x402 (USDC) — no account.
</p>
<p align="center">
<a href="https://www.npmjs.com/package/framefetch"><img src="https://img.shields.io/npm/v/framefetch?color=ff5a36" alt="npm"></a>
<a href="https://framefetch.net"><img src="https://img.shields.io/badge/website-framefetch.net-ff8562" alt="website"></a>
<a href="https://framefetch.net/status"><img src="https://img.shields.io/badge/status-live-4ad8a0" alt="status"></a>
<img src="https://img.shields.io/badge/license-MIT-9a9fa6" alt="MIT">
</p>
---
FrameFetch turns one **YouTube, YouTube Shorts, TikTok, Instagram Reels, Pinterest, or Reddit** video URL into a single JSON response: **metadata**, **engagement insights**, a **transcript** (captions or Whisper), **parametrically-sampled frames** (every Nth / 1-per-second / a time range, at any width), and the **on-screen text burned into those frames** (OCR — captions, price tags, signage). Built API-first and MCP-first for AI agents.
> This repo is the **open-source client + docs**. The service itself runs at **[framefetch.net](https://framefetch.net)** — you bring a free API key (or pay per call with x402); the backend stays hosted.
## Why
An LLM can't watch a video. To reason about one it needs the video turned into text and images first — a transcript, metadata, and a few frames. FrameFetch returns all three from a URL, across six platforms, through one schema.
## Install
```bash
npm install framefetch
```
Node 18+ (uses built-in `fetch`). Get a free key: [framefetch.net](https://framefetch.net).
## Quick start
```js
import { FrameFetch } from 'framefetch';
const ff = new FrameFetch({ apiKey: process.env.FRAMEFETCH_API_KEY });
const r = await ff.extract({
url: 'https://www.youtube.com/watch?v=jNQXAC9IVRw',
fields: ['metadata', 'transcript', 'frames', 'text_overlay'],
frames: { mode: 'fps', fps: 1, width: 480 },
});
console.log(r.metadata.title); // "Me at the zoo"
console.log(r.transcript.text); // "Alright, so here we are…"
console.log(r.frames.count); // 19
console.log(r.textOverlay?.[0]?.text); // on-screen text detected in the first frame, if any
```
### Scoped helpers
```js
await ff.metadata(url); // title, author, duration, views, likes…
await ff.transcript(url); // captions, else Whisper
await ff.frames(url, { mode: 'fps', fps: 1, width: 512 });
await ff.platforms(); // capability matrix (no key)
await ff.status(); // live service health (no key)
// on-screen text (OCR) — requires "frames" alongside it, use extract() directly:
await ff.extract({ url, fields: ['frames', 'text_overlay'], frames: { mode: 'fps', fps: 1 } });
```
### No signup
```js
const ff = new FrameFetch(); // no key
await ff.demo('https://youtu.be/jNQXAC9IVRw'); // instant metadata, rate-limited
const { key } = await ff.createKey('you@example.com'); // self-serve key + free credit
```
## Use it from an MCP agent
FrameFetch ships an MCP server (Streamable HTTP) with the tools `framefetch_extract` and `framefetch_platform_capabilities`. Add it to Claude, Cursor, or any MCP client:
```json
{
"mcpServers": {
"framefetch": {
"url": "https://framefetch.net/mcp",
"headers": { "Authorization": "<YOUR_FRAMEFETCH_KEY>" }
}
}
}
```
Or one line:
```bash
claude mcp add --transport http framefetch https://framefetch.net/mcp \
--header "Authorization: <YOUR_FRAMEFETCH_KEY>"
```
### Local stdio bridge
Prefer a local stdio server (Claude Desktop, sandboxes, no inbound HTTP)? This package
ships `framefetch-mcp`, a zero-dependency stdio↔HTTP bridge that exposes the same tools
and forwards calls to `framefetch.net`:
```json
{
"mcpServers": {
"framefetch": {
"command": "npx",
"args": ["-y", "framefetch-mcp"],
"env": { "FRAMEFETCH_API_KEY": "<YOUR_FRAMEFETCH_KEY>" }
}
}
}
```
`tools/list` works with no key; tool calls use `FRAMEFETCH_API_KEY` (or x402). Override the
endpoint with `FRAMEFETCH_MCP_URL`.
## Pay without an account (x402)
Autonomous agents can pay per call in **USDC via x402** on Base — no signup, no human in the loop. Discoverable in the x402 Bazaar and at [`/.well-known/x402.json`](https://framefetch.net/.well-known/x402.json). Humans can use a free tier, prepaid credits, or a Stripe card.
## Errors
```js
import { FrameFetchError } from 'framefetch';
try {
await ff.transcript(url);
} catch (e) {
if (e instanceof FrameFetchError && e.status === 402) {
// out of credit — top up at framefetch.net or via x402
}
}
```
## API surface
| Method | Endpoint | Auth |
| --- | --- | --- |
| `extract({ url, fields, frames })` | `POST /v1/extract` | key |
| `metadata(url)` | `POST /v1/metadata` | key |
| `transcript(url)` | `POST /v1/transcript` | key |
| `frames(url, spec)` | `POST /v1/frames` | key |
| `platforms()` | `GET /v1/platforms` | — |
| `status()` | `GET /v1/status` | — |
| `demo(url)` | `POST /v1/demo` | — |
| `createKey(email)` | `POST /v1/keys` | — |
Full OpenAPI: [framefetch.net/openapi.json](https://framefetch.net/openapi.json) · Docs: [framefetch.net/docs](https://framefetch.net/docs)
## Links
[Website](https://framefetch.net) · [Docs](https://framefetch.net/docs) · [Pricing](https://framefetch.net/pricing) · [Status](https://framefetch.net/status) · [Guide: giving an agent video data](https://framefetch.net/ai-agent-video-data) · [Compare vs alternatives](https://framefetch.net/compare-video-data-apis)
## License
MIT
What people ask about framefetch-client
What is MarvinRey7879/framefetch-client?
+
MarvinRey7879/framefetch-client is mcp servers for the Claude AI ecosystem. Open-source client + docs for FrameFetch — any social-video URL to transcript, metadata & frames. Agent-first API + MCP, pay with x402 (USDC). It has 0 GitHub stars and was last updated 24d ago.
How do I install framefetch-client?
+
You can install framefetch-client by cloning the repository (https://github.com/MarvinRey7879/framefetch-client) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is MarvinRey7879/framefetch-client safe to use?
+
MarvinRey7879/framefetch-client has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains MarvinRey7879/framefetch-client?
+
MarvinRey7879/framefetch-client is maintained by MarvinRey7879. The last recorded GitHub activity is from 24d ago, with 0 open issues.
Are there alternatives to framefetch-client?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy framefetch-client to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/marvinrey7879-framefetch-client)<a href="https://claudewave.com/repo/marvinrey7879-framefetch-client"><img src="https://claudewave.com/api/badge/marvinrey7879-framefetch-client" alt="Featured on ClaudeWave: MarvinRey7879/framefetch-client" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!