Search the Metropolitan Museum of Art collection, fetch full artwork records and open-access images via MCP. STDIO or Streamable HTTP.
Strong tool definitions with excellent descriptions and comprehensive parameter documentation. All three tools have clear, detailed descriptions (194 - 1024 chars) that explain WHAT, WHEN, and WHY. Input schemas are fully specified with types, descriptions, and constraints. Tool names follow verb_noun convention (met_list_*, met_search_*, met_get_*). Key strength: parameter descriptions are exceptionally thorough, including caveats about partial indexes and filter behavior. Weakness: no output schemas documented; error handling guidance is absent; no tool annotations (readOnlyHint present in metadata but not in schema). met_search_collections is particularly well-documented with nuanced guidance on filter limitations.
Fetch full records for one or more Met object IDs.
Return the 19 curatorial departments at The Metropolitan Museum of Art, each with its numeric departmentId and display name — the valid values for the met_search_collections departmentId filter.
Search the Metropolitan Museum of Art collection by keyword and optional filters. Returns the total match count and a page of matching object IDs, which met_get_object resolves to full records. Relevance is keyword-based, not semantic; department and geographic filters narrow results more than a longer query. The medium parameter maps to the classification field (pass "Paintings", "Drawings", etc., not material descriptions like "Oil on canvas"). Every filter draws on a partial upstream index, so a filtered search omits some objects whose own record satisfies the filter — the results are not exhaustive, and dropping the filter is what widens them. A filtered search is checked against the same query run unfiltered, so its results match the keyword; when that check is too costly to complete the page is returned unchecked and the response says so in its notice. isPublicDomain selects CC0-licensed images; hasImages also includes copyrighted works. isPublicDomain and isHighlight are opt-in filters that accept true only; the upstream index is unsound on the false arm. isOnView restricts results to works currently on display in a Met gallery.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract fields without knowing response structure. met_search_collections returns 'total match count and a page of matching object IDs' but the exact JSON structure is not specified.
No error handling guidance. Tools do not document what errors can occur, how to recover, or what the LLM should do next. E.g., met_search_collections mentions 'invalid_department error' but no other error cases are documented.
met_get_object description is terse (19 chars: 'Fetch full records for one or more Met object IDs.'). Does not explain when to call it vs met_search_collections, what fields are returned, or how it chains with search results.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
No batch operation guidance. met_get_object accepts up to 20 IDs but does not explain whether to batch or call sequentially, or what happens if some IDs fail (per-item success/failure vs blanket error).
Tool annotations present in metadata (Risk: READ_ONLY) but not exposed in schema. readOnlyHint should be in the tool definition so clients can mark these as safe for retry and non-destructive.