Analyzes e-commerce checkout funnel drops and outputs targeted UX recommendations.
Single-tool server with moderate quality but significant gaps. The analyze_funnel tool has a reasonably well-structured schema and descriptions, but lacks critical error handling, output schema documentation, and per-parameter descriptions. The tool does one thing (analyze checkout funnels), but the implementation is client-only with no MCP server registration visible, we are inferring tool existence from the client code rather than seeing explicit MCP tool registration. This caps the practical score. The descriptions are present but generic (194-char baseline for A+ tools; this tool's description is ~140 chars, marginally below average). Schema includes proper typing for input parameters, but output schema is undocumented. No error handling guidance, no recovery paths, and no input validation beyond type coercion.
Analyzes e-commerce checkout funnel statistics and outputs targeted UX recommendations based on bottleneck identification.
No explicit MCP server registration visible, tool existence is inferred from client.py, not from an MCP server implementation (e.g., no StdioServer, no HTTP endpoint, no tools registration call). Per hard scoring rule, tool definitions inferred rather than directly visible must be capped at 50.
No output schema documented. LLMs cannot plan downstream actions or extract the correct fields without knowing the structure of the return value. The code returns a dict with stage_conversion_rates, overall_conversion_rate, bottleneck_stage, highest_dropoff_pct, and recommendations, but this structure is not documented for the LLM.
No error handling or recovery guidance. If funnel_steps is missing required keys or contains invalid data, the tool silently coerces values to float (e.g., missing keys default to 0). An LLM receiving unexpected output has no context on what went wrong or how to retry. Tool should return structured errors with actionable guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
Input parameter descriptions lack specificity. 'funnel_steps' description says 'Dictionary containing checkout funnel step metrics' but does not explain valid ranges, whether zero values are acceptable, what happens if contact_info > cart_views (logical impossibility), or minimum/maximum values. This invites garbage-in results from an LLM passing unrealistic numbers.
Individual funnel step parameters (cart_views, contact_info, etc.) are nested inside a single 'funnel_steps' object but lack individual descriptions. LLMs cannot reason about what each field represents or why they are ordered. Consider flattening to separate, well-described parameters or enrich the nested schema with per-property descriptions.