Add products to Bring! from a photo — MCP for AI recognition, catalog matching, and verified writes.
All 15 tools have explicit schemas with type definitions and parameter constraints (Zod validation). However, descriptions are uniformly generic ('Bring Photo MCP: <tool_name>') with zero contextual value, they do not explain WHAT the tool does, WHEN to use it, or what it returns. This violates the critical pattern:tool-description rule. Parameter descriptions are present and specific (e.g., 'List identifier (non-empty string)', 'Item name (1-200 characters)'), which is a strength. Output schemas are not documented, responses are JSON-stringified text blobs with no declared structure. Error handling returns structured error objects but lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). Naming is verb-first and clear (bring_list_*, bring_add_*, bring_remove_*), following conventions well.
Bring Photo MCP: bring_add_item
Bring Photo MCP: bring_attach_photo
Bring Photo MCP: bring_check_item
Bring Photo MCP: bring_copy_item
Bring Photo MCP: bring_get_item
Bring Photo MCP: bring_list_categories
Bring Photo MCP: bring_list_items
All 15 tool descriptions are generic placeholders ('Bring Photo MCP: <tool_name>') with zero actionable content. LLMs cannot determine when to select a tool or what it returns. Violates pattern:tool-description critical rule requiring 10 - 1024 character descriptions explaining WHAT, WHEN, and WHY.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk levels in metadata (READ_ONLY, WRITE, DESTRUCTIVE). Agents cannot distinguish safe reads from destructive writes without annotations. Violates pattern:tool-annotation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Bring Photo MCP: bring_list_lists
Bring Photo MCP: bring_move_item
Bring Photo MCP: bring_remove_item
Bring Photo MCP: bring_remove_photo
Bring Photo MCP: bring_replace_photo
Bring Photo MCP: bring_search_catalog
Bring Photo MCP: bring_suggest_classification
Bring Photo MCP: bring_uncheck_item
Output schemas are not documented. Tools return JSON-stringified text blobs via the text() helper with no declared structure. LLMs cannot plan downstream tool calls or extract specific fields. Violates pattern:response-shaper critical rule.
Error handling returns structured error objects but lacks recovery guidance. A bare error message does not tell the LLM what to do next (retry, ask user, or fail). Violates pattern:recovery-guide critical rule.
No pagination support on list tools (bring_list_lists, bring_list_items, bring_list_categories). Large result sets will blow context windows. Violates pattern:paginated-result.