Skip to main content
Glama

Search Images

search_images
Read-onlyIdempotent

"Find royalty-free / Creative Commons / public-domain images of [X]" / "CC images of [Y]" / "free-to-use pictures of [topic]" / "stock photos of [subject]" — search Creative-Commons-licensed images across Wikimedia, Flickr, Met Museum, Smithsonian, and many other open repositories via Openverse. Filter by license (cc0, by, by-sa, …), commercial-use, size. Use to find legally-reusable images for slides, blog posts, marketing, education.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo"small" | "medium" | "large"
queryYes
sourceNoProvider id, e.g. "flickr","met","wikimedia"
licenseNocomma-separated, e.g. "cc0,by"
page_sizeNo1-500 (default 20)
license_typeNo"commercial" | "modification" | "all"

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoCurrent page number
resultsNoArray of image results
page_sizeNoResults per page
page_countNoTotal number of pages
result_countNoTotal number of results available

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "query": "sunset landscape"
      +  },
      +  {
      +    "license": "cc0,by",
      +    "page": 1,
      +    "page_size": 50,
      +    "query": "cat",
      +    "size": "large",
      +    "source": "flickr"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "page": {
      +      "description": "Current page number",
      +      "type": "integer"
      +    },
      +    "page_count": {
      +      "description": "Total number of pages",
      +      "type": "integer"
      +    },
      +    "page_size": {
      +      "description": "Results per page",
      +      "type": "integer"
      +    },
      +    "result_count": {
      +      "description": "Total number of results available",
      +      "type": "integer"
      +    },
      +    "results": {
      +      "description": "Array of image results",
      +      "items": {
      +        "properties": {
      +          "category": {
      +            "description": "Image category",
      +            "type": "string"
      +          },
      +          "creator": {
      +            "description": "Image creator name",
      +            "type": "string"
      +          },
      +          "creator_url": {
      +            "description": "Creator profile URL",
      +            "type": "string"
      +          },
      +          "filesize": {
      +            "description": "File size in bytes",
      +            "type": "integer"
      +          },
      +          "filetype": {
      +            "description": "File format",
      +            "type": "string"
      +          },
      +          "foreign_landing_url": {
      +            "description": "Original source URL",
      +            "type": "string"
      +          },
      +          "height": {
      +            "description": "Image height in pixels",
      +            "type": "integer"
      +          },
      +          "id": {
      +            "description": "Image unique identifier",
      +            "type": "string"
      +          },
      +          "license": {
      +            "description": "License type",
      +            "type": "string"
      +          },
      +          "license_url": {
      +            "description": "License details URL",
      +            "type": "string"
      +          },
      +          "license_version": {
      +            "description": "License version",
      +            "type": "string"
      +          },
      +          "provider": {
      +            "description": "Source provider",
      +            "type": "string"
      +          },
      +          "source": {
      +            "description": "Source identifier",
      +            "type": "string"
      +          },
      +          "tags": {
      +            "description": "Associated tags",
      +            "items": {
      +              "properties": {
      +                "accuracy": {
      +                  "description": "Tag accuracy score",
      +                  "type": "number"
      +                },
      +                "name": {
      +                  "description": "Tag name",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "thumbnail": {
      +            "description": "Thumbnail URL",
      +            "type": "string"
      +          },
      +          "title": {
      +            "description": "Image title",
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "Image URL",
      +            "type": "string"
      +          },
      +          "width": {
      +            "description": "Image width in pixels",
      +            "type": "integer"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds value by disclosing that it searches multiple open repositories, filters by license and commercial-use, and is a read operation. No contradictions; it enriches behavioral context beyond annotations.

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

Conciseness3/5

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

The description is moderately concise but includes multiple example phrasing and lists, making it slightly verbose. It is front-loaded with purpose but could be tightened without losing clarity.

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

Completeness4/5

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

Given the output schema exists and annotations are rich, the description covers usage, examples, and filters well. It does not explain return format (unnecessary due to output schema) but sufficiently addresses the tool's behavior and context for an AI agent.

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 71%, so baseline is 3. The description adds some meaning by mentioning filters (license, size, commercial-use) but does not provide new details for all 7 parameters (e.g., source, page). It repeats some schema info without significant depth.

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?

The description clearly states the tool's purpose: finding royalty-free/CC/public-domain images via Openverse. It specifies the verb 'search' and the resource 'Creative-Commons-licensed images across Wikimedia, Flickr, etc.', and distinguishes it from siblings like 'search_audio' and 'get_image' by focusing on legally-reusable images.

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

Usage Guidelines4/5

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

The description explains when to use the tool (e.g., for legally-reusable images for slides, blog posts) and provides example queries. However, it does not explicitly state when not to use it or name alternative tools beyond siblings. The context is clear but lacks direct exclusions.

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.

TDQS

A3.9/5.0
Disambiguation2/5

Several tools occupy the same functional space: ask_pipeworx, ask_pipeworx_beta, ask_pipeworx_grounded, deep_research, and validate_claim all answer factual questions from Pipeworx data, and ask_pipeworx_beta is explicitly identical to ask_pipeworx right now. The prediction-market tools also heavily overlap in purpose, as do ai_visibility_check and scan_competitor_ai_presence. Only the Openverse media tools and memory/subscription tools are cleanly distinguishable.

Naming Consistency3/5

All names are lowercase snake_case, but the naming conventions are mixed: verb_noun tools like search_images and resolve_entity coexist with bare verbs like remember, recall, forget, and subscribe, plus noun compounds like entity_profile, polymarket_edges, and bet_research. Subfamilies such as polymarket_* and the audio/image tools are internally consistent, but there is no single predictable pattern across the full set.

Tool Count2/5

37 tools exceeds the 25+ threshold and feels inflated for the surface, especially since several could be consolidated: there are three ask_pipeworx variants and five overlapping prediction-market tools. The Openverse-specific core is only 6 tools, with 31 mostly unrelated Pipeworx and utility tools attached, making the server feel like a grab-bag rather than a purpose-built Openverse integration.

Completeness4/5

Each embedded subdomain covers its main lifecycle well: Openverse has search/get/related for images and audio, memory has remember/recall/forget, subscriptions have subscribe/list/unsubscribe/recent_alerts, and research has ask, grounded, deep_research, entity_profile, compare_entities, resolve_entity, and validate_claim. Minor gaps exist—notably no Openverse video/collection tooling and no explicit memory update—but agents can work around them without hitting dead ends.