The server defines one tool (search_photos) with reasonable structure. The tool has a descriptive name starting with a verb ('search_'), a clear description, comprehensive input schema with type constraints and enums, and an output schema. However, there are critical issues: (1) the description is in English but input/output parameter descriptions are in Chinese, creating a mixed-language interface that LLMs may struggle with; (2) parameter descriptions in the input schema use example values (e.g., '例如:\'山峰\'、\'日落\'') rather than formal constraints, violating the pattern:tool-description guidance to avoid example values in descriptions; (3) the API key is hardcoded as a default constant in config.go (defaultKey = 'RgkH0m_iWfVsoSuLheI46BAYy1Ig1Ab3vvElYAESZ34'), which is a critical security vulnerability; (4) error handling in HandleSearchPhotos is minimal, no guidance on recovery strategies for common failures like API quota exceeded or network timeouts; (5) the output schema lacks a total/total_pages field that the API returns, limiting pagination support awareness. The schema structure itself is well-formed with proper type definitions, required fields, and enum constraints for order_by and orientation, which are strengths.
Search for Unsplash photos
Hardcoded API key exposed in source code (config.go, defaultKey constant)
Input parameter descriptions include example values (e.g., '例如:山峰、日落') instead of formal constraints; this invites LLMs to reuse example values literally
Mixed language interface: tool description and main text in English, but parameter descriptions in Chinese; LLMs may struggle with language switching
Error handling provides no recovery guidance; raw fmt.Errorf() messages like 'failed to search photos: 404' don't tell the LLM what to do next
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Output schema omits pagination fields (total, total_pages) that the API returns; the SearchResponse struct has these fields but the output schema does not document them
No rate limiting or timeout guidance documented; if the Unsplash API is rate-limited and the server retries aggressively, it could backpressure the LLM