Skip to main content
Glama
whitney-museum-mcp-server

whitney-museum-mcp-server

whitney-mcp-ts

Whitney Museumの公開API用のMCPサーバーです。Claude Desktopや任意のMCPクライアントから、コレクション、アーティスト、展覧会、イベント、オーディオガイドを検索できます。

CI API canary npm

TypeScript製、stdioのみ対応。APIのRansack構文にフレンドリーなパラメータをマッピングし、帰属情報を添付し、モデルのコンテキストで扱いやすいようにレスポンスを切り詰めます。

WhitneyのAPIはオープンで認証不要です。APIキーは不要です。

インストール

npx whitney-mcp-ts

またはソースから:

git clone https://github.com/mildlydiverting/whitney-mcp-ts.git
cd whitney-mcp-ts
npm install
npm run build

Node 20以降が必要です。

Related MCP server: Wikipedia MCP Server

Claude Desktop

claude_desktop_config.json に追加:

{
  "mcpServers": {
    "whitney": {
      "command": "npx",
      "args": ["-y", "whitney-mcp-ts"]
    }
  }
}

ソースから使う場合は、ビルドを指定します:

{
  "mcpServers": {
    "whitney": {
      "command": "node",
      "args": ["/absolute/path/to/whitney-mcp-ts/dist/index.js"]
    }
  }
}

Claude Desktopを終了して再起動してください。設定では ~ は展開されないので、フルパスを使用してください。

ツール

ツール

機能

whitney_search_artworks

タイトル、アーティスト、分類、技法、日付、展示中かどうかで27,000点以上の作品を検索

whitney_get_artwork

1作品の完全なレコード — 寸法、クレジットライン、説明、画像URL

whitney_search_artists

7,000人以上のアーティストを検索。コレクション、ビエンナーレ、展示中で絞り込み

whitney_get_artist

アーティストの完全なレコード。経歴、Getty ULAN、Wikidata IDを含む

whitney_artist_artworks

指定したアーティストの作品

whitney_artist_exhibitions

指定したアーティストが参加した展覧会

whitney_search_exhibitions

1931年以降の展覧会を日付フィルタ付きで検索

whitney_get_exhibition

1件の展覧会レコード

whitney_search_events

2008年以降のトーク、ツアー、プログラムを検索

whitney_search_guides

2009年以降に公開されたオーディオガイドを検索

whitney_query

任意のエンドポイント。生のRansack述語を使用

期待できること

検索結果は簡潔なレコードです。

Whitneyのレコードには長いHTMLの説明や経歴が含まれるため、検索では基本情報を返し、whitney_get_* で完全な情報を返します。散文は2,000文字、レスポンス全体は25,000文字で切り詰められます。

ページネーションは1ページ30件です。

これはAPIのページサイズです。page でページを選び、limit でさらに絞り込みます。デフォルトの10件は、広い検索でコンテキストが溢れるのを防ぎます。

検索構文はRansackです

述語は q の下にネストします(_eq、_cont、_cont_all_split、_gteq など)。並べ替えは q[s] の下です。型付きツールはフレンドリーな引数をこれらにマッピングします。whitney_query は、型付きツールが届かないもののために生の述語を公開します。

アーティストと作品のフィールドは明示的にマッピングされています。

展覧会、イベント、ガイド、ページは代わりに汎用サマライザーを通します。HTMLを除去し、タイムスタンプを日付に短縮し、相対URLを絶対URLにし、内部外部キーを削除します。美術館はフィールドセットが変更される可能性があると述べているため、必要でないものはハードコードされていません。limit: 1 で検索して実際のフィールド名を確認し、特定のものには filters を使用してください。

帰属情報

すべてのレスポンスは、美術館の名前と利用規約へのリンクを含むソース行で終わります。詳細レコードには2つの帰属フィールドもあります。

  • rights — 著作権表示。Whitney自身の説明テキストから抽出

  • citation — 既製のMarkdown行。例:

Edward Hopper, Early Sunday Morning, 1930. Whitney Museum of American Art, © Heirs of Josephine N. Hopper/Licensed by Artists Rights Society (ARS), New York.

権利者は通常アーティストではないことに注意してください。10作品のサンプルでは、9作品が異なっていました。遺産管理団体、財団、ARSやVAGAなどの権利団体です。したがって、rights は推測せずに読む価値があります。これはWhitneyの利用規約が保持を求める表示です。

著作権表示のない作品(主に古い資料)は、美術館リンクの後で終わる引用になります。

一括データ

大規模なものには、APIをページングしないでください。Whitneyはアーティストと作品のCSVを https://github.com/whitneymuseum/open-access で公開しており、CC0でリリースされています。

既知のAPIの癖

  • sort: "random" は確実にランダム化されません。3件のランダムな作品を要求すると、同じアーティストの連続した3つの受入番号が返されました。本当にランダムが必要な場合は、代わりにランダムなページ番号を要求してください。

  • 作品の display_date は自由テキストです(例: "1915–1931, printed 1976–1977")。そのため、日付範囲はそこで機能しません。展覧会とイベントには実際のタイムスタンプがあり、starts_on_or_after / starts_on_or_before でフィルタリングできます。

  • 存命のアーティストは death_year: "0" を持ちます。これで算術演算をしないでください。

  • Ransackは認識できない述語をエラーにせず無視するため、フィールド名のスペルミスは静かにすべてを返します。結果の件数を確認してください。

セキュリティ

WhitneyのAPIはキーを必要としないため、認証情報はなく、漏洩するものも設定するものもありません。

すべてのツールは読み取り専用です。サーバーは whitney.org へのGETリクエストのみを行い、他には何もしません。ファイルシステムアクセス、シェル、書き込みはありません。エンドポイント名は固定リストから取得され、レコードIDはURLエンコードされ、フィルタパラメータは URLSearchParams を通ります。

既知の制限が1つあります。HTMLからMarkdownへの変換はネストされた量指定子を持つ正規表現を使用するため、意図的に不正な入力でバックトラッキングが悪化する可能性があります。入力はユーザーではなくWhitney自身のCMSから来るため、これが発生した場合、NYCで何かが非常にうまくいっていないことであり、おそらく私の責任ではありません。

何か見つけたら、issueを開いてください。

開発

npm test              # unit tests, offline
npm run test:canary   # live checks against the Whitney API
npm run inspect       # MCP Inspector against the built server

カナリアスイートはCIで毎月実行されます。これはWhitneyがフィールド名を変更するのを検出するためのものです。ユニットテストは保存されたフィクスチャに対して実行されるため、その失敗モードは見えません。

ライセンス

コード: MIT License。

WhitneyはAPIを次の注記とともに提供しています:

The data accessed through this API may be protected by copyright, and other restrictions, of the Whitney Museum of American Art and third parties. You may use this data for noncommercial educational and personal use and for "fair use" as authorized under law, provided that you also retain all copyright and other proprietary notices contained on the materials and cite the author and source of the materials.

公開するものを作る前に、https://whitney.org/about/website/api で利用規約を読んでください。

上記のCSVデータセットはCC0であり、APIの利用規約よりも寛容な場合があることに注意してください。

Whitney Museum of American Artとは提携していません。これは彼らの公開APIのサードパーティラッパーであり、https://whitney.org/about/website/api に文書化されています。

謝辞

Sam Parsonsの whitney-museum-mcp も参照してください。同じAPIに対するPython/FastMCPサーバーで、DockerとHTTPトランスポートを備えています。

Whitneyのデジタルチームに、APIを公開し、適切に文書化してくれたことに感謝します。また、claude codeを使っていると明示的に書いてある素敵なブログ記事を書いてくれたことにも感謝します。それがあるおかげで、この全体をvibe codingした罪悪感が軽減されるからです。

Available Tools

11 tools
whitney_artist_artworksList an artist's artworksA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
idYesArtist ID — a TMS ID like '962', or an internal reference prefixed with 'T'
pageNo1-based page number; the API returns 30 records per page
limitNoMaximum records to return from the fetched page (1-30). Keep this low unless you need the detail — Whitney records are verbose.
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown

Output Schema

NameRequiredDescription
noteNoAdvisory note about trimming or pagination
pageYesPage that was fetched
countYesRecords returned in this response
totalYesTotal matching records across all pages
sourceYesAttribution for the data, as the Whitney's terms ask for
resultsYesThe records
has_moreYesWhether further pages exist
next_pageNoPage number to request next
whitney_artist_exhibitionsList an artist's exhibitionsA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
idYesArtist ID — a TMS ID like '962', or an internal reference prefixed with 'T'
pageNo1-based page number; the API returns 30 records per page
limitNoMaximum records to return from the fetched page (1-30). Keep this low unless you need the detail — Whitney records are verbose.
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown

Output Schema

NameRequiredDescription
noteNoAdvisory note about trimming or pagination
pageYesPage that was fetched
countYesRecords returned in this response
totalYesTotal matching records across all pages
sourceYesAttribution for the data, as the Whitney's terms ask for
resultsYesThe records
has_moreYesWhether further pages exist
next_pageNoPage number to request next
whitney_get_artistGet a Whitney artistA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
idYesArtist ID — a TMS ID like '962', or an internal reference prefixed with 'T'
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown

Output Schema

NameRequiredDescription
recordYesThe full record
sourceYesAttribution for the data, as the Whitney's terms ask for
whitney_get_artworkGet a Whitney artworkA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
idYesArtwork ID (the TMS ID, e.g. '38804')
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown

Output Schema

NameRequiredDescription
recordYesThe full record
sourceYesAttribution for the data, as the Whitney's terms ask for
whitney_get_exhibitionGet a Whitney exhibitionA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
idYesRecord ID
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown

Output Schema

NameRequiredDescription
recordYesThe full record
sourceYesAttribution for the data, as the Whitney's terms ask for
whitney_queryRaw Whitney API queryA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
idNoFetch one record by ID instead of listing
pageNo1-based page number; the API returns 30 records per page
sortNoRansack sort string
limitNoMaximum records to return from the fetched page (1-30). Keep this low unless you need the detail — Whitney records are verbose.
filtersNoRaw Ransack predicates, e.g. { "title_cont": "moon", "classification_eq": "Paintings" }. Matchers: _eq, _not_eq, _cont, _not_cont, _cont_all_split, _true, _false, _gt, _gteq, _lt, _lteq.
endpointYesWhich API endpoint to query
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown
whitney_search_artistsSearch Whitney artistsA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
nameNoWords appearing in the artist's display name
pageNo1-based page number; the API returns 30 records per page
sortNoResult orderingdefault
limitNoMaximum records to return from the fetched page (1-30). Keep this low unless you need the detail — Whitney records are verbose.
on_viewNoRestrict to artists with work currently on view
in_biennialNoRestrict to artists who have shown in a Whitney Biennial
in_collectionNoRestrict to artists with work in the collection
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown

Output Schema

NameRequiredDescription
noteNoAdvisory note about trimming or pagination
pageYesPage that was fetched
countYesRecords returned in this response
totalYesTotal matching records across all pages
sourceYesAttribution for the data, as the Whitney's terms ask for
resultsYesThe records
has_moreYesWhether further pages exist
next_pageNoPage number to request next
whitney_search_artworksSearch Whitney artworksA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
dateNoWords in the display date, e.g. '1977'. This is a free-text field, not a number, so ranges are unreliable
pageNo1-based page number; the API returns 30 records per page
sortNoResult ordering; 'most_viewed' ranks by views over the last 30 daysdefault
limitNoMaximum records to return from the fetched page (1-30). Keep this low unless you need the detail — Whitney records are verbose.
titleNoWords appearing in the title (substring match)
artistNoWords appearing in the artist credit line, e.g. 'Divola'
mediumNoWords appearing in the medium, e.g. 'watercolour', 'lithograph'
on_viewNoRestrict to works currently on view
departmentNoWhich collection the work belongs to
classificationNoExact classification; casing matters. Common values: Paintings, Drawings, Prints, Photographs, Sculpture, Installations, Film and Video, Time-based Media
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown

Output Schema

NameRequiredDescription
noteNoAdvisory note about trimming or pagination
pageYesPage that was fetched
countYesRecords returned in this response
totalYesTotal matching records across all pages
sourceYesAttribution for the data, as the Whitney's terms ask for
resultsYesThe records
has_moreYesWhether further pages exist
next_pageNoPage number to request next
whitney_search_eventsSearch Whitney eventsA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
pageNo1-based page number; the API returns 30 records per page
sortNoRansack sort string, e.g. 'start_time desc', 'title asc', or 'random'
limitNoMaximum records to return from the fetched page (1-30). Keep this low unless you need the detail — Whitney records are verbose.
titleNoWords appearing in the title
filtersNoRaw Ransack predicates, e.g. { "title_cont": "moon", "classification_eq": "Paintings" }. Matchers: _eq, _not_eq, _cont, _not_cont, _cont_all_split, _true, _false, _gt, _gteq, _lt, _lteq.
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown
starts_on_or_afterNoISO date (YYYY-MM-DD); keep records starting on or after this date
starts_on_or_beforeNoISO date (YYYY-MM-DD); keep records starting on or before this date

Output Schema

NameRequiredDescription
noteNoAdvisory note about trimming or pagination
pageYesPage that was fetched
countYesRecords returned in this response
totalYesTotal matching records across all pages
sourceYesAttribution for the data, as the Whitney's terms ask for
resultsYesThe records
has_moreYesWhether further pages exist
next_pageNoPage number to request next
whitney_search_exhibitionsSearch Whitney exhibitionsA
Read-onlyIdempotent

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.

NameRequiredDescriptionDefault
pageNo1-based page number; the API returns 30 records per page
sortNoRansack sort string, e.g. 'start_time desc', 'title asc', or 'random'
limitNoMaximum records to return from the fetched page (1-30). Keep this low unless you need the detail — Whitney records are verbose.
titleNoWords appearing in the title
filtersNoRaw Ransack predicates, e.g. { "title_cont": "moon", "classification_eq": "Paintings" }. Matchers: _eq, _not_eq, _cont, _not_cont, _cont_all_split, _true, _false, _gt, _gteq, _lt, _lteq.
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown
starts_on_or_afterNoISO date (YYYY-MM-DD); keep records starting on or after this date
starts_on_or_beforeNoISO date (YYYY-MM-DD); keep records starting on or before this date

Output Schema

NameRequiredDescription
noteNoAdvisory note about trimming or pagination
pageYesPage that was fetched
countYesRecords returned in this response
totalYesTotal matching records across all pages
sourceYesAttribution for the data, as the Whitney's terms ask for
resultsYesThe records
has_moreYesWhether further pages exist
next_pageNoPage number to request next
whitney_search_guidesSearch Whitney audio guidesA
Read-onlyIdempotent

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[] }

NameRequiredDescriptionDefault
pageNo1-based page number; the API returns 30 records per page
sortNoRansack sort string, e.g. 'start_time desc', 'title asc', or 'random'
limitNoMaximum records to return from the fetched page (1-30). Keep this low unless you need the detail — Whitney records are verbose.
titleNoWords appearing in the title
filtersNoRaw Ransack predicates, e.g. { "title_cont": "moon", "classification_eq": "Paintings" }. Matchers: _eq, _not_eq, _cont, _not_cont, _cont_all_split, _true, _false, _gt, _gteq, _lt, _lteq.
response_formatNoOutput format: 'markdown' for reading, 'json' for machine processingmarkdown

Output Schema

NameRequiredDescription
noteNoAdvisory note about trimming or pagination
pageYesPage that was fetched
countYesRecords returned in this response
totalYesTotal matching records across all pages
sourceYesAttribution for the data, as the Whitney's terms ask for
resultsYesThe records
has_moreYesWhether further pages exist
next_pageNoPage number to request next

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedwhitney_artist_artworks
    • First observedwhitney_artist_exhibitions
    • First observedwhitney_get_artist
    • First observedwhitney_get_artwork
    • First observedwhitney_get_exhibition
    • First observedwhitney_query
    • First observedwhitney_search_artists
    • First observedwhitney_search_artworks
    • First observedwhitney_search_events
    • First observedwhitney_search_exhibitions
    • First observedwhitney_search_guides

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

ActivitySlowing
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers