MCP server for Supadata video & web scraping integration. Features include YouTube, TikTok, Instagram, Twitter, and file video transcription, web scraping, batch processing and structured data extraction.
The server defines 9 tools with reasonable descriptions and mostly complete input schemas. However, several critical gaps prevent a higher score: (1) Parameter descriptions are minimal, most lack actionable guidance on format, range, or constraints. For example, 'lang' parameter descriptions say only 'Language code for transcription' without specifying valid codes, format (BCP-47?), or examples. (2) Output schemas are not documented, LLMs cannot predict what fields will be returned, forcing them to guess about chaining parameters downstream. (3) Tool names are action-oriented (good) but lack consistency in parallel operations: 'supadata_transcript' vs 'supadata_check_transcript_status' introduces unnecessary verbosity. (4) Error handling is absent, no guidance on what to do when a job fails, when to retry, or how to interpret status codes. (5) No parameter validation guidance, e.g., 'limit' in supadata_crawl has no bounds documented, inviting the LLM to pass unreasonable values. The tools do follow verb_noun convention and are single-responsibility, which are strengths.
Check crawl job status and retrieve results. Returns status: "scraping", "completed", "failed", or "cancelled". If status is "scraping", call this tool again after a few seconds with the same id.
Check extract job status and retrieve results. Returns status: "queued", "active", "completed", or "failed". If status is not "completed" or "failed", call this tool again after a few seconds with the same id.
Check transcript job status and retrieve results. Returns status: "queued", "active", "completed", or "failed". If status is not "completed" or "failed", call this tool again after a few seconds with the same id.
Create a crawl job to extract content from all pages on a website. Returns a jobId - use supadata_check_crawl_status with that jobId to poll for results.
Extract structured data from a video URL using AI. Provide a prompt for what to extract, a JSON Schema for the output format, or both. Returns a jobId for async processing - use supadata_check_extract_status with that jobId to poll for results.
No output schemas documented. LLMs cannot predict what fields are returned from any tool, forcing them to reason blindly about downstream chaining and inviting field lookup failures.
Parameter descriptions lack format guidance, valid ranges, and constraints. E.g., 'lang' parameter never specifies valid language codes, 'limit' has no bounds, 'mode' has no enum. This forces LLMs to guess, causing invalid API calls.
No error handling guidance. Status check tools return status strings ('queued', 'active', 'completed', 'failed') but offer no guidance on retry strategy, backoff, or how to handle permanent failures. LLMs have no recovery strategy.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Discover URLs on a website
Fetch metadata from a media URL (YouTube, TikTok, Instagram, Twitter). Returns platform info, title, description, author details, engagement stats, media details, tags, and creation date.
Scrape a single web page
Extract transcript from a video or file URL. For large files, returns a jobId instead of the transcript directly - use supadata_check_transcript_status with that jobId to poll for results.
Overly generic descriptions. E.g., supadata_map: 'Discover URLs on a website' does not explain when to call it instead of supadata_crawl, what format it returns URLs in, or if it supports pagination. Tool selection ambiguity.
Async job tools (transcript, crawl, extract) require polling but no max attempts, timeout, or backoff guidance is documented. LLMs could poll indefinitely or give up too early.