Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,523Letters: 13Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:209a87c984b360d7b1366c1f43a8f1cdcce4595cdea7a4daa475673b81fee71c
What it is
What a remote MCP server returned when asked what it offers: 4 tools

The blob, as servednamed by its sha256

{ "instructions": "FrameFetch turns any public social-video URL (YouTube incl. Shorts, TikTok, Instagram Reels, Pinterest, Reddit) into structured data: metadata, transcript, frames, OCR text, summaries, comments, Q&A, and video search.\nAuth: tools/list and framefetch_platform_capabilities are free and keyless; framefetch_extract and framefetch_search need an API key and spend credit. No key? Get one free instantly, no card and no verification: POST https://framefetch.net/v1/keys with {\"email\":\"[email protected]\"} -> {\"key\":\"ff_...\"}, then reconnect (or retry) with header `Authorization: Bearer <key>`. Includes ~100 free calls, refreshed monthly.\nCosts are returned per call in micro-USD (1,000,000 = $1). Full docs: https://framefetch.net/docs", "tools": [ { "description": "Check this account's credit balance/usage. Read-only — never charges; works at zero balance (unlike framefetch_extract). Purpose: check balance before expensive framefetch_extract calls — at session start, periodically, or after a 402. When NOT to use: before every single framefetch_extract call in a tight loop. Returns: balance_micros, spend_7d_micros, calls_7d — micro-USD (1,000,000 = $1). Low balance: top up via x402 (USDC) at POST /v1/topup, or card at POST /v1/checkout.", "inputSchema": { "properties": {}, "type": "object" }, "name": "framefetch_account", "outputSchema": null }, { "description": "Extract data from ONE public social-video URL (YouTube incl. Shorts, TikTok, Instagram Reels, Pinterest, Reddit): metadata/insights/transcript/frames/digest/comments/etc — see `fields`. When NOT to use: non-video pages, private/login-walled content, or bulk crawling (one URL per call). Returns one JSON object with only the requested fields + a `cost` block (micro-USD); shapes: https://framefetch.net/docs. Cost scales with what you request (frames/transcript cost more than metadata). No key? POST /v1/keys {email} -> instant key (~100 free calls); or x402 (USDC), no account. Example: {\"url\":\"https://www.youtube.com/watch?v=...\",\"fields\":[\"metadata\",\"transcript\"]}.", "inputSchema": { "properties": { "ask": { "description": "Question about the video (3-500 chars); <=500-token answer w/ timestamped quotes, grounded in the transcript (auto-pulled). Never cached; degrades (never charged) if unavailable. Long videos: answer draws on a relevance-selected/sampled subset, not just the head — see response `ask.coverage`. No transcript (e.g. Pinterest): falls back to frames, `based_on`:[\"frames\"].", "maxLength": 500, "minLength": 3, "type": "string" }, "cache": { "description": "false forces a fresh, billed extract.", "type": "boolean" }, "comments_cap": { "description": "Max top-level comments (1-200, default 30); only used with \"comments\".", "maximum": 200, "minimum": 1, "type": "integer" }, "fields": { "description": "Which data to return; default [\"metadata\"]. Pulls: digest→transcript; audio_digest→digest→transcript; structured→transcript; comment_sentiment→comments. digest/audio_digest/structured/comment_sentiment: degrade to a warning, never charged, on failure. digest: gist+topics via LLM. audio_digest: mp3 of digest (signed URL, 24h); voice via `voice`; +`translate` for other-language audio. structured: chapters/entities/products_shown/claims/key_moments via vision LLM. comments: up to comments_cap; YouTube only (else warning; see GET /v1/platforms). comment_sentiment: aggregated audience sentiment (positive_pct/neutral_pct/negative_pct/summary/top_themes); needs >=5 comments; same YouTube-only limit. text_overlay: OCR per frame; requires \"frames\"; skipped above 200 frames. delta: velocity vs the previous fetch; first call seeds the baseline. Docs: https://framefetch.net/docs.", "items": { "enum": [ "metadata", "insights", "transcript", "frames", "text_overlay", "digest", "audio_digest", "structured", "comments", "comment_sentiment", "delta" ], "type": "string" }, "type": "array" }, "frames": { "description": "Frame-sampling spec; required when \"frames\" or \"text_overlay\" is requested.", "properties": { "format": { "enum": [ "jpg", "png", "webp" ], "type": "string" }, "fps": { "description": "fps/range: frames per second (max 60)", "type": "number" }, "from": { "description": "range: start second", "type": "number" }, "mode": { "enum": [ "all", "every_n", "fps", "range" ], "type": "string" }, "n": { "description": "every_n: take every Nth source frame", "type": "number" }, "to": { "description": "range: end second", "type": "number" }, "width": { "description": "downscale width in px (16–7680)", "type": "number" } }, "required": [ "mode" ], "type": "object" }, "subtitle_format": { "description": "Renders transcript as subtitles in `subtitles` (srt/vtt). Requires \"transcript\" (or \"digest\"); uses translated cues if \"translate\" set.", "enum": [ "srt", "vtt" ], "type": "string" }, "translate": { "description": "ISO-639-1 target language (e.g. \"es\"); adds `transcript_translated` (timings kept). Requires \"transcript\" (or \"digest\"). Billed per audio-minute.", "type": "string" }, "url": { "description": "Public video URL from a supported platform.", "type": "string" }, "voice": { "description": "Voice for \"audio_digest\": OpenAI voices (alloy/echo/fable/onyx/nova/shimmer) + Groq \"Fritz-PlayAI\"; default \"alloy\".", "enum": [ "alloy", "echo", "fable", "onyx", "nova", "shimmer", "Fritz-PlayAI" ], "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "framefetch_extract", "outputSchema": null }, { "description": "JSON matrix of data types (metadata, insights, transcript, frames, comments) per platform — YouTube (+Shorts), TikTok, Instagram Reels, Pinterest, Reddit. Call before framefetch_extract to confirm support. No input.", "inputSchema": { "properties": {}, "type": "object" }, "name": "framefetch_platform_capabilities", "outputSchema": null }, { "description": "Search YouTube by keyword (yt-dlp, no login). Returns up to `limit` hits: url/title/uploader/durationSec/uploadDate(often null)/thumbnail/views. YouTube only — use framefetch_extract on a hit's url for transcript/frames/etc. Billed ~$0.002/call (metadata-tier), regardless of `limit`.", "inputSchema": { "properties": { "cache": { "description": "false = fresh, billed search.", "type": "boolean" }, "limit": { "description": "Default 10.", "maximum": 25, "minimum": 1, "type": "integer" }, "platform": { "enum": [ "youtube" ], "type": "string" }, "query": { "description": "2-200 chars.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "framefetch_search", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:209a87c984b360d7b1366c1f43a8f1cdcce4595cdea7a4daa475673b81fee71c | sha256sum