> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veedcrawl.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Veedcrawl MCP Tools Reference

> Complete parameter and return value reference for all five Veedcrawl MCP tools: metadata, transcript, extraction, TikTok, and Instagram.

All six tools are registered automatically the moment the MCP server starts — no additional configuration required. Your agent can call any of them by name once the server is connected to your host.

<AccordionGroup>
  <Accordion title="search_videos">
    Find public social videos by topic, creator, hashtag, or keyword. Returns a ranked list of matching videos with URLs, engagement stats, and thumbnails — no video URLs required up front.

    <ParamField body="q" type="string" required>
      The search query — a topic, keyword, hashtag, product, or creator handle. For example: `"skincare morning routine"`, `"#fyp AI tools"`, or `"@mkbhd"`.
    </ParamField>

    <ParamField body="platform" type="string">
      Filter results to a specific platform: `youtube`, `tiktok`, `instagram`, `x`, or `facebook`. Omit to search across all platforms.
    </ParamField>

    <ParamField body="limit" default="6" type="number">
      Number of results to return. Accepts 1–20.
    </ParamField>

    **Returns:** array of video result objects, each with `platform`, `url`, `title`, `author`, `stats` (views, likes, comments, shares), `duration`, `thumbnail`, and `createdAt`. Every `url` can be passed directly into `get_video_metadata`, `get_video_transcript`, or `extract_from_video`.
  </Accordion>

  <Accordion title="get_video_metadata">
    Fetch structured metadata for any public video URL. Returns synchronously with no polling.

    <ParamField body="url" type="string" required>
      Public video URL from YouTube, TikTok, Instagram, X/Twitter, or Facebook.
    </ParamField>

    **Returns:** platform, title, description, author info, view/like/comment/share counts, duration, thumbnails, tags, and publish timestamp.
  </Accordion>

  <Accordion title="get_video_transcript">
    Return the complete transcript for a video. The server handles all async polling internally — your agent receives the finished result when the job is done.

    <ParamField body="url" type="string" required>
      Public video URL or direct media file URL.
    </ParamField>

    <ParamField body="mode" default="auto" type="string">
      Transcription strategy:

      * `native` — use platform-provided captions only
      * `generate` — run AI speech-to-text only
      * `auto` — try native captions first, fall back to AI speech-to-text
    </ParamField>

    <ParamField body="lang" type="string">
      Language hint for transcription, e.g. `en`, `es`, `ur`. Optional.
    </ParamField>

    **Returns:** completed transcript job object with full text and timestamps.
  </Accordion>

  <Accordion title="extract_from_video">
    Ask any question about a video and receive a structured answer. Optionally constrain the output shape with a JSON Schema. The server handles all async polling internally.

    <ParamField body="url" type="string" required>
      Public video URL or direct media file URL.
    </ParamField>

    <ParamField body="prompt" type="string" required>
      What to extract or analyze from the video. Up to 4096 characters.
    </ParamField>

    <ParamField body="lang" type="string">
      Language hint for transcription, e.g. `en`, `es`, `ur`. Optional.
    </ParamField>

    <ParamField body="schema" type="object">
      JSON Schema to constrain the structure of the extraction output. Optional.
    </ParamField>

    **Returns:** completed extraction job object with the structured result.

    **Example prompts:**

    * `"Extract the hook, main argument, and call to action"`
    * `"List every product mentioned with the timestamp it appears"`
    * `"What claims does the speaker make? Rate each one as factual, opinion, or unverified"`
    * `"Rewrite this as a Twitter thread"`
  </Accordion>

  <Accordion title="get_tiktok_profile">
    Fetch a TikTok creator's public profile snapshot. Returns author info, total video count, and recent videos with full per-video engagement stats.

    <ParamField body="username" type="string">
      TikTok username, with or without the leading `@`. Required if `url` is not provided.
    </ParamField>

    <ParamField body="url" type="string">
      Full TikTok profile URL, e.g. `https://www.tiktok.com/@creator`. Required if `username` is not provided.
    </ParamField>

    <ParamField body="limit" default="12" type="number">
      Number of recent videos to return. Accepts 1–24.
    </ParamField>

    **Returns:** author bio and stats, plus an array of recent videos. Each video object includes views, likes, comments, shares, caption, hashtags, thumbnail, and publish timestamp. You can pass any video's URL directly into `get_video_transcript` or `extract_from_video`.
  </Accordion>

  <Accordion title="get_instagram_profile">
    Fetch an Instagram creator's public profile snapshot. Returns verified status, follower and following counts, total post count, and recent content.

    <ParamField body="username" type="string">
      Instagram username, with or without the leading `@`. Required if `url` is not provided.
    </ParamField>

    <ParamField body="url" type="string">
      Full Instagram profile URL, e.g. `https://www.instagram.com/creator/`. Required if `username` is not provided.
    </ParamField>

    <ParamField body="limit" default="12" type="number">
      Number of recent posts to return. Accepts 1–24.
    </ParamField>

    **Returns:** author bio, verified flag, follower/following/post counts, and an array of recent posts. Each post includes its type (`video`, `post` for images, or `sidecar` for carousels), along with views, likes, comments, caption, and publish timestamp. Video posts also include a direct `videoUrl` you can pass into `get_video_transcript`.
  </Accordion>
</AccordionGroup>

## Chaining tools together

The profile tools are designed to feed directly into the video tools. Here is a complete example that audits a creator without you supplying a single video URL:

<Steps>
  <Step title="Fetch the profile">
    Call `get_instagram_profile` with a username to get the creator's recent posts and engagement stats.

    ```text theme={null}
    get_instagram_profile(username="hubermanlab", limit=24)
    → 283M followers, verified, last 24 posts with view/like counts
    ```
  </Step>

  <Step title="Get the transcript">
    Pass a `videoUrl` from the profile response into `get_video_transcript`.

    ```text theme={null}
    get_video_transcript(url=top_video.videoUrl)
    → Full transcript with timestamps
    ```
  </Step>

  <Step title="Extract structured data">
    Pass the same URL into `extract_from_video` with a targeted prompt.

    ```text theme={null}
    extract_from_video(
      url=top_video.videoUrl,
      prompt="List every health claim made and the evidence cited"
    )
    → Structured list of claims with citations
    ```
  </Step>
</Steps>
