Skip to main content
Glama

Search freely licensed video

search_free_videos
Read-onlyIdempotent

Use this when the user wants to search for a video they can reuse on a topic, such as ocean waves or a historical film with a free licence. Pass topic words in query, for example {"query": "ocean waves"}, and optionally sources and limit (1 to 5, default 5). Returns up to 5 hits from Wikimedia Commons and the Internet Archive, each with download_url, the licence as the source states it, licence_url and ready-to-paste attribution. When download_kind is directory, download_url is the item's file list; call video_metadata for one direct file. Not for a known item (use video_metadata) or the user's own uploads (use own_video_export). We do not rip videos from social platforms or remove watermarks. A platform URL, a watermark request or a named ripper returns status not_offered with an error.hint and no file.

Input Schema

NameRequiredDescriptionDefault
limitNoHow many videos to return, 5 by default
queryYesTopic words. Example call: {"query": "ocean waves"}. Not a link: a TikTok, YouTube, Instagram, X or other platform URL returns status not_offered and no file.
sourcesNoWhich free sources to search: "commons" (Wikimedia Commons), "archive" (Internet Archive) or both. Both when omitted.

Output Schema

NameRequiredDescriptionDefault
countYesNumber of results
errorNoPresent when status is not ok: a stable code, what went wrong and what to do next.
notesNoSources that were not searched or could not be read, such as Pexels without a key
queryYesThe query as searched
statusYesok: results found. no_results: nothing freely licensed matched. unavailable: no source could be read, retry later. not_offered: a platform download or watermark removal was asked for, so nothing was searched
resultsYes
explanationNoPresent when a platform download or watermark removal was asked for
licence_noteNoReminder that the licence is what the source states

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "query": "ocean waves"
      -  }
      -]
    • removedOutput schema / properties / as_of
      Removed value: -{
      -  "description": "ISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / source
      Removed value: -{
      -  "description": "Who the data comes from, to cite and to check it against.",
      -  "properties": {
      -    "name": {
      -      "type": "string"
      -    },
      -    "url": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "name",
      -    "url"
      -  ],
      -  "type": "object"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "status",
      -  "query",
      -  "count",
      -  "results",
      -  "as_of",
      -  "source"
      -]New value: +[
      +  "status",
      +  "query",
      +  "count",
      +  "results"
      +]
  2. Changed6 schema fields changed
    • changedOutput schema / properties / as_of / description
      Previous value: -"Date the sources were read (UTC, YYYY-MM-DD)"New value: +"ISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch."
    • changedOutput schema / properties / source / description
      Previous value: -"The sources read, with their site links"New value: +"Who the data comes from, to cite and to check it against."
    • addedOutput schema / properties / source / properties
      Added value: +{
      +  "name": {
      +    "type": "string"
      +  },
      +  "url": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / source / required
      Added value: +[
      +  "name",
      +  "url"
      +]
    • changedOutput schema / properties / source / type
      Previous value: -"string"New value: +"object"
    • changedOutput schema / required
      Previous value: -[
      -  "status",
      -  "query",
      -  "count",
      -  "results",
      -  "source",
      -  "as_of"
      -]New value: +[
      +  "status",
      +  "query",
      +  "count",
      +  "results",
      +  "as_of",
      +  "source"
      +]
  3. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "query": "ocean waves"
      +  }
      +]
  4. Changed26 schema fields changed
    • addedInput schema / properties / limit / default
      Added value: +5
    • changedInput schema / properties / query / description
      Previous value: -"Topic words, such as ocean waves. A platform URL is refused."New value: +"Topic words. Example call: {\"query\": \"ocean waves\"}. Not a link: a TikTok, YouTube, Instagram, X or other platform URL returns status not_offered and no file."
    • addedInput schema / properties / query / examples
      Added value: +[
      +  "ocean waves",
      +  "1930s newsreel"
      +]
    • addedInput schema / properties / sources / default
      Added value: +[
      +  "commons",
      +  "archive"
      +]
    • changedInput schema / properties / sources / description
      Previous value: -"commons, archive, or both. Both when omitted."New value: +"Which free sources to search: \"commons\" (Wikimedia Commons), \"archive\" (Internet Archive) or both. Both when omitted."
    • addedInput schema / properties / sources / uniqueItems
      Added value: +true
    • addedOutput schema / properties / count / description
      Added value: +"Number of results"
    • addedOutput schema / properties / error / properties / code / description
      Added value: +"Stable code: not_offered, no_results, not_found, not_free or source_unavailable"
    • addedOutput schema / properties / error / properties / hint / description
      Added value: +"The next step: which tool to call or what input to change"
    • addedOutput schema / properties / error / properties / message / description
      Added value: +"What went wrong, in one or two sentences"
    • addedOutput schema / properties / licence_note / description
      Added value: +"Reminder that the licence is what the source states"
    • addedOutput schema / properties / notes / description
      Added value: +"Sources that were not searched or could not be read, such as Pexels without a key"
    • addedOutput schema / properties / query / description
      Added value: +"The query as searched"
    • changedOutput schema / properties / results / items / properties / download_kind / description
      Previous value: -"directory means the source's file list; call video_metadata for one direct file"New value: +"file: download_url is the video itself. directory: download_url is the item's file list"
    • addedOutput schema / properties / results / items / properties / download_url / description
      Added value: +"When download_kind is file, a direct link to the video file. When it is directory, the Internet Archive list of the item's files; call video_metadata with the item to get one direct file"
    • addedOutput schema / properties / results / items / properties / download_url / format
      Added value: +"uri"
    • addedOutput schema / properties / results / items / properties / licence / description
      Added value: +"The licence name exactly as the source record states it, such as CC BY-SA 4.0, CC0 or Public domain"
    • addedOutput schema / properties / results / items / properties / licence_note / description
      Added value: +"Reminder that the licence is what the source states"
    • addedOutput schema / properties / results / items / properties / licence_url / description
      Added value: +"Link to the licence text, or empty when the source names the licence without a link"
    • addedOutput schema / properties / results / items / properties / mime / description
      Added value: +"Media type of the file, such as video/webm, or null when the source does not state it"
    • addedOutput schema / properties / results / items / properties / page_url / description
      Added value: +"The item's page on the source site. Send the user here to check the licence before reuse"
    • addedOutput schema / properties / results / items / properties / page_url / format
      Added value: +"uri"
    • addedOutput schema / properties / results / items / properties / title / description
      Added value: +"Title as the source record gives it"
    • addedOutput schema / properties / results / maxItems
      Added value: +5
    • addedOutput schema / properties / source / description
      Added value: +"The sources read, with their site links"
    • addedOutput schema / properties / status / description
      Added value: +"ok: results found. no_results: nothing freely licensed matched. unavailable: no source could be read, retry later. not_offered: a platform download or watermark removal was asked for, so nothing was searched"
  5. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, and the description adds substantial context beyond them: the return payload fields (download_url, licence, licence_url, attribution), the directory-vs-file download_kind behavior and the follow-up call, and the explicit policy that platform URLs/watermark requests return status not_offered with an error.hint and no file.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with when-to-use and the core call shape, then alternatives, then edge-case policy. It is longer than typical but nearly every sentence carries distinct information; the trailing not_offered sentence is slightly verbose but functional.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers selection criteria, call shape, result contents, follow-up flow for directory results, and refusal semantics; with an output schema present it need not document return types further. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with query, limit and sources all documented including defaults, ranges and enums, so the schema carries the parameter burden. The description restates topic-word intent and the {query: 'ocean waves'} example but adds little syntax or format information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (search freely licensed video) and immediately scopes it to reuse-on-a-topic use, with concrete examples like ocean waves or a historical film. It is clearly distinguishable from video_metadata and own_video_export, which it names explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('user wants to search for a video they can reuse on a topic') plus when-not clauses: not for a known item (use video_metadata) and not for the user's own uploads (use own_video_export). It also routes the misuse case to an alternative outcome (status not_offered).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.