Skip to main content
Glama
mildlydiverting

whitney-museum-mcp-server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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:

  • title, artist, medium, date (string, optional): substring matches

  • classification (string, optional): exact match, e.g. "Drawings"

  • department ('collection' | 'artport' | 'special', optional)

  • on_view (boolean, optional)

  • sort ('default' | 'title_asc' | 'title_desc' | 'most_viewed' | 'random')

  • page (number, default 1), limit (number, 1-30, default 10)

  • response_format ('markdown' | 'json', default 'markdown')

Returns: { total, count, page, has_more, next_page?, results[], note? }

Examples:

  • "watercolours with flowers in the title" -> title="flower", classification="Drawings", medium="watercolor"

  • "show me something at random from the collection" -> sort="random", limit=3

Notes:

  • Medium spellings follow US usage ("watercolor", "color").

  • Date is free text ("1915-1931, printed 1976-1977"), so filter loosely and check results.

whitney_get_artworkA

Fetch one artwork's full record by ID.

Args:

  • id (string): the artwork's TMS ID, as returned by whitney_search_artworks

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • name (string, optional): substring match on the display name

  • in_collection, in_biennial, on_view (boolean, optional)

  • sort ('default' | 'name_asc' | 'name_desc' | 'most_viewed' | 'random')

  • page (number, default 1), limit (number, 1-30, default 10)

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • id (string): TMS ID or 'T'-prefixed reference

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • id (string): artist ID

  • page (number, default 1), limit (number, 1-30, default 10)

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • id (string): artist ID

  • page (number, default 1), limit (number, 1-30, default 10)

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • title (string, optional): substring match

  • filters (object, optional): raw Ransack predicates for fields this tool does not expose

  • sort (string, optional): e.g. 'start_time desc', 'random'

  • starts_on_or_after / starts_on_or_before (string, optional): ISO dates (YYYY-MM-DD) filtering on start_time

  • page (number, default 1), limit (number, 1-30, default 10)

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • id (string): exhibition ID, as returned by whitney_search_exhibitions

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • title (string, optional): substring match

  • filters (object, optional): raw Ransack predicates

  • sort (string, optional): e.g. 'start_time desc'

  • starts_on_or_after / starts_on_or_before (string, optional): ISO dates (YYYY-MM-DD) filtering on start_time

  • page (number, default 1), limit (number, 1-30, default 10)

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • title (string, optional), filters (object, optional), sort (string, optional)

  • page (number, default 1), limit (number, 1-30, default 10)

  • response_format ('markdown' | 'json', default 'markdown')

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:

  • endpoint ('artists' | 'artworks' | 'exhibitions' | 'events' | 'guides' | 'pages')

  • id (string, optional): fetch a single record instead of a list

  • filters (object, optional): raw predicates, e.g. { "medium_cont_all_split": "graphite paper" }

  • sort (string, optional): e.g. 'popularity desc'

  • page (number, default 1), limit (number, 1-30, default 10)

  • response_format ('markdown' | 'json', default 'markdown')

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.3/5.0

Scored across 11 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues