Harvard Art Museums — 250k+ objects across the Fogg, Busch-Reisinger & Sackler collections, with rich metadata & IIIF images. FREE API key required (get one at https://harvardartmuseums.org/collections/api (free)); the platform provides it automatically, or pass your own via _apiKey (BYOK).
Two tools with complete schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Both tools have clear action verbs (search, object) and reasonable descriptions (90-120 chars). However, parameter descriptions lack detail on constraints, formats, and expected ranges. Output schemas are not documented, LLMs cannot predict what fields to expect from search or object responses. The _apiKey parameter violates secret-injection best practices by appearing as a tool parameter, though the server attempts mitigation via 'auto-injected by the platform' language. Error handling is present but minimal, no recovery guidance or categorization.
Fetch full details for one Harvard Art Museums item by id — a Harvard Art Museums object id (numeric, from search).
Search the Harvard Art Museums collection by keyword. Returns matching items with ids (pass an id to object), titles, creators, dates and image links.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). search() and object() return raw API responses without documented shape.
API key exposed as tool parameter (_apiKey). Credentials should never appear in tool params, they leak into logs and traces. Use server-side secret injection only.
Parameter constraints missing. 'limit' accepts 1-100 but description lacks min/max bounds. 'page' has no documented minimum. LLMs may pass invalid values.
No pagination metadata in response. search() returns results but no documented total count, next_cursor, or has_more flag. Large result sets risk context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Error messages lack recovery guidance. 'Unknown tool' and generic HTTP errors do not tell LLM what to do next. No categorization of retryable vs fatal errors.