Skip to main content
Glama
mcp-server-steam-backlog

mcp-server-steam-backlog

by SDNick484

Find games

backlog_find_games
Read-only

Search and filter the entire Steam library by genre, length, ProtonDB tier, Steam Deck rating, play state, and more to find a game's app ID or identify matching backlog titles.

Instructions

<use_case> Search and filter the whole Steam library with the dashboard's filters: name or genre words, genres, HowLongToBeat length, ProtonDB tier, Metacritic, release year, Steam Deck rating, controller support, play state, triage lane (list/bucket/shelf) and notes. Use it to find a game's app id before changing it, or to answer questions like "which Verified RPGs have I never played?". </use_case> <important_notes>

  • Filters combine with AND. Games with no data for a filter are excluded unless include_unknown.

  • length uses the dashboard's presets on one HLTB measure; hours_min/hours_max set an exact range.

  • When nothing matches, it returns the closest games instead (exact=false) and says which filters it dropped (relaxed) or that it matched the name loosely (fuzzy_query). Tell the user that.

  • To recommend what to play, use backlog_suggest_picks instead: it ranks and explains. </important_notes> backlog_find_games(genres=["RPG"], deck=["verified"], play_state=["never"], sort="short")

Input Schema

NameRequiredDescriptionDefault
deckNoSteam Deck ratings to include
laneNoTriage lanes; 'none' = untriaged
sortNoscore (couch score), short (shortest first), name, recent, most (playtime), mcscore
limitNo
queryNoWords from the name or a genre, e.g. 'hollow'
genresNoStore genres, e.g. ['RPG', 'Roguelike']
lengthNoshort (<5 h), mid (5-15), long (15-40), epic (40+), none (no HLTB data)
offsetNo
year_toNo
has_noteNotrue: only games with a note; false: without
protondbNoProtonDB tiers to include
hours_maxNo
hours_minNo
year_fromNo
controllerNoController support
play_stateNonever (0 min), tried (<2 h), played (2 h+)
genre_matchNoany: one of the genres; all: every oneany
backlog_onlyNoOnly unplayed games not in skip or done
protondb_minNoMinimum ProtonDB tier: native > platinum > gold > silver > bronze > borked
length_measureNoWhich HowLongToBeat time the length uses: main, extra (main+extras), completemain
metacritic_minNo
include_unknownNoAlso include games with no data for a filter (unknown length, tier, year...)

Output Schema

NameRequiredDescriptionDefault
exactYesfalse: nothing matched as asked; these are the closest matches
gamesYes
detailYes
offsetYes
matchesYes
relaxedYesFilters dropped to find these (weakest first)
truncatedYes
fuzzy_queryYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a safe read (readOnlyHint=true), so the description correctly spends its space on semantics the annotations cannot carry: filters combine with AND, unknown-data games are dropped unless include_unknown, and the no-match fallback returns closest matches with exact=false plus relaxed/fuzzy_query flags that the agent must disclose to the user. Pagination via limit/offset is never mentioned, which is the main remaining gap for a 22-parameter search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tagged sections (use_case, important_notes, example) front-load the purpose before caveats, every bullet carries a distinct rule, and the closing line redirects to the ranking sibling. No filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 22-parameter search with an output schema and read-only annotations, the description covers the behaviors an agent must know (AND semantics, unknown handling, fallback signaling, sibling routing). Only pagination behavior and sort tie-breaking remain undocumented, which are secondary at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 68% schema coverage the description meaningfully adds to the schema: it explains the AND combination rule, that length uses dashboard presets on one HLTB measure while hours_min/hours_max set an exact range, and that include_unknown widens every filter. It does not clarify offset/limit or the year/metacritic bounds, so it does not fully close the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (search and filter the whole Steam library) and enumerates the filter dimensions the tool spans. It also explicitly positions itself against backlog_suggest_picks and against backlog_get_game-style lookups ('find a game's app id before changing it').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use scenarios (resolve an app id, answer filtered questions), an explicit when-not-to-use with the named alternative (backlog_suggest_picks for recommendations), and a worked example call. Little is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.