Skip to main content
Glama

Fold Laboratories

Search artworks

search_artworks
Read-onlyIdempotent

Use this when someone wants to find original paintings, prints, photographs or sculpture from independent artists: by subject, style, colour, size or budget; for a particular wall; or like a work or a photo they have. It returns only works that meet everything asked for, each with what it met. near_matches come apart, each saying what it misses or what its seller left unsaid: a blank fact is unknown, never a no. Write the request in words ("a large blue abstract painting under $2,000"; misspellings, and Spanish, Portuguese, French, Italian and German, are read) or send filters — min_price_usd, max_price_usd, orientation, subject, style, medium, colors, min_height_in, max_height_in, min_width_in, max_width_in, ships_to, framed, ready_to_hang, signed, edition — and a filter wins over the words. applied_filters lists every constraint and where it came from; understood says how each word was read (read_as, corrected); correct a misreading with a filter. A word about the work that names no constraint must appear in its own words to match ("lighthouse"). Words of mood ("calm") and of where it will hang ("hallway") only order the results; "to hang" and "a gift" are not used. A place it ships to, with its state or ZIP, is read as ships_to. fold_derived marks Fold’s reading of the seller’s words. This catalogue CANNOT be filtered by authenticity or provenance strength: Fold verifies sellers, not works (see _verification). Works on sale now; include_sold adds sold works. Attributes are the seller’s; null means unspecified, never estimated. completeness says whether every work was checked. A wall — wall: {width, height, furniture_width, furniture_height, unit} — keeps only works whose size suits it by Fold’s rules of thumb, and wall_fit gives the size range and the reasoning to relay: a rule of thumb, not a measurement of the room. With a wall, query may be left out. similar_to {artwork_id | image_url | image_base64} keeps only works that look like it, at or above Fold’s similarity threshold, the closest first, each with its similarity from 0 to 1: how alike the photographs look to an image model, not a judgement of style or quality. With similar_to, query may be left out. A photo is used for this search only and kept nowhere. Each of the first 5 matches carries offer — the impression to buy (listing_id), whether it can be bought now, its price, delivery, ship-by and arrival dates and returns — and, with the buyer’s US ZIP code in ships_to, the first 3 a delivered_estimate with sales tax. Pass offer.listing_id straight to the checkout, which checks availability itself. Every answer ends with next_actions: the next call, its ids filled in. The first 3 works shown come with a small picture of each, attached after the answer as images, so you can see how they look — colour, mood, whether one suits a room or a photo — rather than going by words alone; image.url is the full size.

Input Schema

NameRequiredDescriptionDefault
wallNoThe wall the work will hang on: only works whose size suits it.
limitNoMaximum matches. Default 10, hard cap 100.
queryNoWhat the buyer is looking for, in their words. Leave it out only to search by a wall or similar_to alone.
styleNoAny of these styles.
colorsNoEvery one of these among the colours the seller confirmed for the work.
framedNoFramed (true) or unframed (false), as the seller stated.
mediumNoAny of these media; a family such as painting or print includes its members.
signedNoSigned by the artist, as the seller stated.
editionNounique: one of a kind; edition: one impression of an edition.
subjectNoAny of these subjects.
ships_toNoWhere the buyer wants it delivered. Fold delivers to the 50 US states and DC.
similar_toNoA work, or a photo, the works must look like.
orientationNoAny of: portrait (taller than wide), landscape (wider than tall), square.
include_soldNoAlso include works that have already sold. Off by default. Works taken off sale are never returned either way.
max_width_inNoWidth at most this, in inches.
min_width_inNoWidth at least this, in inches.
max_height_inNoHeight at most this, in inches.
max_price_usdNoHighest acceptable price, in US dollars.
min_height_inNoHeight at least this, in inches.
min_price_usdNoLowest acceptable price, in US dollars.
ready_to_hangNoReady to hang, as the seller stated.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / similar_to / properties / min_similarity
      Added value: +{
      +  "description": "The least similarity a work must reach, 0.50 to 1; Fold's threshold, 0.60, when left out. Lower it only when the buyer would see works less alike.",
      +  "maximum": 1,
      +  "minimum": 0.5,
      +  "type": "number"
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"What the buyer is looking for, in their words."New value: +"What the buyer is looking for, in their words. Leave it out only to search by a wall or similar_to alone."
    • removedInput schema / required
      Removed value: -[
      -  "query"
      -]
  3. Changed1 schema field changed
    • addedInput schema / properties / similar_to
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "A work, or a photo, the works must look like.",
      +  "properties": {
      +    "artwork_id": {
      +      "description": "A work on Fold to find works like: an artwork_id from search_artworks.",
      +      "maxLength": 128,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "image_base64": {
      +      "description": "A photo to find works like, inline: a JPEG, PNG or WebP as base64 or a data: URL, at most 700 KB. Used for this search only, and kept nowhere.",
      +      "maxLength": 1000000,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "image_url": {
      +      "description": "A photo to find works like: its https address. Fetched once, used for this search only, and kept nowhere.",
      +      "maxLength": 2048,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / wall
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The wall the work will hang on: only works whose size suits it.",
      +  "properties": {
      +    "furniture_height": {
      +      "description": "The furniture’s height from the floor, to hang the work above it. Give it with furniture_width.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "furniture_width": {
      +      "description": "The width of the furniture the work will hang above — a sofa, a bed, a sideboard — if any.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "height": {
      +      "description": "The wall’s height from the floor, in `unit`.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "unit": {
      +      "description": "in (inches, the default) or cm.",
      +      "enum": [
      +        "in",
      +        "cm"
      +      ],
      +      "type": "string"
      +    },
      +    "width": {
      +      "description": "The wall’s width, in `unit`.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "width",
      +    "height"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • removedInput schema / properties / seller_stated_tags_only
      Removed value: -{
      -  "description": "Kept for compatibility. Terms are only ever matched against the seller’s own words and tags, never a model’s, so this changes nothing.",
      -  "type": "boolean"
      -}
  6. Changed19 schema fields changed
    • addedInput schema / properties / colors
      Added value: +{
      +  "description": "Every one of these among the colours the seller confirmed for the work.",
      +  "items": {
      +    "enum": [
      +      "red",
      +      "orange",
      +      "yellow",
      +      "green",
      +      "teal",
      +      "blue",
      +      "purple",
      +      "pink",
      +      "brown",
      +      "beige",
      +      "black",
      +      "grey",
      +      "white"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / edition
      Added value: +{
      +  "description": "unique: one of a kind; edition: one impression of an edition.",
      +  "enum": [
      +    "unique",
      +    "edition"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / framed
      Added value: +{
      +  "description": "Framed (true) or unframed (false), as the seller stated.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum results. Default 10, hard cap 100."New value: +"Maximum matches. Default 10, hard cap 100."
    • addedInput schema / properties / max_height_in
      Added value: +{
      +  "description": "Height at most this, in inches.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / max_price_usd / description
      Previous value: -"Highest acceptable price."New value: +"Highest acceptable price, in US dollars."
    • addedInput schema / properties / max_width_in
      Added value: +{
      +  "description": "Width at most this, in inches.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / medium
      Added value: +{
      +  "description": "Any of these media; a family such as painting or print includes its members.",
      +  "items": {
      +    "enum": [
      +      "painting",
      +      "oil",
      +      "acrylic",
      +      "watercolor",
      +      "gouache",
      +      "tempera",
      +      "drawing",
      +      "charcoal",
      +      "graphite",
      +      "pastel",
      +      "ink",
      +      "print",
      +      "screenprint",
      +      "etching",
      +      "lithograph",
      +      "woodcut",
      +      "linocut",
      +      "giclee",
      +      "monotype",
      +      "photograph",
      +      "sculpture",
      +      "bronze",
      +      "ceramic",
      +      "glass",
      +      "textile",
      +      "collage",
      +      "mixed_media",
      +      "digital"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 12,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / min_height_in
      Added value: +{
      +  "description": "Height at least this, in inches.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / min_price_usd / description
      Previous value: -"Lowest acceptable price."New value: +"Lowest acceptable price, in US dollars."
    • addedInput schema / properties / min_width_in
      Added value: +{
      +  "description": "Width at least this, in inches.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / orientation
      Added value: +{
      +  "description": "Any of: portrait (taller than wide), landscape (wider than tall), square.",
      +  "items": {
      +    "enum": [
      +      "portrait",
      +      "landscape",
      +      "square"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 3,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"What the buyer is looking for, in natural language."New value: +"What the buyer is looking for, in their words."
    • addedInput schema / properties / ready_to_hang
      Added value: +{
      +  "description": "Ready to hang, as the seller stated.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / seller_stated_tags_only / description
      Previous value: -"When true, match only tags the seller asserted, excluding model-generated ones. Use when the buyer needs the seller to have made the claim themselves."New value: +"Kept for compatibility. Terms are only ever matched against the seller’s own words and tags, never a model’s, so this changes nothing."
    • addedInput schema / properties / ships_to
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Where the buyer wants it delivered. Fold delivers to the 50 US states and DC.",
      +  "properties": {
      +    "country": {
      +      "description": "ISO 3166-1 alpha-2, e.g. US.",
      +      "maxLength": 56,
      +      "minLength": 2,
      +      "type": "string"
      +    },
      +    "postal_code": {
      +      "maxLength": 16,
      +      "type": "string"
      +    },
      +    "region": {
      +      "description": "The state, e.g. CO or Colorado.",
      +      "maxLength": 56,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "country"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / signed
      Added value: +{
      +  "description": "Signed by the artist, as the seller stated.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / style
      Added value: +{
      +  "description": "Any of these styles.",
      +  "items": {
      +    "enum": [
      +      "abstract_expressionism",
      +      "expressionism",
      +      "impressionism",
      +      "realism",
      +      "photorealism",
      +      "minimalism",
      +      "geometric",
      +      "pop_art",
      +      "surrealism",
      +      "folk",
      +      "street_art",
      +      "illustrative"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 12,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / subject
      Added value: +{
      +  "description": "Any of these subjects.",
      +  "items": {
      +    "enum": [
      +      "abstract",
      +      "landscape",
      +      "seascape",
      +      "cityscape",
      +      "still_life",
      +      "botanical",
      +      "animals",
      +      "portrait",
      +      "figurative",
      +      "interior",
      +      "spiritual",
      +      "text"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 12,
      +  "minItems": 1,
      +  "type": "array"
      +}
  7. Changed2 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / trust_tier
      Removed value: -{
      -  "description": "Restrict by provenance strength. verified_digital_coa is the strongest; unverified works are listed honestly but carry no certificate.",
      -  "items": {
      -    "enum": [
      -      "verified_digital_coa",
      -      "verified_paper_coa",
      -      "unverified"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
  8. Changed1 schema field changed
    • changedInput schema / properties / include_sold / description
      Previous value: -"Include works that are already sold. Off by default."New value: +"Also include works that have already sold. Off by default. Works taken off sale are never returned either way."
  9. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description layers rich behavior on top: near_matches semantics, null-means-unknown, filter-wins-over-words precedence, applied_filters/understood/fold_derived reporting, completeness, next_actions, and offer/listing_id passthrough to checkout. It stops just short of describing result ordering or pagination beyond similarity ordering, so a 4 rather than 5.

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?

It is front-loaded with the when-to-use clause, but the body is a dense, run-on wall of text that mixes result-shape, filter precedence, wall logic, similarity, offers and images into long sentences. For 21 parameters the length is defensible, yet it could be structured with clearer separation to be scannable.

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?

Despite no output schema, the description thoroughly covers return shape (matches vs near_matches, applied_filters, understood, next_actions, offer, images) and caveats (seller-stated attributes, unknown never a no, verification boundary). An agent has enough to interpret and act on results correctly.

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

Parameters5/5

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

Schema coverage is 100% (baseline 3), but the description adds genuine semantics beyond the schema: query accepts free words and multiple languages, filters override words, corrected spellings surface in understood, ships_to with state/ZIP unlocks delivered_estimate and tax, and similar_to's threshold is Fold's similarity model, not style judgement. This substantially exceeds what the schema documents.

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 and resource ('find original paintings, prints, photographs or sculpture from independent artists') and enumerates the facets (subject, style, colour, size, budget, wall, visual similarity). An agent can distinguish this from get_artwork or check_availability without opening any 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?

Explicitly frames when to use ('Use this when someone wants to find...') and states the alternative paths and their preconditions ('With a wall, query may be left out', 'With similar_to, query may be left out'). It also clarifies what is not filterable (authenticity/provenance) and routes to _verification, which prevents wrong selections.

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.