A Next.js web application and MCP store platform that provides workflow building, service integration, and product management capabilities. Includes MCP tool definitions for browsing products, managing purchases, and provisioning services.
This MCP server has 6 tools with schemas present but significant quality gaps. Tool names are reasonable (browseStore, getPricing, comparePackages, purchaseProduct, setupYext, setupWordpress) but lack action-verb consistency (camelCase mixed with weak verbs like 'browse' instead of 'list'). Descriptions are present but minimal (10-50 chars) and lack LLM-optimized context about when to use each tool. Parameter schemas are declared with types and basic descriptions, but descriptions are frequently trivial ('optional product category filter' does not explain what categories exist or how they affect results). No output schemas are documented, the server provides no guidance on what fields agents should expect from tool responses. Error handling is declared as 'errorReporting: true' but no evidence exists in the source code of actionable error messages, recovery paths, or categorization. The purchaseProduct and setupYext/setupWordpress tools accept sensitive business data (addresses, phone numbers, payment method IDs) but lack clear security documentation around credential handling or audit trails. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite WRITE tools (purchaseProduct, setupYext, setupWordpress) that modify state. Overall, the server has skeleton structure but lacks production-grade polish in description depth, output documentation, and error guidance.
Browse store products and packages
Compare multiple packages
Get detailed pricing for a product
Purchase a product
Set up WordPress hosting (convenience wrapper)
Set up Yext for a business (convenience wrapper)
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract fields from responses without knowing what the tool returns.
Tool descriptions are too brief and lack LLM-optimized context. 'Browse store products and packages' (40 chars) does not explain when to use browseStore vs getPricing, what filters do, or what results look like. Descriptions should be 50-200 chars with intent, prerequisites, and return summary.
Parameter descriptions are minimal and do not guide LLM input. Example: 'optional product category filter' does not state what categories exist, whether it accepts single or multiple values, or how it filters results. Descriptions should be 20-150 chars and include constraint hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 33 | - | v1 |
WRITE tools (purchaseProduct, setupYext, setupWordpress) lack destructiveHint/idempotentHint annotations. Agents need to know which operations have irreversible side effects (payment processing, domain setup) vs which can be safely retried.
No error handling guidance visible. The server declares 'errorReporting: true' but provides no evidence of actionable error messages, recovery paths ('try X first'), or error categorization (retryable, user-fixable, fatal). Agents cannot learn what to do when a call fails.
Sensitive business data (addresses, phone, email, payment method IDs) in tool parameters lacks security documentation. No evidence of audit logging, credential injection guardrails, or encryption guidance. Agents logging these calls risk exposing PII.
Parameter 'billingPeriod' in getPricing and 'billing' in purchaseProduct use different names for the same concept. LLMs may conflate them or fail to reuse results from one tool in another. Use consistent naming across tool chains.
The 'productType' enum in purchaseProduct ('package', 'product') is underspecified. Parameter description does not explain how it relates to browseStore results or what each type means for pricing/billing. Agents may misclassify.