Skip to main content
Glama

Search Resources

search_resources
Read-only

Search licensed stock media to compose with across video, photo, sound effects, and GIFs. Pass query for ONE search, or queries[] (≤10) to run them all in a SINGLE call — strongly prefer the batch when you know several things you need. A batch returns results[], one per query in order, each with its own candidates; a query that fails carries an error and never discards the others. Optional kind [default video], provider pin, and limit ≤50 apply to every query in the batch. Returns ranked candidates, each with an opaque candidateId + attribution (author, assetUrl) + license, and a preview URL in the text. FREE + rate-limited + cached — reach for this before generate_media when real footage beats synthesis. TO SEE the candidates rather than read about them, pass limit ≥2: thumbnails/audio are attached only when you asked for options to compare. Import a chosen candidate into a project with import_resource. Candidate handles expire; re-search to refresh one.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "body": "<body>"
    },
    "name": "search_resources"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyYesPOST /resources/search body — one `query`, or a batch of `queries[]`.

Output Schema

NameRequiredDescriptionDefault
kindNo
resultsNo
providerNo
candidatesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed35 schema fields changed
    • addedInput schema / $defs
      Added value: +{
      +  "__schema0": {
      +    "maxLength": 200,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "__schema1": {
      +    "items": {
      +      "$ref": "#/$defs/__schema2"
      +    },
      +    "maxItems": 10,
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  "__schema10": {
      +    "exclusiveMinimum": 0,
      +    "type": "number"
      +  },
      +  "__schema2": {
      +    "maxLength": 200,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "__schema3": {
      +    "enum": [
      +      "video",
      +      "photo",
      +      "sfx",
      +      "gif"
      +    ],
      +    "type": "string"
      +  },
      +  "__schema4": {
      +    "enum": [
      +      "pexels",
      +      "pixabay",
      +      "freesound",
      +      "klipy"
      +    ],
      +    "type": "string"
      +  },
      +  "__schema5": {
      +    "exclusiveMinimum": 0,
      +    "maximum": 50,
      +    "type": "integer"
      +  },
      +  "__schema6": {
      +    "description": "Video-only minimum selected-rendition width in pixels; smaller results are excluded.",
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  "__schema7": {
      +    "description": "Video-only minimum selected-rendition height in pixels; smaller results are excluded.",
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  "__schema8": {
      +    "additionalProperties": false,
      +    "description": "sfx-only clip-length bound in seconds → Freesound native filter.",
      +    "properties": {
      +      "max": {
      +        "$ref": "#/$defs/__schema10"
      +      },
      +      "min": {
      +        "$ref": "#/$defs/__schema9"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "__schema9": {
      +    "minimum": 0,
      +    "type": "number"
      +  }
      +}
    • addedInput schema / properties / body / properties / durationSec / $ref
      Added value: +"#/$defs/__schema8"
    • removedInput schema / properties / body / properties / durationSec / additionalProperties
      Removed value: -false
    • removedInput schema / properties / body / properties / durationSec / description
      Removed value: -"sfx-only clip-length bound in seconds → Freesound native filter."
    • removedInput schema / properties / body / properties / durationSec / properties
      Removed value: -{
      -  "max": {
      -    "exclusiveMinimum": 0,
      -    "type": "number"
      -  },
      -  "min": {
      -    "minimum": 0,
      -    "type": "number"
      -  }
      -}
    • removedInput schema / properties / body / properties / durationSec / type
      Removed value: -"object"
    • addedInput schema / properties / body / properties / kind / $ref
      Added value: +"#/$defs/__schema3"
    • removedInput schema / properties / body / properties / kind / enum
      Removed value: -[
      -  "video",
      -  "photo",
      -  "sfx",
      -  "gif"
      -]
    • removedInput schema / properties / body / properties / kind / type
      Removed value: -"string"
    • addedInput schema / properties / body / properties / limit / $ref
      Added value: +"#/$defs/__schema5"
    • removedInput schema / properties / body / properties / limit / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / body / properties / limit / maximum
      Removed value: -50
    • removedInput schema / properties / body / properties / limit / type
      Removed value: -"integer"
    • addedInput schema / properties / body / properties / minHeight / $ref
      Added value: +"#/$defs/__schema7"
    • removedInput schema / properties / body / properties / minHeight / description
      Removed value: -"Video-only minimum selected-rendition height in pixels; smaller results are excluded."
    • removedInput schema / properties / body / properties / minHeight / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / body / properties / minHeight / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / body / properties / minHeight / type
      Removed value: -"integer"
    • addedInput schema / properties / body / properties / minWidth / $ref
      Added value: +"#/$defs/__schema6"
    • removedInput schema / properties / body / properties / minWidth / description
      Removed value: -"Video-only minimum selected-rendition width in pixels; smaller results are excluded."
    • removedInput schema / properties / body / properties / minWidth / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / body / properties / minWidth / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / body / properties / minWidth / type
      Removed value: -"integer"
    • addedInput schema / properties / body / properties / provider / $ref
      Added value: +"#/$defs/__schema4"
    • removedInput schema / properties / body / properties / provider / enum
      Removed value: -[
      -  "pexels",
      -  "pixabay",
      -  "freesound",
      -  "klipy"
      -]
    • removedInput schema / properties / body / properties / provider / type
      Removed value: -"string"
    • addedInput schema / properties / body / properties / queries / $ref
      Added value: +"#/$defs/__schema1"
    • removedInput schema / properties / body / properties / queries / items
      Removed value: -{
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / body / properties / queries / maxItems
      Removed value: -10
    • removedInput schema / properties / body / properties / queries / minItems
      Removed value: -1
    • removedInput schema / properties / body / properties / queries / type
      Removed value: -"array"
    • addedInput schema / properties / body / properties / query / $ref
      Added value: +"#/$defs/__schema0"
    • removedInput schema / properties / body / properties / query / maxLength
      Removed value: -200
    • removedInput schema / properties / body / properties / query / minLength
      Removed value: -1
    • removedInput schema / properties / body / properties / query / type
      Removed value: -"string"
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare read-only/non-destructive/open-world; the description adds cost and throttling ("FREE + rate-limited + cached"), batch failure isolation ("a query that fails carries an error and never discards the others"), per-query application of kind/provider/limit, candidateId expiry, and the non-obvious side effect that media attachments only appear when limit ≥ 2. These are exactly the traits an agent cannot infer from the annotations.

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 purpose, then mechanics, then return shape, then cost/alternatives — a sensible order with almost no filler. It is dense and em-dash-heavy to the point of being slightly overstuffed, but each sentence carries distinct operational information rather than restating the schema.

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 batch semantics, defaults, per-query filters, result shape, error behavior, cost, handle expiry, and the follow-up tool, which is everything needed to invoke this correctly. An output schema exists, so its brief return-value summary (candidateId, attribution, license, preview URL) is a bonus rather than a gap.

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

Parameters4/5

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

Schema coverage is already 100%, yet the description adds real meaning: query vs queries[] cardinality, the ≤10 cap, in-order results[] correspondence, kind's default of video, and that limit/provider apply to every query in a batch. It is silent on minWidth/minHeight/durationSec, relying on the schema's own descriptions for those, which keeps it from a 5.

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?

Opens with a specific verb+resource and scope: search licensed stock media across video, photo, sound effects, and GIFs. It explicitly positions itself against the sibling generate_media ("reach for this before generate_media when real footage beats synthesis") and names import_resource as the downstream step, so an agent can place it in the workflow without opening the schema.

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?

States the decision rule between the single-query and batch forms ("strongly prefer the batch when you know several things you need"), when to prefer this over synthesis, and what to do with a chosen candidate (import_resource). It also gives the fallback when handles expire ("re-search to refresh one"), covering the when and the what-next.

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.