art-institute-chicago-mcp-server
Search the Art Institute of Chicago collection: artworks, artists, exhibitions, and audio guides.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"art-institute-chicago-mcp-server": {
"command": "node",
"args": [
"@cyanheads/art-institute-chicago-mcp-server"
]
}
}
}Ausführbare Pakete
0.1.2streamable-httpRemote-Endpunkte
https://art-institute-chicago.caseyjhand.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (6)
🟢artic_search_artworks(query, artist, artist_id, department, artwork_type, ...)
Search the Art Institute of Chicago collection by text and structured filters, ranked by relevance or sorted by date. Text matches all words across titles, artists, descriptions, provenance, and other catalog fields. Filters combine with AND. Results reach the first 1,000 matches; narrow with filters for more. Set limit to 0 with facets to get only counts. Use artic_lookup_vocabulary for filter values and artic_get_artworks for full records.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"description": "Text matched against titles, artists, descriptions, provenance, and other catalog fields; every word must match. Supports \"exact phrase\", -exclude, and a | b.",
"type": "string",
"maxLength": 200
},
"artist": {
"description": "Artist or culture name matched against every credited artist (all words must match).",
"type": "string",
"maxLength": 120
},
"artist_id": {
"description": "Agent id from artic_search_artists or an artist facet row; matches preferred and other credits.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"department": {
"description": "Department title exactly as artic_lookup_vocabulary lists it (case ignored), such as Prints and Drawings.",
"type": "string",
"maxLength": 120
},
"artwork_type": {
"description": "Artwork type title as artic_lookup_vocabulary lists it (case ignored), such as Painting or Print.",
"type": "string",
"maxLength": 120
},
"style": {
"description": "Style title as artic_lookup_vocabulary lists it (case ignored), such as Impressionism; matches preferred or alternate styles.",
"type": "string",
"maxLength": 120
},
"subject": {
"description": "Subject title as artic_lookup_vocabulary lists it (case ignored).",
"type": "string",
"maxLength": 120
},
"classification": {
"description": "Classification title as artic_lookup_vocabulary lists it (case ignored), such as oil on canvas or etching.",
"type": "string",
"maxLength": 120
},
"material": {
"description": "Material title as artic_lookup_vocabulary lists it (case ignored), such as ink or gold leaf.",
"type": "string",
"maxLength": 120
},
"technique": {
"description": "Technique title as artic_lookup_vocabulary lists it (case ignored), such as black-and-white photography or plain weaving.",
"type": "string",
"maxLength": 120
},
"theme": {
"description": "Theme title as artic_lookup_vocabulary lists it (case ignored), such as Women artists.",
"type": "string",
"maxLength": 120
},
"place_of_origin": {
"description": "Place of origin as artic_lookup_vocabulary lists it (case ignored), such as france.",
"type": "string",
"maxLength": 120
},
"gallery": {
"description": "Gallery where the work is on view, such as Gallery 240 (a bare 240 is read as Gallery 240). Only on-view works carry a gallery.",
"type": "string",
"maxLength": 120
},
"year_from": {
"description": "Earliest year; a work matches when its date span overlaps year_from to year_to. Negative for BCE.",
"type": "integer",
"minimum": -8000,
"maximum": 2100
},
"year_to": {
"description": "Latest year; a work matches when its date span overlaps year_from to year_to. Negative for BCE.",
"type": "integer",
"minimum": -8000,
"maximum": 2100
},
"public_domain_only": {
"description": "Only public-domain works, whose images are CC0.",
"default": false,
"type": "boolean"
},
"on_view_only": {
"description": "Only works on view at the museum now.",
"default": false,
"type": "boolean"
},
"has_image": {
"description": "Only works with an image.",
"default": false,
"type": "boolean"
},
"facets": {
"description": "Facet counts to compute over the filtered set (top 15 values each): department, artwork_type, style, subject, classification, place_of_origin, artist. An array or a comma-separated string.",
"maxItems": 7,
"type": "array",
"items": {
"type": "string",
"enum": [
"department",
"artwork_type",
"style",
"subject",
"classification",
"place_of_origin",
"artist"
]
}
},
"sort": {
"description": "relevance ranks by query text, or by museum popularity without it; date_asc and date_desc sort by start year.",
"default": "relevance",
"type": "string",
"enum": [
"relevance",
"date_asc",
"date_desc"
]
},
"page": {
"description": "Page to return (1-based); page times limit may not exceed 1,000.",
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"limit": {
"description": "Rows per page (0-12; capped so a page of long catalog records with every facet stays within common tool-output limits); 0 returns only totalCount and facets.",
"default": 10,
"type": "integer",
"minimum": 0,
"maximum": 12
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"artworks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Artwork id; pass to artic_get_artworks."
},
"title": {
"type": "string",
"description": "Title as catalogued; empty when the museum lists none."
},
"artist_display": {
"description": "Artist, nationality, and life dates as the museum displays them.",
"type": "string"
},
"artist_id": {
"description": "Id of the preferred credited artist; pass as artist_id to artic_search_artworks.",
"type": "number"
},
"date_display": {
"description": "Date as the museum displays it; the authority when the years are absent.",
"type": "string"
},
"date_start": {
"description": "Earliest year of the date span, negative for BCE; omitted when absent or implausible.",
"type": "number"
},
"date_end": {
"description": "Latest year of the date span, negative for BCE; omitted when absent or implausible.",
"type": "number"
},
"medium": {
"description": "Medium and support as displayed.",
"type": "string"
},
"artwork_type": {
"description": "Artwork type, such as Painting or Print.",
"type": "string"
},
"department": {
"description": "Curatorial department.",
"type": "string"
},
"place_of_origin": {
"description": "Place the work was made.",
"type": "string"
},
"is_public_domain": {
"type": "boolean",
"description": "True when the work is public domain, so its images are CC0."
},
"is_on_view": {
"type": "boolean",
"description": "True when the work is on view at the museum now."
},
"gallery": {
"description": "Gallery where the work is on view, such as Gallery 240.",
"type": "string"
},
"web_url": {
"type": "string",
"description": "Public page for the artwork on artic.edu."
},
"image": {
"description": "Primary image with constructed IIIF URLs and its reuse status; absent when the work has no image.",
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "IIIF image 843 px wide, the museum display size; available for every image, public domain or not."
},
"url_large": {
"description": "IIIF image 1686 px wide; present only for public-domain works.",
"type": "string"
},
"iiif_info_url": {
"type": "string",
"description": "IIIF info.json URL listing the image dimensions, sizes, and tiles."
},
"alt_text": {
"description": "Alt text the museum wrote for the image.",
"type": "string"
},
"width": {
"description": "Full image width in pixels.",
"type": "number"
},
"height": {
"description": "Full image height in pixels.",
"type": "number"
},
"rights": {
"type": "string",
"enum": [
"public_domain",
"in_copyright"
],
"description": "Reuse status: public_domain images are CC0; in_copyright images need a rights check before reuse."
}
},
"required": [
"url",
"iiif_info_url",
"rights"
],
"additionalProperties": false
}
},
"required": [
"id",
"title",
"is_public_domain",
"is_on_view",
"web_url"
],
"additionalProperties": false,
"description": "One matching artwork."
},
"description": "Matching artworks on this page, in ranked or sorted order."
},
"facets": {
"description": "Counts over the filtered set for each requested facet; present only when facets were requested.",
"type": "object",
"properties": {
"department": {
"description": "Top department values over the filtered set, most common first.",
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value as indexed; pass it back verbatim as the department filter."
},
"count": {
"type": "number",
"description": "Matching artworks carrying this value."
}
},
"required": [
"value",
"count"
],
"additionalProperties": false,
"description": "One facet value and its count."
}
},
"artwork_type": {
"description": "Top artwork_type values over the filtered set, most common first.",
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value as indexed; pass it back verbatim as the artwork_type filter."
},
"count": {
"type": "number",
"description": "Matching artworks carrying this value."
}
},
"required": [
"value",
"count"
],
"additionalProperties": false,
"description": "One facet value and its count."
}
},
"style": {
"description": "Top style values over the filtered set, most common first.",
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value as indexed; pass it back verbatim as the style filter."
},
"count": {
"type": "number",
"description": "Matching artworks carrying this value."
}
},
"required": [
"value",
"count"
],
"additionalProperties": false,
"description": "One facet value and its count."
}
},
"subject": {
"description": "Top subject values over the filtered set, most common first.",
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value as indexed; pass it back verbatim as the subject filter."
},
"count": {
"type": "number",
"description": "Matching artworks carrying this value."
}
},
"required": [
"value",
"count"
],
"additionalProperties": false,
"description": "One facet value and its count."
}
},
"classification": {
"description": "Top classification values over the filtered set, most common first.",
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value as indexed; pass it back verbatim as the classification filter."
},
"count": {
"type": "number",
"description": "Matching artworks carrying this value."
}
},
"required": [
"value",
"count"
],
"additionalProperties": false,
"description": "One facet value and its count."
}
},
"place_of_origin": {
"description": "Top place_of_origin values over the filtered set, most common first.",
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value as indexed; pass it back verbatim as the place_of_origin filter."
},
"count": {
"type": "number",
"description": "Matching artworks carrying this value."
}
},
"required": [
"value",
"count"
],
"additionalProperties": false,
"description": "One facet value and its count."
}
},
"artist": {
"description": "Top artists over the filtered set, most common first.",
"type": "array",
"items": {
"type": "object",
"properties": {
"artist_id": {
"type": "number",
"description": "Agent id; pass it back as the artist_id filter."
},
"name": {
"description": "Artist name as written; absent when the museum record carries none.",
"type": "string"
},
"count": {
"type": "number",
"description": "Matching artworks crediting this artist."
}
},
"required": [
"artist_id",
"count"
],
"additionalProperties": false,
"description": "One artist facet row."
}
}
},
"additionalProperties": false
},
"page": {
"type": "number",
"description": "Page returned (1-based)."
},
"has_more": {
"type": "boolean",
"description": "True when more matches exist beyond this page."
},
"next_page": {
"description": "Page to request next; absent when nothing remains or the next page would pass the first 1,000 matches.",
"type": "number"
},
"sort_applied": {
"type": "string",
"enum": [
"relevance",
"popularity",
"date_asc",
"date_desc"
],
"description": "Order applied; popularity when relevance was requested without query text (the museum popularity ranking)."
},
"license_text": {
"type": "string",
"description": "License statement from the API for this data, verbatim."
},
"totalCount": {
"type": "number",
"description": "Matches for the query and filters, before paging."
},
"truncated": {
"type": "boolean",
"description": "True when more matches exist beyond this page."
},
"shown": {
"type": "number",
"description": "Rows returned on this page."
},
"cap": {
"type": "number",
"description": "The limit applied to this page."
},
"notice": {
"description": "Guidance when nothing matched, more pages exist, or the reachable window is exhausted.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `page_beyond_window`: page times limit exceeds 1,000, past the reachable search window. `invalid_year_range`: year_from is later than year_to. `rate_limited`: The Art Institute API throttled this server and retries ran out, or the shared request queue could not start the call in time. `request_blocked`: The Art Institute API's firewall blocked the request, as it does for markup or script-like text and for bursts of traffic. `upstream_rejected_query`: The Art Institute API rejected a request this server built from valid inputs. Other values are possible when a failure originates below the handler.",
"examples": [
"page_beyond_window",
"invalid_year_range",
"rate_limited",
"request_blocked",
"upstream_rejected_query"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"artworks",
"page",
"has_more",
"sort_applied",
"license_text",
"totalCount",
"truncated",
"shown",
"cap"
]
},
{
"required": [
"error"
]
}
]
}🟢artic_get_artworks(ids, sections, include_related_media)
Fetch full Art Institute of Chicago records for up to 10 artworks by id: description, provenance, exhibition and publication history, dimensions, inscriptions, credit line, categorization, gallery, image URLs with rights status, and related multimedia. Long histories are opt-in through sections. Ids come from artic_search_artworks, artic_search_exhibitions, or artic_search_artists.
Eingabe-Schema
{
"type": "object",
"properties": {
"ids": {
"description": "Artwork ids, 1 to 10, as an array or a comma-separated string; https://www.artic.edu/artworks/<id> page URLs are read as their id. Duplicates are dropped.",
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"sections": {
"description": "Heavy text sections to include: description (also short_description), provenance, exhibition_history, publication_history, catalogue. Defaults to description and provenance; pass an empty array for none.",
"default": [
"description",
"provenance"
],
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"enum": [
"description",
"provenance",
"exhibition_history",
"publication_history",
"catalogue"
]
}
},
"include_related_media": {
"description": "Load related multimedia (lectures, audio stops) for the records, up to 20 items per call.",
"default": true,
"type": "boolean"
}
},
"required": [
"ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"artworks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Artwork id; pass to artic_get_artworks."
},
"title": {
"type": "string",
"description": "Title as catalogued; empty when the museum lists none."
},
"artist_display": {
"description": "Artist, nationality, and life dates as the museum displays them.",
"type": "string"
},
"artist_id": {
"description": "Id of the preferred credited artist; pass as artist_id to artic_search_artworks.",
"type": "number"
},
"date_display": {
"description": "Date as the museum displays it; the authority when the years are absent.",
"type": "string"
},
"date_start": {
"description": "Earliest year of the date span, negative for BCE; omitted when absent or implausible.",
"type": "number"
},
"date_end": {
"description": "Latest year of the date span, negative for BCE; omitted when absent or implausible.",
"type": "number"
},
"medium": {
"description": "Medium and support as displayed.",
"type": "string"
},
"artwork_type": {
"description": "Artwork type, such as Painting or Print.",
"type": "string"
},
"department": {
"description": "Curatorial department.",
"type": "string"
},
"place_of_origin": {
"description": "Place the work was made.",
"type": "string"
},
"is_public_domain": {
"type": "boolean",
"description": "True when the work is public domain, so its images are CC0."
},
"is_on_view": {
"type": "boolean",
"description": "True when the work is on view at the museum now."
},
"gallery": {
"description": "Gallery where the work is on view, such as Gallery 240.",
"type": "string"
},
"web_url": {
"type": "string",
"description": "Public page for the artwork on artic.edu."
},
"image": {
"description": "Primary image with constructed IIIF URLs and its reuse status; absent when the work has no image.",
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "IIIF image 843 px wide, the museum display size; available for every image, public domain or not."
},
"url_large": {
"description": "IIIF image 1686 px wide; present only for public-domain works.",
"type": "string"
},
"iiif_info_url": {
"type": "string",
"description": "IIIF info.json URL listing the image dimensions, sizes, and tiles."
},
"alt_text": {
"description": "Alt text the museum wrote for the image.",
"type": "string"
},
"width": {
"description": "Full image width in pixels.",
"type": "number"
},
"height": {
"description": "Full image height in pixels.",
"type": "number"
},
"rights": {
"type": "string",
"enum": [
"public_domain",
"in_copyright"
],
"description": "Reuse status: public_domain images are CC0; in_copyright images need a rights check before reuse."
}
},
"required": [
"url",
"iiif_info_url",
"rights"
],
"additionalProperties": false
},
"alt_titles": {
"description": "Other titles the work is known by.",
"type": "array",
"items": {
"type": "string"
}
},
"main_reference_number": {
"type": "string",
"description": "Museum reference (accession) number; empty when the museum lists none."
},
"artist_ids": {
"type": "array",
"items": {
"type": "number"
},
"description": "Ids of every credited artist; pass one as artist_id to artic_search_artworks."
},
"date_qualifier": {
"description": "What the date marks, such as Made or Printed.",
"type": "string"
},
"dimensions": {
"description": "Dimensions as catalogued.",
"type": "string"
},
"inscriptions": {
"description": "Inscriptions, signatures, and marks as catalogued.",
"type": "string"
},
"credit_line": {
"description": "Credit line naming how the museum acquired the work.",
"type": "string"
},
"copyright_notice": {
"description": "Copyright notice for the work.",
"type": "string"
},
"edition": {
"description": "Edition statement for prints and multiples.",
"type": "string"
},
"classification": {
"description": "Preferred classification.",
"type": "string"
},
"style": {
"description": "Preferred style.",
"type": "string"
},
"styles": {
"type": "array",
"items": {
"type": "string"
},
"description": "Every style the museum assigns."
},
"subjects": {
"type": "array",
"items": {
"type": "string"
},
"description": "Subjects the museum assigns."
},
"materials": {
"type": "array",
"items": {
"type": "string"
},
"description": "Materials the museum records."
},
"techniques": {
"type": "array",
"items": {
"type": "string"
},
"description": "Techniques the museum records."
},
"themes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Themes the museum assigns."
},
"on_loan": {
"description": "Loan statement when the work is on loan.",
"type": "string"
},
"manifest_url": {
"description": "IIIF Presentation manifest URL; present for public-domain works.",
"type": "string"
},
"alt_images": {
"description": "Alternate images (other views, details); same rights as the primary image.",
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "IIIF image 843 px wide."
},
"iiif_info_url": {
"type": "string",
"description": "IIIF info.json URL for the image."
}
},
"required": [
"url",
"iiif_info_url"
],
"additionalProperties": false,
"description": "One alternate image."
}
},
"description": {
"description": "Curatorial description, CC BY 4.0: credit the Art Institute of Chicago and cite web_url. Present when the description section was requested and the museum wrote one.",
"type": "string"
},
"short_description": {
"description": "Short curatorial description, attributed like description; returned with the description section.",
"type": "string"
},
"provenance": {
"description": "Ownership history; returned with the provenance section.",
"type": "string"
},
"exhibition_history": {
"description": "Exhibitions the work has appeared in; returned with the exhibition_history section.",
"type": "string"
},
"publication_history": {
"description": "Publications citing the work; returned with the publication_history section.",
"type": "string"
},
"catalogue": {
"description": "Catalogue raisonne entries; returned with the catalogue section.",
"type": "string"
},
"related_media": {
"description": "Related multimedia (lectures, audio stops) from the museum; present when requested and at least one linked item loaded, never an empty list.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Multimedia asset id (uuid)."
},
"title": {
"type": "string",
"description": "Asset title; empty when the museum lists none."
},
"url": {
"type": "string",
"description": "Asset URL on artic.edu."
},
"type": {
"description": "Asset type, such as sound.",
"type": "string"
}
},
"required": [
"id",
"title",
"url"
],
"additionalProperties": false,
"description": "One related multimedia asset."
}
}
},
"required": [
"id",
"title",
"is_public_domain",
"is_on_view",
"web_url",
"main_reference_number",
"artist_ids",
"styles",
"subjects",
"materials",
"techniques",
"themes"
],
"additionalProperties": false,
"description": "One full artwork record."
},
"description": "Records in request order; ids the museum does not have are left out."
},
"missing_ids": {
"type": "array",
"items": {
"type": "number"
},
"description": "Requested ids with no artwork, in request order."
},
"deferred_ids": {
"type": "array",
"items": {
"type": "number"
},
"description": "Found ids left out because the response budget was reached; request them in a follow-up call."
},
"license_text": {
"type": "string",
"description": "License statement from the API for this data, verbatim."
},
"description_attribution": {
"description": "Attribution owed for description text (CC BY 4.0); present when any is returned.",
"type": "string"
},
"notice": {
"description": "Guidance when ids are missing or deferred, or related media was capped or could not load.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `rate_limited`: The Art Institute API throttled this server and retries ran out, or the shared request queue could not start the call in time. `request_blocked`: The Art Institute API's firewall blocked the request, as it does for markup or script-like text and for bursts of traffic. `upstream_rejected_query`: The Art Institute API rejected a request this server built from valid inputs. Other values are possible when a failure originates below the handler.",
"examples": [
"rate_limited",
"request_blocked",
"upstream_rejected_query"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"artworks",
"missing_ids",
"deferred_ids",
"license_text"
]
},
{
"required": [
"error"
]
}
]
}🟢artic_search_artists(query, ids, artists_only, born_from, born_to, ...)
Find artists, cultures, and organizations in the Art Institute of Chicago collection by name, or fetch them by id. Each result carries life dates, agent type, alternate names, how many of the museum's artworks credit them, and up to three of their works, the museum's highlighted works first. Pass an id to artic_search_artworks as artist_id to browse all of their works.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"description": "Name to find, matched against names and alternate names; every word must match. Pass query or ids, not both.",
"type": "string",
"maxLength": 120
},
"ids": {
"description": "Agent ids to fetch (up to 25), such as an artwork's artist_id, as an array or a comma-separated string. Pass query or ids, not both; the other filters and page apply to query only.",
"maxItems": 25,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"artists_only": {
"description": "Query mode: only agents the museum records as artists. Set false to include donors, funds, and organizations.",
"default": true,
"type": "boolean"
},
"born_from": {
"description": "Query mode: earliest birth year, negative for BCE.",
"type": "integer",
"minimum": -8000,
"maximum": 2100
},
"born_to": {
"description": "Query mode: latest birth year, negative for BCE.",
"type": "integer",
"minimum": -8000,
"maximum": 2100
},
"page": {
"description": "Query mode: page to return (1-based); page times limit may not exceed 1,000.",
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"limit": {
"description": "Query mode: agents per page (1-25).",
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"artists": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Agent id; pass as artist_id to artic_search_artworks."
},
"name": {
"type": "string",
"description": "Name as the museum catalogues it; empty when the museum lists none."
},
"sort_name": {
"description": "Name in sort order, such as surname first.",
"type": "string"
},
"alt_names": {
"type": "array",
"items": {
"type": "string"
},
"description": "Other names and spellings the museum records."
},
"agent_type": {
"description": "Kind of agent as the museum records it, such as a person or an organization.",
"type": "string"
},
"is_artist": {
"type": "boolean",
"description": "True when the museum records the agent as an artist; false for donors, funds, and organizations."
},
"birth_year": {
"description": "Birth year, negative for BCE; omitted when unknown or implausible.",
"type": "number"
},
"death_year": {
"description": "Death year, negative for BCE; omitted when unknown or implausible.",
"type": "number"
},
"biography": {
"description": "Biography the museum wrote; present for about 1% of agents.",
"type": "string"
},
"artwork_count": {
"description": "Artworks in the collection crediting this agent (0 when none); absent only when counts could not be loaded.",
"type": "number"
},
"sample_works": {
"description": "Up to three of the agent's artworks, the museum's highlighted works first; absent only when counts could not be loaded.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Artwork id; pass to artic_get_artworks."
},
"title": {
"type": "string",
"description": "Title as catalogued; empty when the museum lists none."
},
"date_display": {
"description": "Date as the museum displays it.",
"type": "string"
}
},
"required": [
"id",
"title"
],
"additionalProperties": false,
"description": "One of the agent's artworks."
}
}
},
"required": [
"id",
"name",
"alt_names",
"is_artist"
],
"additionalProperties": false,
"description": "One matching agent."
},
"description": "Matching agents: in relevance order for a name search, in request order for ids."
},
"missing_ids": {
"description": "Requested ids with no agent, in request order; present when ids were passed.",
"type": "array",
"items": {
"type": "number"
}
},
"page": {
"type": "number",
"description": "Page returned (1-based); always 1 when ids were passed."
},
"has_more": {
"type": "boolean",
"description": "True when more matches exist beyond this page."
},
"next_page": {
"description": "Page to request next; absent when nothing remains or the next page would pass the first 1,000 matches.",
"type": "number"
},
"artists_only_applied": {
"type": "boolean",
"description": "Whether results were limited to artists; always false when ids were passed, since every requested agent is returned."
},
"license_text": {
"type": "string",
"description": "License statement from the API for this data, verbatim."
},
"totalCount": {
"type": "number",
"description": "Matches for the query and filters before paging, or agents found for ids."
},
"truncated": {
"type": "boolean",
"description": "True when more matches exist beyond this page."
},
"shown": {
"type": "number",
"description": "Agents returned on this page."
},
"cap": {
"type": "number",
"description": "The limit applied to this page, or the number of ids requested."
},
"notice": {
"description": "Guidance when nothing matched, ids were missing, more pages exist, the reachable window is exhausted, or artwork counts could not be loaded.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `query_or_ids_required`: Neither query nor ids was given. `query_and_ids_conflict`: Both query and ids were given. `invalid_year_range`: born_from is later than born_to. `page_beyond_window`: page times limit exceeds 1,000, past the reachable search window. `rate_limited`: The Art Institute API throttled this server and retries ran out, or the shared request queue could not start the call in time. `request_blocked`: The Art Institute API's firewall blocked the request, as it does for markup or script-like text and for bursts of traffic. `upstream_rejected_query`: The Art Institute API rejected a request this server built from valid inputs. Other values are possible when a failure originates below the handler.",
"examples": [
"query_or_ids_required",
"query_and_ids_conflict",
"invalid_year_range",
"page_beyond_window",
"rate_limited",
"request_blocked",
"upstream_rejected_query"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"artists",
"page",
"has_more",
"artists_only_applied",
"license_text",
"totalCount",
"truncated",
"shown",
"cap"
]
},
{
"required": [
"error"
]
}
]
}🟢artic_search_exhibitions(query, when, date_from, date_to, sort, ...)
Search Art Institute of Chicago exhibitions by text and date: what is on now, what is coming, or past shows on a topic. Results carry dates, gallery, summary, web page, and the artworks shown when the museum lists them. Pass artwork ids to artic_get_artworks for full records.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"description": "Text matched against exhibition titles, descriptions, and other fields; every word must match.",
"type": "string",
"maxLength": 200
},
"when": {
"description": "current: open today; upcoming: opens after today; past: closed before today; any: no date condition.",
"default": "any",
"type": "string",
"enum": [
"any",
"current",
"upcoming",
"past"
]
},
"date_from": {
"description": "Earliest date, YYYY-MM-DD; an exhibition matches when its run overlaps date_from to date_to.",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"date_to": {
"description": "Latest date, YYYY-MM-DD; an exhibition matches when its run overlaps date_from to date_to.",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"sort": {
"description": "relevance ranks by query text; start_desc and start_asc sort by opening date. Defaults to relevance with a query, else start_desc; relevance without a query sorts as start_desc.",
"type": "string",
"enum": [
"relevance",
"start_desc",
"start_asc"
]
},
"page": {
"description": "Page to return (1-based, 1-40); page times limit may not exceed 1,000.",
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 40
},
"limit": {
"description": "Exhibitions per page (1-25).",
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"exhibitions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Exhibition id; no tool fetches an exhibition by id, so each row carries the full record."
},
"title": {
"type": "string",
"description": "Exhibition title; empty when the museum lists none."
},
"status": {
"description": "Museum status label (Closed, Confirmed, Traveling). It does not say whether the show is on now; the when filter does.",
"type": "string"
},
"start": {
"description": "Opening date and time, ISO 8601 with offset.",
"type": "string"
},
"end": {
"description": "Closing date and time, ISO 8601 with offset.",
"type": "string"
},
"gallery": {
"description": "Gallery where the exhibition is held.",
"type": "string"
},
"summary": {
"description": "Short description the museum wrote.",
"type": "string"
},
"web_url": {
"description": "Exhibition page on artic.edu.",
"type": "string"
},
"image_url": {
"description": "Exhibition image: an 843 px IIIF URL when the museum links an image id, else the museum's own image URL.",
"type": "string"
},
"is_featured": {
"description": "True when the museum features the exhibition; absent when not recorded.",
"type": "boolean"
},
"artwork_count": {
"type": "number",
"description": "Artworks the museum lists for the show; 0 when none."
},
"artworks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Artwork id; pass to artic_get_artworks."
},
"title": {
"description": "Artwork title; absent when the museum's id and title lists do not pair up.",
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false,
"description": "One artwork shown."
},
"description": "Artworks shown, when the museum lists them; pass ids to artic_get_artworks."
},
"artist_ids": {
"type": "array",
"items": {
"type": "number"
},
"description": "Ids of artists in the show; pass as ids to artic_search_artists or one as artist_id to artic_search_artworks."
}
},
"required": [
"id",
"title",
"artwork_count",
"artworks",
"artist_ids"
],
"additionalProperties": false,
"description": "One matching exhibition."
},
"description": "Matching exhibitions on this page, in ranked or sorted order."
},
"when_applied": {
"type": "string",
"enum": [
"any",
"current",
"upcoming",
"past"
],
"description": "The when condition applied."
},
"sort_applied": {
"type": "string",
"enum": [
"relevance",
"start_desc",
"start_asc"
],
"description": "Order applied."
},
"page": {
"type": "number",
"description": "Page returned (1-based)."
},
"has_more": {
"type": "boolean",
"description": "True when more matches exist beyond this page."
},
"next_page": {
"description": "Page to request next; absent when nothing remains or the next page would pass the first 1,000 matches.",
"type": "number"
},
"license_text": {
"type": "string",
"description": "License statement from the API for this data, verbatim."
},
"totalCount": {
"type": "number",
"description": "Matches for the query and filters, before paging."
},
"truncated": {
"type": "boolean",
"description": "True when more matches exist beyond this page."
},
"shown": {
"type": "number",
"description": "Exhibitions returned on this page."
},
"cap": {
"type": "number",
"description": "The limit applied to this page."
},
"notice": {
"description": "Guidance when nothing matched, more pages exist, or the reachable window is exhausted.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `invalid_date_range`: date_from is later than date_to. `page_beyond_window`: The API refused the page as past the first 1,000 matches (the page and limit bounds keep calls inside it). `rate_limited`: The Art Institute API throttled this server and retries ran out, or the shared request queue could not start the call in time. `request_blocked`: The Art Institute API's firewall blocked the request, as it does for markup or script-like text and for bursts of traffic. `upstream_rejected_query`: The Art Institute API rejected a request this server built from valid inputs. Other values are possible when a failure originates below the handler.",
"examples": [
"invalid_date_range",
"page_beyond_window",
"rate_limited",
"request_blocked",
"upstream_rejected_query"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"exhibitions",
"when_applied",
"sort_applied",
"page",
"has_more",
"license_text",
"totalCount",
"truncated",
"shown",
"cap"
]
},
{
"required": [
"error"
]
}
]
}🟢artic_search_audio_guide(query, page, limit)
Search the Art Institute of Chicago's mobile audio-guide stops by text, matching stop titles and transcripts. Returns each stop's title, MP3 URL, and transcript text. Stops carry no artwork id, so match a stop to a work by its title; for a known artwork, artic_get_artworks related_media lists the recordings linked to it. Some stops are in Spanish, and titles are sometimes internal file names. This content is for noncommercial educational and personal use only: keep the copyright notice and cite the Art Institute of Chicago.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Text matched against stop titles and transcripts; every word must match. An artwork's title or the artist's surname works well."
},
"page": {
"description": "Page to return (1-based); page times limit may not exceed 1,000.",
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 200
},
"limit": {
"description": "Stops per page (1-20).",
"default": 5,
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"stops": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Audio-guide stop id; no tool fetches a stop by id, so each row carries the full stop."
},
"title": {
"type": "string",
"description": "Stop title; sometimes an internal file name, and empty when the museum lists none."
},
"audio_url": {
"description": "MP3 URL of the recording, already percent-encoded; absent when none is recorded.",
"type": "string"
},
"transcript": {
"description": "Transcript of the recording, sometimes in Spanish; absent when the museum has none.",
"type": "string"
}
},
"required": [
"id",
"title"
],
"additionalProperties": false,
"description": "One matching audio-guide stop."
},
"description": "Matching stops on this page, in relevance order."
},
"page": {
"type": "number",
"description": "Page returned (1-based)."
},
"has_more": {
"type": "boolean",
"description": "True when more matches exist beyond this page."
},
"next_page": {
"description": "Page to request next; absent when nothing remains or the next page would pass the first 1,000 matches.",
"type": "number"
},
"license_text": {
"type": "string",
"description": "License statement from the API, verbatim: noncommercial educational and personal use, with notices retained and the source cited."
},
"source_citation": {
"type": "string",
"description": "Citation to keep with any use of this content."
},
"totalCount": {
"type": "number",
"description": "Matches for the query, before paging."
},
"truncated": {
"type": "boolean",
"description": "True when more matches exist beyond this page."
},
"shown": {
"type": "number",
"description": "Stops returned on this page."
},
"cap": {
"type": "number",
"description": "The limit applied to this page."
},
"notice": {
"description": "Guidance when nothing matched, more pages exist, or the reachable window is exhausted.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `page_beyond_window`: page times limit exceeds 1,000, past the reachable search window. `rate_limited`: The Art Institute API throttled this server and retries ran out, or the shared request queue could not start the call in time. `request_blocked`: The Art Institute API's firewall blocked the request, as it does for markup or script-like text and for bursts of traffic. `upstream_rejected_query`: The Art Institute API rejected a request this server built from valid inputs. Other values are possible when a failure originates below the handler.",
"examples": [
"page_beyond_window",
"rate_limited",
"request_blocked",
"upstream_rejected_query"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"stops",
"page",
"has_more",
"license_text",
"source_citation",
"totalCount",
"truncated",
"shown",
"cap"
]
},
{
"required": [
"error"
]
}
]
}🟢artic_lookup_vocabulary(vocabulary, contains, public_domain_only, limit)
List the values of an Art Institute of Chicago collection vocabulary with how many artworks carry each, most common first, optionally narrowed by a substring. Each value passes to the artic_search_artworks filter of the same name exactly as listed (case is ignored). Counts here span the whole collection; for counts within a filtered set of artworks, request facets from artic_search_artworks.
Eingabe-Schema
{
"type": "object",
"properties": {
"vocabulary": {
"type": "string",
"enum": [
"department",
"artwork_type",
"style",
"subject",
"classification",
"material",
"technique",
"theme",
"place_of_origin",
"gallery"
],
"description": "Vocabulary to list; its values feed the artic_search_artworks filter of the same name."
},
"contains": {
"description": "Case- and accent-insensitive substring the values must contain, such as \"impress\" for Impressionism and Post-Impressionism, or \"applique\" for appliqué (technique). Omit to list the most common values.",
"type": "string",
"maxLength": 60
},
"public_domain_only": {
"description": "Count only public-domain artworks.",
"default": false,
"type": "boolean"
},
"limit": {
"description": "Values to return, most common first (1-100).",
"default": 25,
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"vocabulary"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"vocabulary": {
"type": "string",
"enum": [
"department",
"artwork_type",
"style",
"subject",
"classification",
"material",
"technique",
"theme",
"place_of_origin",
"gallery"
],
"description": "The vocabulary listed."
},
"filter_param": {
"type": "string",
"enum": [
"department",
"artwork_type",
"style",
"subject",
"classification",
"material",
"technique",
"theme",
"place_of_origin",
"gallery"
],
"description": "The artic_search_artworks parameter that accepts these values as listed."
},
"values": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value as the index stores it (place values are lower-case without accents); pass it back verbatim."
},
"artwork_count": {
"type": "number",
"description": "Artworks carrying this value."
}
},
"required": [
"value",
"artwork_count"
],
"additionalProperties": false,
"description": "One vocabulary value and its artwork count."
},
"description": "Values, most common first."
},
"truncated": {
"type": "boolean",
"description": "True when more values exist beyond the limit."
},
"shown": {
"type": "number",
"description": "Values returned."
},
"cap": {
"type": "number",
"description": "The limit applied."
},
"notice": {
"description": "Guidance when no value matched or the list was capped.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `rate_limited`: The Art Institute API throttled this server and retries ran out, or the shared request queue could not start the call in time. `request_blocked`: The Art Institute API's firewall blocked the request, as it does for markup or script-like text and for bursts of traffic. `upstream_rejected_query`: The Art Institute API rejected a request this server built from valid inputs. Other values are possible when a failure originates below the handler.",
"examples": [
"rate_limited",
"request_blocked",
"upstream_rejected_query"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"vocabulary",
"filter_param",
"values",
"truncated",
"shown",
"cap"
]
},
{
"required": [
"error"
]
}
]
}Community
Nachweis