MCP server for license-verified search across open-access museum collections (The Met, Rijksmuseum, Smithsonian, Cleveland, AIC, SMK, Walters, Wellcome, National Gallery of Art, Harvard, Getty, Wikimedia Commons, Europeana, and growing).
This server demonstrates solid definition quality with well-structured schemas, clear naming conventions, and detailed parameter descriptions. All 6 tools follow verb_noun patterns (search_, get_, facets, cite, discover, clearance_record). Descriptions are substantive (150-300 chars on average), exceeding the rubric baseline of 194 chars. Parameters are typed and described. However, there are notable gaps: (1) output schemas are not formally documented in the tool definitions, only implied by implementation; (2) error handling guidance is minimal, tools don't articulate what to do on failure; (3) the 'discover' tool lacks concrete constraints (region/period values are undocumented); (4) tool descriptions could better clarify when/why to use each tool vs. alternatives. Schema quality is strong where visible, but lack of explicit output documentation and error recovery guidance prevent a higher score.
Render a formatted citation string for an artwork by ID.
Fetch the Clearance Manifest for an artwork ID — the portable, fail-closed rights-clearance artifact. Returns a permit or deny manifest (both valid answers) for any input: a cleared work yields a permitted manifest, a non-cleared or malformed id yields a deny manifest.
Experimental guide discovery engine. Suggests artworks and patterns to explore given open-ended constraints (region, period, museum, artist exclusion). Returns a curated sample of work records that satisfy the constraints.
For a given search query, return a summary of the medium categories, date ranges (year min/max), and regions in the unfiltered result set — without hitting the size limit. Supports search filters (museum, year_min/max) to constrain the facet summary to a subset, but does not support medium/color filters (those are post-fetch).
Fetch a single artwork record by ID (e.g. "met:1234"). Returns the full artwork metadata if the record is found and cleared; omits records that fail rights verification.
Output schemas not formally documented. Tool definitions show input schemas but do not declare the structure of return values. LLMs cannot plan downstream composition or extract specific fields without seeing documented output structure.
Minimal error recovery guidance. Tool descriptions do not explain what to do if a call fails (e.g., 'If artwork not found, try search_artworks() first'). Errors are implementation details, not part of the tool contract LLMs see.
discover tool lacks concrete value lists. Descriptions say 'Optional region/culture' and 'Optional historical period' but do not enumerate valid values (e.g., 'Egyptian', 'Renaissance', 'Song Dynasty'). LLMs will hallucinate region/period names that don't exist.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | 2026-07-28+ | v2 |
Search across registered open-access museum collections. Returns artwork records that pass source-specific rights verification (ambiguous records excluded by default). Supports an optional date-range filter for researcher queries like "Dutch genre painting 1640–1680".
Distinguish between tools more clearly. search_artworks, discover, and facets all explore collections but have subtle, undocumented differences in use cases. Descriptions should answer: When do I call search_artworks vs. discover vs. facets? Current descriptions require the LLM to infer the intent.
get_artwork omits error context. Description says 'Returns the full artwork metadata if the record is found and cleared; omits records that fail rights verification' but does not explain what the LLM should do if the artwork is not found (try search_artworks? Return error to user?). Recovery path is unclear.