Model Context Protocol server for Steam Launch Forecaster — calibrated revenue cones for indie Steam game launches, exposed as MCP tools to Claude / AI agents.
Five tools with complete schemas, strong descriptions (avg 180 chars), and clear naming. All tools are read-only with proper verb prefixes (get_, boxleiter_). Descriptions explain WHAT, WHEN, and WHY with good context (e.g., 'Useful for sanity-checking a forecast'). Parameters are typed and described. However, output schemas are not formally documented in the code, only inferred from docstrings. Error handling is mentioned in docstrings but not structured with recovery guidance. No tool annotations (readOnlyHint, etc.) despite all being read-only. Missing pagination guidance for comps results.
Apply the Boxleiter rule-of-thumb (review_count × multiplier × price). A heuristic sanity check, NOT a calibrated forecast. Per the formula's own author (Mike Boxleiter, 2023 retrospective), ~24% of games are off by more than 30% from a single-multiplier estimate. Useful to compare against get_forecast() — large divergence between the heuristic and the calibrated cone signals an interesting outlier worth investigating.
Return the latest published live calibration coverage summary. Numbers are from the Q2 2026 quarterly report. Live-refreshed table is at https://steamforecast.app/methodology — fetch get_methodology() for the canonical current values.
Fetch top-K nearest-neighbor comparable Steam games for an appid. Comps are surfaced via pgvector cosine-similarity over a 1024-dim BGE embedding of game metadata (genres, tags, language, platform support, multiplayer features). Useful for sanity-checking a forecast: if the nearest comps cluster in a tight revenue band, the cone is likely well-anchored; if they're dispersed, the cone correctly widens.
Fetch a calibrated P10–P90 revenue cone for a Steam game by appid. Uses the same v1.1 model that powers the public steamforecast.app site. Returns a JSON object with cone bounds in cents + dollars, the model version, the genre cluster used for stratified calibration, and links back to the methodology page + latest calibration report.
Output schemas not formally documented. Docstrings describe return values narratively, but no JSON Schema definitions are visible for tool outputs. LLMs cannot reliably parse response structure without formal schema.
No tool annotations despite all tools being read-only. FastMCP supports readOnlyHint, should be applied to all five tools to signal safety to agents.
get_comps lacks pagination guidance. Accepts k (1-20) but no documentation of what happens if results exceed k, or how to fetch additional comps. Should document limit behavior and offer cursor/offset if needed.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Return the AI-crawler-friendly methodology summary (llms.txt). Pulls the canonical content discovery file from steamforecast.app/llms.txt, which lists high-quality URLs (methodology, guides, reports, tools) for AI agents to ingest. Useful when a model wants the full sitemap of authoritative content rather than a single forecast.
Error handling is mentioned in docstrings (e.g., 'httpx.HTTPStatusError: 404') but not structured with recovery guidance. Errors should tell LLM what to do next (e.g., 'appid not in v1.1 catalog (~49K apps), try a different appid or check steamforecast.app/methodology').
boxleiter_estimate input validation is minimal. Checks for negative values but does not validate upper bounds or warn about unrealistic inputs (e.g., review_count > 1M). Should provide actionable validation errors.