Personal design inspiration library for websites and apps with search, analysis, and visual reference tools
Good foundation with clear naming and mostly complete schemas. Tool names follow verb_noun pattern (search_designs, get_design, list_components, compare_designs, add_design, reindex). Descriptions are present and contextual (avg ~150 chars). Input schemas use Zod with proper types and enums. However, output schemas are undocumented, LLMs cannot predict response structure. Error handling is minimal (generic fail() wrapper). Parameters lack some constraints (e.g., 'query' in search_designs has no length limit; 'folder' in add_design has no path validation guidance). Missing tool annotations (readOnlyHint, destructiveHint). add_design and reindex are write operations but lack confirmation/dry-run patterns.
Add designs to the library. Web/App-Store/Play-Store URLs are captured + analyzed (~1-3 min each). Alternatively ingest a folder of your own app screenshots (folder requires name + platform). Provide exactly one of urls|folder.
Side-by-side comparison of 2-4 entries: thumbnails plus palette/typography/tag differences.
Full detail for one library entry: metadata, palette, typography, written design review, and images.
Show component crops of one type across all designs (e.g. every "pricing" section). Types: nav, hero, features, pricing, testimonials, social-proof, cta, footer, faq, stats, gallery, form, table, product-card, blog-list, onboarding, dashboard-shell, settings, empty-state, modal, other; app screens are "screen:<name>".
The controlled vocabularies (style tags, categories, component types) with usage counts — consult before searching.
Rebuild the search index from all library entries. Run after manual edits to meta.json or analysis.md files.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, pagination). search_designs returns SearchHit[] with fields like slug, title, domain, tags, snippet, none documented in tool definition. Blocks downstream tool chaining and forces LLM to guess field names.
Destructive operations lack confirmation/dry-run. add_design (captures URLs, writes to disk) and reindex (rebuilds index) are write operations with no confirmation step or dry-run mode. Agents can accidentally overwrite designs or corrupt the index without safeguards.
Missing tool annotations. No readOnlyHint on read tools (search_designs, get_design, list_components, compare_designs, list_tags) and no destructiveHint on write tools (add_design, reindex). Clients cannot distinguish safe from risky operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
Search the personal design inspiration library (websites + apps). Returns ranked matches with metadata and thumbnail images. Use before proposing any visual design.
Parameter constraints incomplete. 'query' in search_designs lacks length limit (could be 10KB+ string). 'folder' in add_design has no path validation guidance (could be /etc/passwd). 'limit' in list_components has max=15 but no rationale. Invites invalid input from LLMs.
Error handling is generic. All errors return fail() with only error.message. No categorization (retryable vs fatal), no recovery guidance, no invalid-value echoing. LLM cannot self-correct or decide next step.