MCP server that audits Shopify e-commerce stores by crawling live pages and analyzing store configuration
Single tool 'audit_store' has a basic description (67 chars) but critically lacks a documented output schema. Input schema is minimal (only 'url' string param with no format constraints, min/max length, or validation guidance). No error handling guidance, no parameter validation rules, no recovery paths. Tool name lacks action verb clarity ('audit' is vague, does it return scores, recommendations, or raw data?). No documentation of what fields the output contains, making it impossible for LLMs to plan downstream actions. Descriptions fall short of the 50-200 char LLM-optimized baseline and lack WHEN/WHY context.
Audits a Shopify store by crawling the live page and analyzing store configuration
No output schema documented. Tool returns unstructured audit results but LLM cannot know what fields to expect (scores, recommendations, issues, metadata, etc.). Breaks tool chaining and forces LLM to guess at response structure.
Input parameter 'url' lacks validation constraints. No format specification (must be valid URL?), no length bounds, no example format. LLM cannot validate input before calling; server will fail on malformed URLs with no guidance for recovery.
Tool description (67 chars) is below LLM-optimized baseline (50-200 chars) and lacks WHEN/WHY context. Does not explain when to use this vs other audit tools, what prerequisites exist, or what the output is used for. LLM cannot determine if this is the right tool for the user's intent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Tool name 'audit_store' lacks action verb clarity. 'Audit' is vague, does it analyze, score, report, or validate? Compare to 'analyze_store_performance' or 'generate_store_audit_report'. Ambiguous names cause LLMs to guess wrong about tool purpose.
No error handling guidance. If audit fails (network timeout, invalid store, crawl blocked), tool provides no recovery path. LLM receives raw error with no actionable next step (retry? try different URL? check permissions?).