whitney-museum-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whitney_search_artworksA | Search the Whitney Museum's online collection of 27,000+ works. Returns slim records (id, title, artist, date, medium, classification, on view, first image URL). Call whitney_get_artwork for the full record including dimensions, credit line, description and all images. Args:
Returns: { total, count, page, has_more, next_page?, results[], note? } Examples:
Notes:
|
| whitney_get_artworkA | Fetch one artwork's full record by ID. Args:
Returns: { record: { id, title, artist, artist_ids[], date, medium, dimensions, classification, department, accession_number, credit_line, on_view, description, object_label, visual_description, alt_text, images[], page_url } } Fields are omitted when empty. Alt text is human-written where available and AI-generated otherwise; alt_text_is_ai_generated flags which. Errors: returns a 404 message if the ID does not exist. |
| whitney_search_artistsA | Search the 7,000+ artists listed by the Whitney — those with work in the collection and those who have appeared in Museum exhibitions. Returns slim records (id, name, dates, in_collection, in_biennial, on_view). Call whitney_get_artist for the biography and authority IDs. Args:
Returns: { total, count, page, has_more, next_page?, results[], note? } Example: "which O'Keeffes are in the collection?" -> search name="O'Keeffe", then whitney_artist_artworks with the returned id. |
| whitney_get_artistA | Fetch one artist's full record, including their biography where the Museum has published one. Args:
Returns: { record: { id, name, sort_name, dates, birth_year, death_year, in_collection, in_biennial, in_artport, on_view, ulan_id, wikidata_id, biography, page_url } } The biography is stripped of HTML and truncated. ulan_id (Getty ULAN) and wikidata_id are useful for cross-referencing other sources. |
| whitney_artist_artworksA | List the collection works by one artist. Args:
Returns: { total, count, page, has_more, next_page?, results[] } with slim artwork records. Use this rather than whitney_search_artworks with an artist name — it matches on the artist record rather than the credit line, so collaborative and attributed works are handled correctly. |
| whitney_artist_exhibitionsA | List Whitney exhibitions featuring one artist. Args:
Returns: { total, count, page, has_more, next_page?, results[] }. Exhibition fields are passed through generically (HTML stripped, long prose truncated), because the Museum documents these fields as subject to change. Coverage is fuller for recent decades than for the Museum's early history. |
| whitney_search_exhibitionsA | Search exhibitions mounted by the Whitney, going back to 1931. Records are fuller for recent decades and sparse for the Museum's early history. Args:
Returns: { total, count, page, has_more, next_page?, results[] } Exhibition fields are passed through generically — the Museum documents its field set as subject to change, so this tool keeps whatever scalar fields the API returns, strips HTML, shortens timestamps to dates and drops internal IDs. Known fields include title, start_time, end_time, date_override, url, primary_text, press_highlights and popularity. Run one search with limit=1 to confirm before writing a 'filters' query. |
| whitney_get_exhibitionA | Fetch one exhibition record by ID. Args:
Returns: { record: {...} } — fields as published by the API, HTML stripped. |
| whitney_search_eventsA | Search Museum events — talks, tours, public programmes and so on — going back to 2008. This list is largely comprehensive. Args:
Returns: { total, count, page, has_more, next_page?, results[] } As with exhibitions, fields are passed through generically. Sort by 'start_time desc' for the most recent programming. |
| whitney_search_guidesA | Search audio guides published since 2009. Fetching an individual guide also returns its stops. Args:
Returns: { total, count, page, has_more, next_page?, results[] } |
| whitney_queryA | Escape hatch for queries the typed tools do not cover. Hits any endpoint with arbitrary Ransack predicates. Args:
Returns: a list result, or { record: {...} } when 'id' is supplied. Prefer the typed tools where they fit — they return tidier records. Use this to discover field names, combine unusual predicates, or reach the 'pages' endpoint. Note that 'pages' mirrors the Museum's CMS structure and is rarely useful outside it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each resource has a clear search/get or relationship tool, and the overlap between whitney_artist_artworks and whitney_search_artworks is explicitly resolved in the descriptions. whitney_query is positioned as an escape hatch for unsupported queries, not as a competing primary tool.
The whitney_ prefix with search_/get_ resource names forms a clear pattern for most tools. The exceptions are whitney_artist_artworks and whitney_artist_exhibitions, which use a possessive noun style rather than a verb_noun style, and whitney_query, which is a one-off.
11 tools is well-scoped for a museum API covering artists, artworks, exhibitions, events, and guides, plus relationship helpers and a query escape hatch. Each tool has a distinct job and none feel redundant.
Core read-only workflows are covered: search and detail retrieval exist for artworks, artists, and exhibitions, and searches exist for events and guides. The main gap is the lack of typed getters for individual events and guides, which the guide description implies should exist; whitney_query can work around this but it is less discoverable.