PC game deals across Steam/Epic/GOG/Humble via CheapShark. Keyless.
CheapShark MCP has basic tool definitions with schemas present, but suffers from critical gaps in parameter descriptions and output documentation. All 5 tools have names and input schemas, but most parameters lack descriptions (e.g., 'deals' tool has 16 parameters with only 2 descriptions). Tool descriptions are minimal (10-30 chars), below the 50-200 char baseline for LLM optimization. No output schemas documented. Error handling is generic (HTTP status codes only). The server is a simple API wrapper without production-grade agent patterns.
Single deal detail.
Search deals across stores.
Game details.
Game lookup.
List supported stores.
14 of 16 parameters in 'deals' tool lack descriptions. LLMs cannot infer meaning from names alone (e.g., 'metacritic', 'steamRating', 'AAA' are ambiguous without context).
All tool descriptions are under 30 characters ('Search deals across stores.', 'Single deal detail.'). Baseline is 50-200 chars. Too short to guide LLM selection or explain when to use each tool.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., what fields does 'deals' return? Is there pagination? What is the structure of each deal object?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Parameter 'sortBy' in 'deals' tool lists enum values in description ('DealRating | Title | ...') instead of using JSON Schema enum constraint. LLMs cannot parse pipe-delimited text reliably.
Error handling is minimal. Generic HTTP status code errors ('CheapShark: 404') provide no recovery guidance. No distinction between retryable vs user-fixable errors.