MCP server for Unsplash — search and fetch freely-licensed photos via the public Unsplash API.
Server has 20 well-named tools with consistent verb_noun patterns (list_, get_, search_). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas are present with types and enums for constrained fields (orientation, order_by, resolution). However, parameter descriptions are sparse or missing for many inputs, e.g., 'page' and 'per_page' lack guidance on valid ranges. Output schemas are not documented; responses are trimmed via helper functions but LLMs cannot see the structure. Error handling is minimal (null returns logged to stderr, no recovery guidance). No tool annotations (readOnlyHint, etc.). All tools are READ_ONLY and safe, but this is not declared in metadata.
Get detailed information about a specific collection by ID
Get photos from a specific collection with pagination and filtering
Get monthly statistics for Unsplash platform
Get detailed information about a specific photo by ID
Get statistics for a specific photo including downloads and views
Get detailed information about a specific topic by ID or slug
Output schemas not documented. LLMs cannot see what fields are returned by tools. Helper functions (trimPhotoSummary, trimPhotoFull, etc.) shape responses, but no schema is exposed to the client. This forces LLMs to guess at response structure and risks incorrect field extraction.
Pagination parameters (page, per_page) lack range constraints and descriptions. No guidance on valid page numbers, max per_page, or total_pages in response. Baseline rubric requires 'page_size 1 - 100, days 1 - 365' style constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Get photos from a specific topic with pagination and filtering
Get total statistics for Unsplash platform
Get detailed information about a specific user by username
Get collections from a specific user with pagination
Get liked photos from a specific user with pagination and filtering
Get photos from a specific user with pagination and filtering
Get statistics for a specific user including downloads, views, and likes
List collections from Unsplash with pagination
List photos from Unsplash with pagination and sorting options
List topics from Unsplash with pagination
Get a random photo from Unsplash with optional filtering
Search for collections on Unsplash
Search for photos on Unsplash with query and filtering options
Search for users on Unsplash
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 20 tools are READ_ONLY and safe to retry, but this is not declared in metadata. LLMs cannot infer safety properties and may avoid retrying on transient failures.
Error handling returns null with stderr logging only. No recovery guidance. When API fails, LLM receives null and has no actionable error message. Rubric requires 'User not found. Try search_users() with a partial name.' style guidance.
Parameter descriptions are generic or missing detail. E.g., 'Page number (default: 1)' does not specify valid range, max value, or behavior at boundary. 'Color filter' does not explain accepted format (hex, name, etc.). Baseline requires 'The project key (2-10 uppercase letters, e.g. PROJ)' style specificity.