Official VEEDCRAWL MCP server for social video search, metadata, transcripts, extraction, and creator profile tools.
Strong tool naming (all verb-prefixed, clear intent). Descriptions are present and actionable (avg 150 chars, within 10-1024 baseline). Input schemas fully defined with Zod, including enums, constraints, and descriptions. However, output schemas are not documented, responses are JSON-stringified but structure is opaque to LLMs. Error handling is minimal (generic try-catch). No tool annotations (readOnlyHint, destructiveHint). Missing pagination guidance for search_social_videos despite potentially large result sets.
Analyze a video and return structured results based on a prompt and optional JSON schema. This tool hides async polling.
Fetch a public Instagram profile snapshot with summary stats and recent posts. Provide either a username or a public profile URL.
Fetch a public TikTok profile snapshot with summary stats and recent videos. Provide either a username or a TikTok profile URL.
Fetch title, description, author, stats, tags, and platform metadata for a public video URL.
Return the final transcript for a video URL. This tool hides async polling and returns only the completed result.
Search public social videos by topic, keyword, creator, or trend and return completed metadata results. This tool hides async polling.
Output schemas not documented. Tools return JSON.stringify(result) but LLMs cannot infer response structure (fields, types, nesting). Breaks downstream tool chaining and forces LLMs to guess field names.
No tool annotations. All tools are read-only but lack readOnlyHint annotation. Agents cannot distinguish safe tools from destructive ones without explicit hints.
search_social_videos accepts limit up to 100 but no pagination (offset/cursor) documented. Large result sets risk context window exhaustion. Description should state result cap and pagination strategy.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Error handling is generic (try-catch → JSON.stringify). No recovery guidance, error classification, or actionable messages. LLMs receive raw errors with no context for retry/fallback decisions.
extract_from_video accepts optional 'schema' as z.record(z.unknown()), no validation or documentation of expected JSON Schema format. LLMs may pass invalid schemas without feedback.