Photography services integration for Claude Desktop - provides tools to interact with the Snappr API for photography coverage checking, availability scheduling, booking management, photo editing services, and media retrieval
Server has 5 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-100 chars, mostly adequate), and input schemas are present with type definitions. However, parameter descriptions are sparse or missing context. The create_booking tool lacks critical validation guidance (e.g., ISO 8601 format enforcement, duration constraints). No output schemas documented. Error handling is minimal, no recovery guidance or actionable error messages. Tool naming follows verb_noun convention (list_, check_, find_, create_) which is good, but descriptions lack LLM-optimization (e.g., 'Check if Snappr photography services are available' doesn't explain WHEN to call this vs find_availability). No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Overall, definitions are functional but lack the polish and completeness expected of production tools.
Check if Snappr photography services are available in a specific location for a shoot type
Create a new photography booking
Find available time slots for photography bookings
Get available photo editing job types
Get available photography shoot types
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., booking_id, availability slots). Violates pattern:tool requirement for structured responses.
Parameter descriptions lack validation context. 'duration' in find_availability and create_booking has no min/max bounds, format hints, or constraints. LLMs may pass invalid values (0, negative, >1440 minutes).
No error handling or recovery guidance. Code catches httpx exceptions but returns generic error messages ('Failed to connect', 'timed out'). No actionable next steps for LLM (e.g., 'Invalid API key, check SNAPPR_API_KEY environment variable').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Tool annotations missing. create_booking is destructive (WRITE risk) but has no destructiveHint. list_* tools are read-only but lack readOnlyHint. Prevents LLM from reasoning about side effects and retry safety.
Ambiguous parameter naming. 'shoot_type' appears in check_coverage, find_availability, and create_booking but descriptions don't clarify if values are identical across tools or if lookup via list_shoot_types is required before use.