protogrid

Search / com.artsdot/art-search

ArtsDot Art Search & Quotation

R0· no sign-in

Discover art you love and see what a print or painting would cost.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality85new
Trust83of 100
Uptime, 30 days100%
Latency p50142 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "art-search": {
      "type": "http",
      "url": "https://direct.artsdot.com/mcp/"
    }
  }
}
claude mcp add --transport http art-search https://direct.artsdot.com/mcp/
[mcp_servers.art-search]
url = "https://direct.artsdot.com/mcp/"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "art-search": {
      "type": "remote",
      "url": "https://direct.artsdot.com/mcp/",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "art-search": {
      "type": "http",
      "url": "https://direct.artsdot.com/mcp/"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=art-search&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZGlyZWN0LmFydHNkb3QuY29tL21jcC8ifQ%3D%3D"
}
{
  "servers": {
    "art-search": {
      "type": "http",
      "url": "https://direct.artsdot.com/mcp/"
    }
  }
}
{
  "mcpServers": {
    "art-search": {
      "httpUrl": "https://direct.artsdot.com/mcp/"
    }
  }
}
extensions:
  "art-search":
    enabled: true
    name: "art-search"
    type: streamable_http
    uri: "https://direct.artsdot.com/mcp/"
    timeout: 300

Quality 85 / 100new

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length4 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations14 of 14 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 6,222 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool history recorded for 4 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

14 tools, about 6,222 tokens to load them all · tool set c0d108c0dcfb · tools last changed 2026-11-04 · checked 2026-11-07 18:01 UTC

Tool changes

  • search_article_sectionsremoved

    Semantic search of the passages of our articles: returns the article sections that answer the question best, by meaning rather than shared words, each WHOLE (section_text is never cut) with section_heading, article_title, article_url, category_code, is_faq_question and score (cosine; higher is closer). Use it to ground an answer in what our articles say (how reproductions are made, policies, art history facts); use search_articles to list articles on a subject. Ask in a full sentence; any language works (the passages are in English). Sections are packed best first into about 9,000 characters: sections_omitted_for_size says how many more matched - ask a narrower question to reach them. Error index_unavailable: fall back to search_articles. Same as search_sections_semantically with models=["article"].

  • search_ftschangedtitle, description, annotations
    before

    Full-text search across artworks, artists, museums and articles at once (maximum 10 results per model, merged by relevance). Each result carries pk, model, title, artist_name, city, country, date_born, date_death, url, image_url (absolute URL of the large image, null when there is none), meta_description and score.

    after · 70% of words in common

    Full-text search across artworks, artists, museums and articles at once (maximum 10 results per model, merged by relevance). Use it when you know a name or keywords and want the objects; to answer a question from what our texts say, use search_sections_semantically. Each result carries pk, model, title, artist_name, city, country, date_born, date_death, url, image_url (absolute URL of the large image, null when there is none), meta_description and score.

  • search_objects_semanticallychangeddescription
    before

    Semantic search returning OBJECTS, not passages: the artworks, artists, museums or articles whose texts are closest in meaning to a text (a question, a paragraph, a section of an article). Each result: model, object_pk (use it with the matching get_detail_* tool), object_title, object_url, best_score (cosine of the object's single best passage; higher is closer), score_sum (its matching passages added up) and matched_vectors_count. rank_by "score_sum" (default) favours objects matching in many passages; "best_score" favours the one passage closest to the text - use it to find the exact work a text is about. Any language works (the texts are in English). Error index_unavailable: fall back to the search_* full-text tools.

    after · 87% of words in common

    Semantic search returning OBJECTS, not passages: the artworks, artists, museums or articles whose texts are closest in meaning to a text (a question, a paragraph, a section of an article). Each result: model, object_pk (use it with the matching get_detail_* tool), object_title, object_url, best_score (cosine of the object's single best passage; higher is closer), score_sum (its matching passages added up) and matched_vectors_count. rank_by "score_sum" (default) favours objects matching in many passages; "best_score" favours the one passage closest to the text - use it to find the exact work a text is about. Any language works (the texts are in English). Use it when you have a text and want the objects it is about; with a name or keywords, use search_fts; for the passages that answer a question, use search_sections_semantically. Error index_unavailable: fall back to the search_* full-text tools.

  • search_sections_semanticallychangeddescription
    before

    Semantic search of the texts of our site: returns the sections that answer the question best, by meaning rather than shared words, each WHOLE (section_text is never cut), from the requested models - "article" (our articles: how reproductions are made, policies, art history), "museum", "artist", "artwork" (their descriptions / biographies); default all models indexed on this server. Each result: model, object_pk (use it with the matching get_detail_* tool), object_title, object_url, category_code (articles), section_heading, section_text, is_faq_question, score (cosine; higher is closer). Ask in a full sentence; any language works (the texts are in English). Sections are packed best first into about 9,000 characters: sections_omitted_for_size says how many more matched. Error index_unavailable: fall back to the search_* full-text tools.

    after · 91% of words in common

    Semantic search of the texts of our site: returns the sections that answer the question best, by meaning rather than shared words, each WHOLE (section_text is never cut), from the requested models - "article" (our articles: how reproductions are made, policies, art history), "museum", "artist", "artwork" (their descriptions / biographies); default all models indexed on this server. Each result: model, object_pk (use it with the matching get_detail_* tool), object_title, object_url, category_code (articles), section_heading, section_text, is_faq_question, score (cosine; higher is closer). Ask in a full sentence; any language works (the texts are in English). Sections are packed best first into about 9,000 characters: sections_omitted_for_size says how many more matched. Use it to answer a question from what our texts say; to find a work, artist or museum by name or keywords, use search_fts; to find the objects a text is about, use search_objects_semantically. Error index_unavailable: fall back to the search_* full-text tools.

  • get_a_custom_reproduction_quotationchangeddescription, input schema
    before

    Price quotation for a CUSTOM reproduction — one made from an image the customer supplies (their own photo, or an artwork that is not in the catalog) — as an art print or a hand-painted oil painting. No artwork identification is needed or accepted: the price depends only on the size, the reproduction type and the currency. Use this whenever the artwork cannot be found in the catalog (the search tools return nothing relevant, or get_a_quotation fails with artwork_not_found), or the customer wants their own picture reproduced. Optional frame_code ("WhiteWrap" = stretched on stretcher bars, "default" = a decorative frame chosen for you, or a catalog code) adds the frame price to quotation_price; optional senior_artist (oil painting only) adds the "Elite Senior Artist" upgrade — more detail and finesse, extra production time. Each side must be 25-250 cm (about 10-98 inches). Returns quotation_price (the base price: options chosen on the order form, like varnish or urgent delivery, cost extra — see "notes"), currency, frame_code (+ frame_description, frame_delivery), width_cm/height_cm, notes, and order_page_url — the page where the customer uploads their image and orders the reproduction. Give order_page_url to the user as the link to place this order. For a hand-painted portrait the price covers up to 3 faces; the per-extra-face surcharge is stated in notes. Optional image_ids (ONLY when the context lists CUSTOMER IMAGES with ids — pictures already stored on our side, e.g. detached from the customer's email): order_page_url then opens the order page with that picture, the quoted size, medium, frame and options preloaded, so the customer only reviews and pays. Quote ONE image per call (one order per picture), and with image_ids you may give only the width or only the height: the other side follows the image's own proportions.

    after · 82% of words in common

    Price quotation for a CUSTOM reproduction — one made from an image the customer supplies (their own photo, or an artwork that is not in the catalog) — as an art print or a hand-painted oil painting. No artwork identification is needed or accepted: the price depends only on the size, the reproduction type and the currency. Use this whenever the artwork cannot be found in the catalog (the search tools return nothing relevant, or get_a_quotation fails with artwork_not_found), or the customer wants their own picture reproduced. Optional frame_code ("WhiteWrap" = stretched on stretcher bars, "default" = a decorative frame chosen for you, or a catalog code) adds the frame price to quotation_price; optional senior_artist (oil painting only) adds the "Elite Senior Artist" upgrade — more detail and finesse, extra production time. Each side must be 25-250 cm (about 10-98 inches). Returns quotation_price (the base price: options chosen on the order form, like varnish or urgent delivery, cost extra — see "notes"), currency, frame_code (+ frame_description, frame_delivery), width_cm/height_cm, notes, and order_page_url — the page where the customer uploads their image and orders the reproduction. Give order_page_url to the user as the link to place this order. For a hand-painted portrait the price covers up to 3 faces; the per-extra-face surcharge is stated in notes.

  • get_detail_articlechangeddescription
    before

    Full data of ONE article identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the full article content as HTML), updated_at, url (the article page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (articles_by_category_page, all_articles_page, rss_feed). Two more sections, "catalog" (category, brand website, creation date, persona/tone/style labels) and "stats" (rank_computed, stats_visits_count_monthly), are filled ONLY when the caller sends the MCP token of a staff account or of a paid subscriber; for every other caller their keys are present with null values. Non-staff callers only get approved articles (article_not_found otherwise). The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.

    after · 56% of words in common

    Full data of ONE article identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the full article content as HTML), url (the article page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (articles_by_category_page, all_articles_page, rss_feed). article_not_found when no such article is published. The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.

  • get_detail_museumchangeddescription
    before

    Full data of ONE museum identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the museum description as HTML), updated_at, url (the museum page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (city_museums_page, museums_by_country_page, official_website, all_museums_page). Two more sections, "catalog" (alternate names, city, country, website, popularity, the first 5 mediums/medium types/movements/periods of its artworks, quick_facts and quiz) and "stats" (rank_computed, stats_visits_count_monthly, artworks_count), are filled ONLY when the caller sends the MCP token of a staff account or of a paid subscriber; for every other caller their keys are present with null values. Non-staff callers only get approved museums (museum_not_found otherwise). The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.

    after · 53% of words in common

    Full data of ONE museum identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the museum description as HTML), url (the museum page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (city_museums_page, museums_by_country_page, official_website, all_museums_page). museum_not_found when no such museum is published. The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.

  • get_detail_artistchangeddescription
    before

    Full data of ONE artist identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the artist biography as HTML), updated_at, url (the artist page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (artwork_timeline_page, all_artworks_page, chronicle_page, subject_atlas_page, mood_room_page). Two more sections, "catalog" (other names, birth/death years, birth city/country, period, popularity, origin, website, movements, mediums, topics, vibes, periods, quick_facts and quiz) and "stats" (rank_computed, stats_visits_count_monthly, paintings_count, orders_count_sum), are filled ONLY when the caller sends the MCP token of a staff account or of a paid subscriber; for every other caller their keys are present with null values. Non-staff callers only get approved artists (artist_not_found otherwise). The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.

    after · 51% of words in common

    Full data of ONE artist identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the artist biography as HTML), url (the artist page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (artwork_timeline_page, all_artworks_page, chronicle_page, subject_atlas_page, mood_room_page). artist_not_found when no such artist is published. The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.

  • get_detail_artworkchangeddescription
    before

    Full data of ONE artwork identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the artwork description as HTML), updated_at, url (the artwork page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (download_page, buy_print_page, buy_oil_painting_page (only for channels on sale), student_guide_page, similar_artworks_page, preview_in_room_page). Also for every caller: "museum" - where the original is kept (pk, name, url of its page on this site, city, country), null when unknown. Two more sections, "catalog" (origin, date, original size, image pixel size, movement, period, topics, medium, colour/vibe/purpose labels, quick_facts, quiz, artist and museum (pk/name/url)) and "stats" (rank_computed, stats_visits_count_monthly, orders_count), are filled ONLY when the caller sends the MCP token of a staff account or of a paid subscriber; for every other caller their keys are present with null values. Non-staff callers only get approved artworks (artwork_not_found otherwise). The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.

    after · 62% of words in common

    Full data of ONE artwork identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the artwork description as HTML), url (the artwork page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (download_page, buy_print_page, buy_oil_painting_page (only for channels on sale), student_guide_page, similar_artworks_page, preview_in_room_page). Also for every caller: "museum" - where the original is kept (pk, name, url of its page on this site, city, country), null when unknown. artwork_not_found when no such artwork is published. The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-4d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://direct.artsdot.com/mcp/ streamable-httpnoneyes100%142 ms2025-06-182026-11-07

Tools (14)

get_a_custom_reproduction_quotationread-onlyPrice quotation for a CUSTOM reproduction — one made from an image the customer supplies (their own photo, or an artwork that is not in the catalog) — as an art print or a hand-painted oil painting. No artwork identification is needed or accepted: the price depends only on the size, the reproduction type and the currency. Use this whenever the artwork cannot be found in the catalog (the search tools return nothing relevant, or get_a_quotation fails with artwork_not_found), or the customer wants their own picture reproduced. Optional frame_code ("WhiteWrap" = stretched on stretcher bars, "default" = a decorative frame chosen for you, or a catalog code) adds the frame price to quotation_price; optional senior_artist (oil painting only) adds the "Elite Senior Artist" upgrade — more detail and finesse, extra production time. Each side must be 25-250 cm (about 10-98 inches). Returns quotation_price (the base price: options chosen on the order form, like varnish or urgent delivery, cost extra — see "notes"), currency, frame_code (+ frame_description, frame_delivery), width_cm/height_cm, notes, and order_page_url — the page where the customer uploads their image and orders the reproduction. Give order_page_url to the user as the link to place this order. For a hand-painted portrait the price covers up to 3 faces; the per-extra-face surcharge is stated in notes.
get_a_quotationread-onlyPrice quotation for a reproduction of an artwork, as an art print or a hand-painted oil painting, at a given size and in a given currency. Leave type out to get BOTH in one call: the result then holds "quotations" (one full quotation per type the artwork sells, each with its own price, buy_url and offer_text) and "types_not_available". Every quotation carries offer_text, one ready-to-paste line (type, size, frame, price, order link): give it to the user as is, translating its words if needed but never changing its numbers or link. Optional frame_code adds the frame price to quotation_price ("WhiteWrap" = stretched on stretcher bars, "default" = a decorative frame chosen for the artwork, or a catalog code); optional senior_artist (oil painting only) adds the "Elite Senior Artist" upgrade — more detail and finesse, extra production time — to quotation_price. Identify the artwork by pk, or by title and/or artist_name (an exact title match wins; otherwise the first good-confidence search match is used, and its relevance is returned in "score"). A fuzzy match can be a different painting than the one asked for: when the result carries a "warning", verify the returned title before using the price, as the warning instructs. width/height need not match the artwork's own proportions: when its aspect ratio is known, the quoted size is snapped to that ratio while keeping the same surface area (width x height) you requested, so the reproduction is never stretched or distorted; the actual quoted size is returned as width_cm/height_cm (vs. your original requested_width_cm/requested_height_cm), with size_ratio_adjusted set to true when this happened. Give only width OR only height (e.g. "25 cm high", "smallest side 25 cm") to keep that side exactly: the other side is then derived from the artwork's aspect ratio and size_derived_from names the side you gave (fails with invalid_size when the ratio is unknown - then give both). Each side must be 25-250 cm (about 10-98 inches): a size outside that range is NOT refused but quoted at the nearest valid size with the same proportions, with size_adjusted_to_minimum / size_adjusted_to_maximum set to true; whenever the quoted size differs from the request, size_note says in one sentence what changed and why - repeat it to the user. invalid_size only comes back when no size of these proportions can fit the range. Returns pk, artist_name, title, meta_description, quotation_price, currency, frame_code (+ frame_description, frame_delivery), url (catalog page) and buy_url. buy_url is a ready-to-open, fully-parameterised buy form: reproduction medium, size and frame are all set from the query string, so the page opens showing exactly quotation_price. Give it to the user as the link to order the artwork at the quoted configuration. When the artwork ITSELF is for sale right now (a ready-made oil painting in stock, an open auction lot, an original, a studio collectible), the result also carries available_now (offers with price, stock quantity and offer_text, plus a note): tell the customer about the real object in the same answer — a quotation is a copy made to order. An artwork sold only as such an object answers with quotations empty and available_now set, not with channel_not_available.
get_artwork_availabilityread-onlyEvery way to buy ONE artwork right now, on every sales channel it sells: the physical objects first — a ready-made oil painting in stock ("Stock Discount Oil Painting", a real canvas that ships within 48 hours), an auction lot (current bid, minimum next bid, closing time), an original sold by its owner, a studio collectible — each with available_now, stock_quantity, price (fixed, shipping included) in your currency, size, buy_url and offer_text (one ready-to-paste line: give it to the customer as is, numbers and link untouched); then the made-to-order channels (hand-painted oil reproduction, art print: price by size through get_a_quotation) and the digital image licence. available_now is true only when the artwork ITSELF can be bought or bid on today; available_now_summary says it in one sentence. Call it whenever a customer asks whether something is available, in stock, ready to ship, discounted, on auction, or what it costs as a real object — and before any "yes, it is available". Identify the artwork by pk, or by title and/or artist_name (exact title first, then a surname-guarded search whose relevance comes back in "score"; a "warning" means check the returned title). Without pk or title, give channel to LIST the objects of that channel for sale now (cheapest first; optional artist_name, query words from the title, max_price in your currency, limit 1-10): "what do you have in stock under 200 euros?", "which auctions are open?". Prices follow the strict no-fallback currency rule of the quotation tools.
get_detail_articleread-onlyFull data of ONE article identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the full article content as HTML), url (the article page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (articles_by_category_page, all_articles_page, rss_feed). article_not_found when no such article is published. The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.
get_detail_artistread-onlyFull data of ONE artist identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the artist biography as HTML), url (the artist page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (artwork_timeline_page, all_artworks_page, chronicle_page, subject_atlas_page, mood_room_page). artist_not_found when no such artist is published. The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.
get_detail_artworkread-onlyFull data of ONE artwork identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the artwork description as HTML), url (the artwork page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (download_page, buy_print_page, buy_oil_painting_page (only for channels on sale), student_guide_page, similar_artworks_page, preview_in_room_page). Also for every caller: "museum" - where the original is kept (pk, name, url of its page on this site, city, country), null when unknown. artwork_not_found when no such artwork is published. The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.
get_detail_museumread-onlyFull data of ONE museum identified by pk (use a search tool first to find the pk). Always returns: pk, title, meta_description, meta_keywords (first 5), description_html (the museum description as HTML), url (the museum page), image_url, and "links" — up to 5 ready-to-give absolute URLs of the most useful related pages (city_museums_page, museums_by_country_page, official_website, all_museums_page). museum_not_found when no such museum is published. The result is capped at 25000 characters: when description_html had to be shortened to fit, "truncated" is true.
search_articlesread-onlyFull-text search of website articles, optionally filtered by category code. Returns pk, title, url, image_url (absolute URL of the large article image, null when there is none), category_code, meta_description and relevance score.
search_artistsread-onlyFull-text search of artists by name and biography, optionally narrowed by birth city/country and by a year the artist was alive (born <= year <= died, or born + 80 years when the death year is unknown). Returns pk, artist_name, url, image_url (absolute URL of the large artist portrait, null when there is none), city, country, date_born, date_death and score.
search_artworksread-onlyFull-text search of the artwork catalog by title, artist name and description. Returns only good-confidence matches with pk, artist_name, title, url, image_url (absolute URL of the large artwork image, null when the artwork has no image) and relevance score.
search_ftsread-onlyFull-text search across artworks, artists, museums and articles at once (maximum 10 results per model, merged by relevance). Use it when you know a name or keywords and want the objects; to answer a question from what our texts say, use search_sections_semantically. Each result carries pk, model, title, artist_name, city, country, date_born, date_death, url, image_url (absolute URL of the large image, null when there is none), meta_description and score.
search_museumsread-onlyFull-text search of museums by name, optionally narrowed by city and country. Returns only good-confidence matches with pk, name, url, image_url (absolute URL of the large museum image, null when there is none), city, country and relevance score.
search_objects_semanticallyread-onlySemantic search returning OBJECTS, not passages: the artworks, artists, museums or articles whose texts are closest in meaning to a text (a question, a paragraph, a section of an article). Each result: model, object_pk (use it with the matching get_detail_* tool), object_title, object_url, best_score (cosine of the object's single best passage; higher is closer), score_sum (its matching passages added up) and matched_vectors_count. rank_by "score_sum" (default) favours objects matching in many passages; "best_score" favours the one passage closest to the text - use it to find the exact work a text is about. Any language works (the texts are in English). Use it when you have a text and want the objects it is about; with a name or keywords, use search_fts; for the passages that answer a question, use search_sections_semantically. Error index_unavailable: fall back to the search_* full-text tools.
search_sections_semanticallyread-onlySemantic search of the texts of our site: returns the sections that answer the question best, by meaning rather than shared words, each WHOLE (section_text is never cut), from the requested models - "article" (our articles: how reproductions are made, policies, art history), "museum", "artist", "artwork" (their descriptions / biographies); default all models indexed on this server. Each result: model, object_pk (use it with the matching get_detail_* tool), object_title, object_url, category_code (articles), section_heading, section_text, is_faq_question, score (cosine; higher is closer). Ask in a full sentence; any language works (the texts are in English). Sections are packed best first into about 9,000 characters: sections_omitted_for_size says how many more matched. Use it to answer a question from what our texts say; to find a work, artist or museum by name or keywords, use search_fts; to find the objects a text is about, use search_objects_semantically. Error index_unavailable: fall back to the search_* full-text tools.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.artsdot/art-search",
  "icons": [
    {
      "src": "https://artsdot.com/static/images/artsdot/favicon-adc.png",
      "sizes": [
        "200x200"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "ArtsDot Art Search & Quotation",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://direct.artsdot.com/mcp/",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.0",
  "websiteUrl": "https://artsdot.com/en/mcp/",
  "description": "Discover art you love and see what a print or painting would cost."
}