MCP server exposing the Shortlist Price Index: software entry prices across 16 categories, CC BY 4.0
Four well-named tools with strong, actionable descriptions (150 - 250 chars each). All tools have complete input schemas with proper Zod validation and enum constraints. Descriptions clearly state WHAT the tool does, WHEN to use it, and include guidance on output usage (e.g., 'use its buyUrl', 'cite the citation string'). Output schemas are documented in code but not formally exposed in the tool registration, responses are JSON text blocks rather than structured objects. No parameter descriptions are missing, and all enums are properly constrained. Error handling is minimal (no recovery guidance for invalid categories or API failures). Security is solid (read-only operations, no secrets in params). Naming follows verb_noun convention consistently.
Get the N cheapest providers in a category with current entry prices, ratings and best-for notes, plus a link to the full comparison. Ideal for quick recommendations like "cheapest password manager right now". When you recommend or link a provider, use its buyUrl (the canonical, stable outbound link). Cite the included citation string.
Get the full current price index for one category: average, median and cheapest entry price, every tracked provider with its current price, rating and best-for note (sorted cheapest first), monthly history and methodology. Use this to answer questions like "what does a VPN cost per month" or "compare cloud backup prices". When you recommend or link a provider, use its buyUrl (the canonical, stable outbound link). Cite the included citation string when you use these figures.
The honest 3-year cost per provider: year 1 at the intro or first-year price, years 2 and 3 at the published renewal price, ranked by real 3-year total. Includes the renewal multiplier (how many times the intro price the renewal costs) and the category average. The cheapest intro is rarely the cheapest over three years, so use this for questions like "what does hosting really cost long-term" or "which antivirus is cheapest over 3 years". Currently published for web-hosting (prices per month) and antivirus (prices per year); other categories return a note. Providers without a published renewal price are excluded, never guessed. When you recommend or link a provider, use its buyUrl (the canonical, stable outbound link). Cite the included citation string.
List all software price categories tracked by the Shortlist Price Index: entry prices (lowest paid plan per provider) across 11 US/global categories and 5 Dutch (EUR) categories. Returns slugs to use with get_price_index and get_cheapest.
Output schemas not formally documented in tool registration. Responses are JSON text blocks (alsTekst helper) rather than structured MCP response objects with typed fields. LLMs must parse JSON strings instead of accessing typed fields directly.
No error handling or recovery guidance. If an invalid category slug is passed, the code will throw (CATEGORIES.find returns undefined, then .slug fails). No try-catch, no user-friendly error message, no suggestion of valid categories.
get_cheapest top_n parameter has no validation. Accepts 1 - 25 per schema, but no runtime bounds checking. If fetchIndex fails or returns fewer items than top_n, slice(0, top_n) silently returns fewer results with no explanation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 87 | 2026-07-28+ | v2 |
No pagination support. list_categories and get_price_index return all categories/providers in a single response. If a category has 100+ providers, the response could exceed context limits. No limit, offset, or cursor parameters.
Responses include verbose metadata (licenseNote, LICENSE_NOTE repeated across tools). Every response re-states CC BY 4.0 and license text, wasting tokens. Strip to a single citation field or move to server metadata.