Skip to main content
Glama

Search Images

search_images
Read-onlyIdempotent

Search 200,000+ historical illustrations, emblems, engravings, diagrams, AND 24,000+ artworks (paintings, prints, sculptures). Filter by type, subject, figure, symbol, year. Results interleave two collections: illustrations extracted from book pages (each with a page number and book link) and standalone museum artworks (type: "artwork"). The first few results also return as inline images YOU can see. Hosts that support MCP Apps render an in-chat image gallery for this tool automatically; on other clients images may sit inside the collapsed tool-result view, so never tell the user images are "rendered above" unless the gallery appeared — describe what you see and give each image's url link instead. Every image_url is public and stable — an HTML page that references them directly works in any online browser. If images.length is 0, read the note field — an empty result under a book_id filter means that book has no EXTRACTED images yet, not that the physical book has no plates. A broad query can match tens of thousands (read total): narrow with type/subject/symbol (exact tag strings; look them up with list_image_facets) or page with offset instead of raising limit. On museum-artwork results, a title_is_descriptive flag means the title is an AI description of the picture rather than a title the work was published under — cite such a record by its source_record_title, never by the descriptive one (#4288).

Input Schema

NameRequiredDescriptionDefault
typeNoImage type (woodcut, engraving, emblem, diagram). Best-effort: the medium metadata on museum artworks is unnormalized, so treat results as ranked rather than strictly filtered.
limitNoMax results (default 20, max 50)
queryNoText search (e.g., "ouroboros", "tree of life")
figureNoEXACT, case-sensitive match on a figure tag ("Jesus Christ", "putti"). Look it up with list_image_facets.
offsetNoSkip this many book-illustration results — page through a large result set instead of raising limit. The response echoes offset and returns next_offset while more remain. Offsets > 0 return the gallery lane only (the museum-artwork lane has no pagination and is included only on the first page).
symbolNoEXACT, case-sensitive match on a symbol tag ("ouroboros", "triangle"). Look it up with list_image_facets.
book_idNoOnly return images extracted from this book's pages. Excludes the museum-artwork collection (artworks do not belong to books).
subjectNoEXACT, case-sensitive match on an extracted subject tag ("alchemy", "medicinal plants"); a near-miss matches nothing. Look the string up with list_image_facets first, or put loose words in query instead.
year_toNoSee year_from — same reliability caution applies.
year_fromNoCAUTION: reliable only for book illustrations (source_type "book_illustration"). On museum-artwork records the year field is dirty — some works carry the date a photograph or upload was made (e.g. 2005) rather than the date of the work — so never draw a chronological conclusion from a year-filtered artwork result (#4288 tracks the cleanup). Undated artworks are excluded from any year-filtered search, not passed through.
include_thumbnail_base64NoEmbed each result's image as a thumbnail_data_uri (data:image/jpeg;base64,…, ~1000px) directly in the JSON. ONLY useful when your harness consumes tool results programmatically (API/SDK agents that can save the bytes without retyping them) — as a chat assistant you CANNOT copy hundreds of KB of base64 into a file, so do not request this for that purpose. To build a self-contained page from chat instead: fetch the public image_url values with your execution sandbox (if egress is blocked, ask the user to allowlist images.sourcelibrary.org in their network settings), or reference the CDN URLs directly — they are public and stable, so the page works in any online browser. First 6 results only; inline image blocks are suppressed in this mode to keep the payload bounded.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / year_from / description
      Previous value: -"CAUTION: reliable only for book illustrations (source_type \"book_illustration\"). On museum-artwork records the year field is dirty — some 17th-century works carry ingest years like 2014, and null years bypass the range check entirely — so never draw a chronological conclusion from a year-filtered artwork result (#4288 tracks the cleanup)."New value: +"CAUTION: reliable only for book illustrations (source_type \"book_illustration\"). On museum-artwork records the year field is dirty — some works carry the date a photograph or upload was made (e.g. 2005) rather than the date of the work — so never draw a chronological conclusion from a year-filtered artwork result (#4288 tracks the cleanup). Undated artworks are excluded from any year-filtered search, not passed through."
  2. Changed3 schema fields changed
    • addedInput schema / properties / figure / description
      Added value: +"EXACT, case-sensitive match on a figure tag (\"Jesus Christ\", \"putti\"). Look it up with list_image_facets."
    • addedInput schema / properties / subject / description
      Added value: +"EXACT, case-sensitive match on an extracted subject tag (\"alchemy\", \"medicinal plants\"); a near-miss matches nothing. Look the string up with list_image_facets first, or put loose words in query instead."
    • addedInput schema / properties / symbol / description
      Added value: +"EXACT, case-sensitive match on a symbol tag (\"ouroboros\", \"triangle\"). Look it up with list_image_facets."
  3. Changed1 schema field changed
    • removedInput schema / properties / iconclass
      Removed value: -{
      -  "description": "Filter by Iconclass notation, prefix-matched (\"49\" matches 49G22, 49E39, …). Coverage is SPARSE: only ~2,500 of 206K images carry a notation, so an empty result means the classifier has not run on matching images, NOT that the subject is absent from the corpus — retry with a text query before concluding anything. Book-illustration lane only (artworks are excluded when this filter is set). Matching results return their notations in an iconclass array.",
      -  "type": "string"
      -}
  4. Changed3 schema fields changed
    • addedInput schema / properties / iconclass
      Added value: +{
      +  "description": "Filter by Iconclass notation, prefix-matched (\"49\" matches 49G22, 49E39, …). Coverage is SPARSE: only ~2,500 of 206K images carry a notation, so an empty result means the classifier has not run on matching images, NOT that the subject is absent from the corpus — retry with a text query before concluding anything. Book-illustration lane only (artworks are excluded when this filter is set). Matching results return their notations in an iconclass array.",
      +  "type": "string"
      +}
    • addedInput schema / properties / year_from / description
      Added value: +"CAUTION: reliable only for book illustrations (source_type \"book_illustration\"). On museum-artwork records the year field is dirty — some 17th-century works carry ingest years like 2014, and null years bypass the range check entirely — so never draw a chronological conclusion from a year-filtered artwork result (#4288 tracks the cleanup)."
    • addedInput schema / properties / year_to / description
      Added value: +"See year_from — same reliability caution applies."
  5. Changed1 schema field changed
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Skip this many book-illustration results — page through a large result set instead of raising limit. The response echoes offset and returns next_offset while more remain. Offsets > 0 return the gallery lane only (the museum-artwork lane has no pagination and is included only on the first page).",
      +  "type": "number"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / include_thumbnail_base64 / description
      Previous value: -"Embed each result's image as a thumbnail_data_uri (data:image/jpeg;base64,…, ~1000px) directly in the JSON — for building self-contained deliverables (HTML decks, artifacts, PDFs) from a sandboxed environment where CDN URLs cannot be fetched. First 6 results only, and inline image blocks are suppressed in this mode to keep the payload bounded. Typical flow: search WITHOUT this flag first to see candidates, then re-call with it (small limit) for the images you chose."New value: +"Embed each result's image as a thumbnail_data_uri (data:image/jpeg;base64,…, ~1000px) directly in the JSON. ONLY useful when your harness consumes tool results programmatically (API/SDK agents that can save the bytes without retyping them) — as a chat assistant you CANNOT copy hundreds of KB of base64 into a file, so do not request this for that purpose. To build a self-contained page from chat instead: fetch the public image_url values with your execution sandbox (if egress is blocked, ask the user to allowlist images.sourcelibrary.org in their network settings), or reference the CDN URLs directly — they are public and stable, so the page works in any online browser. First 6 results only; inline image blocks are suppressed in this mode to keep the payload bounded."
  7. Changed1 schema field changed
    • addedInput schema / properties / include_thumbnail_base64
      Added value: +{
      +  "description": "Embed each result's image as a thumbnail_data_uri (data:image/jpeg;base64,…, ~1000px) directly in the JSON — for building self-contained deliverables (HTML decks, artifacts, PDFs) from a sandboxed environment where CDN URLs cannot be fetched. First 6 results only, and inline image blocks are suppressed in this mode to keep the payload bounded. Typical flow: search WITHOUT this flag first to see candidates, then re-call with it (small limit) for the images you chose.",
      +  "type": "boolean"
      +}
  8. Changed2 schema fields changed
    • addedInput schema / properties / book_id / description
      Added value: +"Only return images extracted from this book's pages. Excludes the museum-artwork collection (artworks do not belong to books)."
    • changedInput schema / properties / type / description
      Previous value: -"Image type (woodcut, engraving, emblem, diagram)"New value: +"Image type (woodcut, engraving, emblem, diagram). Best-effort: the medium metadata on museum artworks is unnormalized, so treat results as ranked rather than strictly filtered."
  9. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses rendering behavior on MCP Apps vs other clients, the inline-image return for the first few results, the meaning of an empty result under book_id (note field), the offset pagination contract, and the title_is_descriptive caveat with citation guidance. This is rich operational context annotations cannot convey.

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 what the tool returns and how results are structured, and every later sentence carries usage-critical guidance. It is a single dense block and repeats some schema content, which keeps it from a 5, but there is little true filler.

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?

For an 11-parameter, no-output-schema, open-ended search tool, the description covers result structure, pagination, filtering strategy, empty-result interpretation, client rendering differences, and citation rules. Nothing an agent needs in order to search and report correctly is missing.

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 100% and the schema already documents offset, year_from caution, and exact-match tags, so much of the description repeats it. The description still adds meaning the schema does not: the interleaved two-lane result structure, the empty-result note semantics, and why include_thumbnail_base64 should not be requested from chat. Above the baseline 3, but not fully additive over 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?

The opening sentence states a specific verb (Search) plus two quantified resources (200,000+ historical illustrations and 24,000+ artworks) with a breakdown of media types. It also distinguishes itself from siblings by naming list_image_facets as the companion lookup tool and clarifying that results interleave book-illustration and museum-artwork collections.

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?

Explicit routing is provided: narrow with type/subject/symbol or page with offset instead of raising limit; look up exact tag strings with list_image_facets; use book_id to restrict to extracted book images. It also states the when-not condition (offsets > 0 return only the gallery lane; book_id excludes artworks).

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.