FrameFetch runs a Streamable HTTP MCP server at https://framefetch.net/mcp. Three tools, one config block, and your agent can turn any YouTube, TikTok, Instagram Reels, Pinterest, or Reddit URL into transcript, metadata, frames, on-screen text, and more — without you writing a single HTTP client.
| Tool | Purpose | Annotations |
|---|---|---|
framefetch_extract | The workhorse. One video URL in, any combination of metadata, insights, transcript, frames, text_overlay (OCR), digest, audio_digest, structured understanding, comments, comment_sentiment, ask (Q&A), or delta out — billed per call, itemized in the response's cost block. | readOnlyHint: true, openWorldHint: true |
framefetch_platform_capabilities | Returns the capability matrix — which fields (metadata, transcript, frames, comments, ...) each platform actually supports. Call this before requesting a field on a platform you're unsure about. | readOnlyHint: true |
framefetch_account | Balance and trailing-7-day spend/call-count. Never charges, and keeps working at zero balance — the tool you call when framefetch_extract fails with a 402. | readOnlyHint: true |
framefetch_account is only advertised in tools/list when the server is running with a balance provider wired up (true for the hosted framefetch.net/mcp endpoint) — a self-hosted stdio server without a database simply omits it rather than listing it and erroring.
Add FrameFetch to your client's MCP config with a Bearer key:
{
"mcpServers": {
"framefetch": {
"url": "https://framefetch.net/mcp",
"headers": { "Authorization": "Bearer ff_xxx_yyy" }
}
}
}That's the whole client-side setup. No SDK to install for the agent side — it's a standard remote MCP server over Streamable HTTP.
claude mcp add framefetch --transport http https://framefetch.net/mcp \ --header "Authorization: Bearer $FRAMEFETCH_API_KEY"
FrameFetch is also listed in the official MCP registry as io.github.MarvinRey7879/framefetch, and in the Claude Connectors Directory, for clients that support registry-based discovery instead of a manual config block.
One call, instant, no card:
curl -X POST https://framefetch.net/v1/keys \
-H "Content-Type: application/json" \
-d '{ "email": "you@example.com" }'
# -> { "key": "ff_xxx_yyy", "message": "store this key; it is shown once..." }That key carries the free tier: ~100 calls every month (a $0.20 credit, refreshed monthly, no subscription). Re-view or rotate it anytime at framefetch.net/account, or mint it via the browser at framefetch.net/signup if you'd rather not script it.
An autonomous agent shouldn't need a human to provision an API key at all. FrameFetch also settles payment with x402: call POST /v1/topup without payment and you get an HTTP 402 back with x402 requirements (USDC on Base). Sign and retry with the X-PAYMENT header to add credit (1 USDC = $1), then call the MCP tools or REST endpoints normally — no signup, no human in the loop, ever. FrameFetch is listed in the x402 Bazaar for agents that discover payable APIs that way.
Every error is { "error": { "code", "message", "hint" } } — stable, typed codes (INVALID_PARAMS, UNAUTHORIZED, PAYMENT_REQUIRED, RATE_LIMITED, EXTRACTION_FAILED, and more) rather than a free-text message an agent has to pattern-match. A PAYMENT_REQUIRED response now also carries a pointer back to POST /v1/keys so an agent that hits it with no key yet has a documented next step instead of a dead end.
Per-platform pages for what each host supports: YouTube, YouTube Shorts, TikTok, Instagram Reels, Reddit, Pinterest. Per-feature pages: question answering, structured understanding, comment sentiment. The full HTTP + MCP reference, including every field and error code, lives in the docs.
Three: framefetch_extract (the workhorse — metadata, transcript, frames, OCR, digest, structured understanding, comments, sentiment, and question answering from one video URL), framefetch_platform_capabilities (what each platform supports, no input, never charges), and framefetch_account (balance and 7-day usage, read-only, works even at zero balance).
Add a streamable-HTTP MCP server pointing at https://framefetch.net/mcp with an Authorization: Bearer <key> header in your client's mcpServers config. Get the key first with POST /v1/keys or at framefetch.net/signup.
Yes, two ways: POST /v1/keys with just an email mints a usable key instantly with no human approval step, or an agent can skip keys entirely and pay per call with x402 (USDC on Base) — the call returns HTTP 402 with payment requirements, the agent signs and retries, no signup at all.
framefetch_platform_capabilities and framefetch_account are marked readOnlyHint: true and never charge. framefetch_extract is also readOnlyHint: true (it never mutates anything on the caller's side) but is openWorldHint: true and does spend the caller's credits, since it reaches out to arbitrary external video platforms rather than a closed set of internal resources.
No — this page is the MCP-first quickstart. /docs is the full HTTP + MCP reference: every request field, every response shape, every error code, translation, audio briefings, batch, channel webhooks, and billing.