Skip to main content
Glama
SDNick484

mcp-server-steam-backlog

by SDNick484

Refresh the library

backlog_start_export
Idempotent

Starts a background Steam library re-export to refresh playtime, purchases, Deck ratings, ProtonDB, and HowLongToBeat data. Returns immediately; check progress with backlog_get_export_status.

Instructions

<use_case> Refresh the library: re-export the Steam library with fresh playtime, new purchases, Deck ratings, ProtonDB and HowLongToBeat data. Use when the user just bought or played something and the overview's export is older than that. </use_case> <important_notes>

  • Returns immediately; the export runs on the server for minutes (up to an hour for a first run of a big library). Check on it with backlog_get_export_status; don't poll in a tight loop.

  • If one is already running (including the weekly scheduled one), returns its status instead.

  • Reaches out to Steam, HowLongToBeat and ProtonDB through the backlog server; no keys pass through here. </important_notes> backlog_start_export()

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
detailYes
statusYes
outcomeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations say readOnlyHint=false and idempotentHint=true, but the description carries the real burden: it discloses that the call returns immediately while work runs server-side for minutes (up to an hour on a first run), that a concurrent/scheduled run yields its status instead, and that external services (Steam, HLTB, ProtonDB) are contacted with no key handling on this side. That is exactly the async/mutation context annotations cannot express.

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

Conciseness4/5

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

Front-loads the use case, then separates operational caveats into bullets, which is easy to scan. The trailing <example>backlog_start_export()</example> block adds essentially no information for a zero-argument tool and is the only real filler.

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

Completeness5/5

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

Even though an output schema exists, the description supplies the missing lifecycle context an agent needs: fire-and-forget semantics, expected duration, where to check progress, and what happens on a duplicate call. Nothing needed to invoke this correctly is absent.

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?

The tool takes no parameters, so the baseline of 4 applies; the description correctly implies a zero-argument call and does not invent or omit any input semantics. Nothing further could be added beyond what the empty schema already conveys.

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 and resource ('re-export the Steam library') and enumerates exactly what gets refreshed: playtime, purchases, Deck ratings, ProtonDB, HowLongToBeat. The verb 'start/refresh' plus the explicit pointer to backlog_get_export_status makes it distinguishable from every sibling, including the status-checking one.

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 a concrete trigger ('when the user just bought or played something and the overview's export is older than that'), names the alternative tool for checking progress, and explicitly forbids the wrong behavior ('don't poll in a tight loop'). It also covers the already-running case, telling the agent it gets the existing status rather than a new job.

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