Skip to main content
Glama

art-institute-chicago-mcp-server

Search artists

artic_search_artists
Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
idsNoAgent ids as an array or comma-separated string, up to 1,000 supplied entries including blanks and duplicates. Comma strings also have a 100,000-character ceiling. Blanks and duplicates are dropped; fetches the first 100 and returns deferred_ids. Pass query or ids, not both; other filters and page apply to query only.
pageNoQuery mode: page to return (1-based); page times the applied limit may not exceed 1,000.
limitNoQuery mode: requested agents per page (1-1,000); at most 100 are returned.
queryNoName to find, matched against names and alternate names; every word must match. Pass query or ids, not both.
born_toNoQuery mode: latest birth year, negative for BCE.
born_fromNoQuery mode: earliest birth year, negative for BCE.
artists_onlyNoQuery mode: only agents the museum records as artists. Set false to include donors, funds, and organizations.

Output Schema

NameRequiredDescriptionDefault
capNoThe limit applied to this page, or the number of ids attempted (up to 100).
pageNoPage returned (1-based); always 1 when ids were passed.
errorNoPresent when the call failed. Absent on success.
shownNoAgents returned on this page.
noticeNoGuidance when nothing matched, ids were missing, more pages exist, the reachable window is exhausted, or artwork counts could not be loaded.
artistsNoMatching agents: in relevance order for a name search, in request order for ids.
has_moreNoTrue when more query matches exist beyond this page, or ids mode has deferred ids.
next_pageNoPage to request next; absent when nothing remains or the next page would pass the first 1,000 matches.
truncatedNoTrue when more query matches exist beyond this page, or ids mode has deferred ids.
totalCountNoMatches for the query and filters before paging, or agents found among attempted ids.
missing_idsNoAttempted ids with no agent, in request order; present in ids mode. Deferred ids have not been checked.
deferred_idsNoUnattempted ids beyond the first 100, in request order; pass them as ids to artic_search_artists again. Present in ids mode.
license_textNoLicense statement from the API for this data, verbatim.
artists_only_appliedNoWhether results were limited to artists; always false when ids were passed, since every requested agent is returned.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / ids / description
      Previous value: -"Agent ids as an array or comma-separated string, up to 1,000 supplied entries including blanks and duplicates. Comma strings also have a 100,000-character ceiling. Blanks and duplicates are dropped; fetches the first 25 and returns deferred_ids. Pass query or ids, not both; other filters and page apply to query only."New value: +"Agent ids as an array or comma-separated string, up to 1,000 supplied entries including blanks and duplicates. Comma strings also have a 100,000-character ceiling. Blanks and duplicates are dropped; fetches the first 100 and returns deferred_ids. Pass query or ids, not both; other filters and page apply to query only."
    • changedInput schema / properties / limit / description
      Previous value: -"Query mode: requested agents per page (1-1,000); at most 25 are returned."New value: +"Query mode: requested agents per page (1-1,000); at most 100 are returned."
    • changedOutput schema / properties / cap / description
      Previous value: -"The limit applied to this page, or the number of ids attempted (up to 25)."New value: +"The limit applied to this page, or the number of ids attempted (up to 100)."
    • changedOutput schema / properties / deferred_ids / description
      Previous value: -"Unattempted ids beyond the first 25, in request order; pass them as ids to artic_search_artists again. Present in ids mode."New value: +"Unattempted ids beyond the first 100, in request order; pass them as ids to artic_search_artists again. Present in ids mode."
  2. Changed14 schema fields changed
    • changedInput schema / properties / ids / description
      Previous value: -"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."New value: +"Agent ids as an array or comma-separated string, up to 1,000 supplied entries including blanks and duplicates. Comma strings also have a 100,000-character ceiling. Blanks and duplicates are dropped; fetches the first 25 and returns deferred_ids. Pass query or ids, not both; other filters and page apply to query only."
    • changedInput schema / properties / ids / maxItems
      Previous value: -25New value: +1000
    • changedInput schema / properties / limit / description
      Previous value: -"Query mode: agents per page (1-25)."New value: +"Query mode: requested agents per page (1-1,000); at most 25 are returned."
    • changedInput schema / properties / limit / maximum
      Previous value: -25New value: +1000
    • changedInput schema / properties / page / description
      Previous value: -"Query mode: page to return (1-based); page times limit may not exceed 1,000."New value: +"Query mode: page to return (1-based); page times the applied limit may not exceed 1,000."
    • changedInput schema / properties / page / maximum
      Previous value: -100New value: +1000
    • addedOutput schema / properties / artists / items / properties / ulan_id
      Added value: +{
      +  "description": "Getty ULAN authority identifier when recorded; sparse coverage. Distinct from the museum agent id used in other tools.",
      +  "exclusiveMinimum": 0,
      +  "maximum": 9007199254740991,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / cap / description
      Previous value: -"The limit applied to this page, or the number of ids requested."New value: +"The limit applied to this page, or the number of ids attempted (up to 25)."
    • addedOutput schema / properties / deferred_ids
      Added value: +{
      +  "description": "Unattempted ids beyond the first 25, in request order; pass them as ids to artic_search_artists again. Present in ids mode.",
      +  "items": {
      +    "type": "number"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"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."New value: +"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 the applied 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."
    • changedOutput schema / properties / has_more / description
      Previous value: -"True when more matches exist beyond this page."New value: +"True when more query matches exist beyond this page, or ids mode has deferred ids."
    • changedOutput schema / properties / missing_ids / description
      Previous value: -"Requested ids with no agent, in request order; present when ids were passed."New value: +"Attempted ids with no agent, in request order; present in ids mode. Deferred ids have not been checked."
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Matches for the query and filters before paging, or agents found for ids."New value: +"Matches for the query and filters before paging, or agents found among attempted ids."
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when more matches exist beyond this page."New value: +"True when more query matches exist beyond this page, or ids mode has deferred ids."
  3. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/openWorld, so the bar is lower; the description adds real value by disclosing the result payload (life dates, agent type, alternate names, artwork credit counts, up to three works with highlighted ones first). It omits paging behavior and the deferred_ids overflow, though those are covered in the schema.

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

Conciseness5/5

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

Two sentences, front-loaded with the primary capability, then the payload, then the cross-tool handoff. No filler and no repetition of schema text.

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

Completeness4/5

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

For a dual-mode, 7-parameter search tool with an output schema, the description covers purpose, payload shape, and the follow-up call. The remaining gaps (query/ids exclusivity, 100-per-page cap, deferred_ids) are documented in the schema, so nothing critical is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by framing the two modes (name vs id) and explaining that the returned id is the value artic_search_artworks expects as artist_id. It also implies artists_only=false widens scope to organizations and cultures, though it never names the filters born_from/born_to.

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?

States a specific verb ('Find') plus the exact resource ('artists, cultures, and organizations in the Art Institute of Chicago collection') and covers both operating modes (name search and id fetch). An agent can immediately distinguish this from artic_search_artworks, which searches works rather than agents.

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

Usage Guidelines4/5

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

Gives clear usage context: search by name, or fetch by id, and explicitly routes the agent onward ('Pass an id to artic_search_artworks as artist_id to browse all of their works'). It stops short of stating when NOT to use it, and the query/ids mutual exclusion lives only in the schema, not the description.

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.