---
name: pp-steam-web
description: "Every Steam Web API endpoint, plus a local SQLite store that turns friend playtimes, achievement progress, and library backlogs into single SQL queries no other tool can answer. Trigger phrases: `what should I play next on steam`, `find friends who own this game`, `easiest steam achievement to unlock`, `audit my steam backlog`, `use steam-web`."
author: "Trevin Chow"
license: "Apache-2.0"
argument-hint: "<command> [args] | install cli|mcp"
allowed-tools: "Read Bash"
metadata:
  openclaw:
    requires:
      bins:
        - steam-web-pp-cli
    install:
      - kind: go
        bins: [steam-web-pp-cli]
        module: github.com/mvanhorn/printing-press-library/library/other/steam-web/cmd/steam-web-pp-cli
---

# Steam Web — Printing Press CLI

## Prerequisites: Install the CLI

This skill drives the `steam-web-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:

1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
   ```bash
   npx -y @mvanhorn/printing-press-library install steam-web --cli-only
   ```
2. Verify: `steam-web-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.

If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer):

```bash
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/steam-web/cmd/steam-web-pp-cli@latest
```

If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.

## When to Use This CLI

Pick this CLI when an agent is asked to query Steam profile, library, achievement, or news data and the question crosses entities — anything joining friends with owned games, achievements with global rarity, or news with a date filter. The local SQLite store turns those questions into one SQL query instead of an N+1 fanout. Every other Steam tool is single-shot read-once; this one compounds. For pure single-endpoint reads (one player's profile, one app's news), the per-endpoint MCP tools work too — but the novel commands are where this CLI earns its weight.

## Unique Capabilities

These capabilities aren't available in any other tool for this API.

### Local state that compounds
- **`library audit`** — Surface never-launched games, paid titles you bounced off in under 2 hours, and where your hours actually went by genre.

  _Use this when an agent is asked to plan what to play next, justify a refund, or summarize the user's gaming spend._

  ```bash
  steam-web-pp-cli library audit 76561197960287930 --bounce --json
  ```
- **`review-velocity`** — Reviews per day and voted-up share over a rolling window for one app — date-bucket aggregation over the cursor-paginated appreviews stream.

  _Use this when an agent is asked to track sentiment shifts after a patch, sale, or controversy._

  ```bash
  steam-web-pp-cli review-velocity 1245620 --window 30d --json
  ```
- **`news search`** — FTS5 search across the title and contents of every news post you've synced, optionally scoped by appid or date range.

  _Use this when an agent is asked to dig up patch notes, devlog mentions, or news around a specific topic across the user's library._

  ```bash
  steam-web-pp-cli news search 'patch notes' --since 2026-04-01 --json
  ```
- **`play-trend`** — Show concurrent-player count over time for one app as a sparkline plus min/max/last over a rolling window — value scales with how often you sample.

  _Use this when an agent needs to see whether a game's playerbase is growing, falling, or has spiked around an event — sample the count every few hours via cron and the window query becomes meaningful within a week._

  ```bash
  steam-web-pp-cli play-trend 1245620 --window 7d --json
  ```

### Friend-graph intelligence
- **`friends compare`** — Rank everyone in your friend list by hours spent in a specific game, with throttled fan-out so you don't trip Steam's 25 req/s budget.

  _Use this when an agent is asked 'who in my friends has the most hours in <game>' or 'who owns this and never played'._

  ```bash
  steam-web-pp-cli friends compare 1245620 --my-steamid 76561197960287930 --agent --select results.persona_name,results.playtime_hours
  ```
- **`library compare`** — Set operations across two libraries — what's mine-only, what's theirs-only, what's shared with playtime delta.

  _Use this when an agent is asked 'what games do my friend and I both own' or to plan a co-op session._

  ```bash
  steam-web-pp-cli library compare 76561197960287930 --my-steamid 76561197960287930 --shared --json
  ```
- **`currently-playing`** — Show which friends are in-game right now and what they're playing — one batched API call across the friend list, no fanout.

  _Use this when an agent is asked 'who is online and playing what' or to power a status panel._

  ```bash
  steam-web-pp-cli currently-playing --my-steamid 76561197960287930 --json
  ```
- **`achievement-leaderboard`** — Rank your friends by achievement completion percentage for one app, throttled fan-out via the same limiter that powers friends compare.

  _Use this when an agent is asked 'who in my friends is closest to 100% in <game>' or to seed a competitive completion challenge._

  ```bash
  steam-web-pp-cli achievement-leaderboard 1245620 --my-steamid 76561197960287930 --json
  ```

### Achievement intelligence
- **`next-achievement`** — Across your entire library, surface the achievement with the highest global unlock percentage that you still don't have.

  _Use this when an agent is asked 'what should I go unlock next' or to recommend low-effort achievement progress for completionists._

  ```bash
  steam-web-pp-cli next-achievement --steamid 76561197960287930 --limit 10 --json
  ```
- **`achievement-hunt`** — Render the full achievement schema for one app side-by-side with your unlock state and the global rarity of each achievement in one table.

  _Use this when an agent needs the full unlock landscape for one game to plan a completion run._

  ```bash
  steam-web-pp-cli achievement-hunt 1245620 --steamid 76561197960287930 --locked --json
  ```
- **`rare-achievements`** — Surface your rarest achievement unlocks across all owned games — the inverse of the next-achievement query, sorted by ascending global percentage.

  _Use this when an agent is asked to summarize what the user is proud of, or to power a profile-flex panel._

  ```bash
  steam-web-pp-cli rare-achievements --steamid 76561197960287930 --limit 10 --json
  ```

## Command Reference

**iauthentication-service** — Manage iauthentication service

- `steam-web-pp-cli iauthentication-service begin-auth-session-via-credentials` — BeginAuthSessionViaCredentials operation of IAuthenticationService
- `steam-web-pp-cli iauthentication-service begin-auth-session-via-qr` — BeginAuthSessionViaQR operation of IAuthenticationService
- `steam-web-pp-cli iauthentication-service get-auth-session-info` — GetAuthSessionInfo operation of IAuthenticationService
- `steam-web-pp-cli iauthentication-service get-auth-session-risk-info` — GetAuthSessionRiskInfo operation of IAuthenticationService
- `steam-web-pp-cli iauthentication-service get-password-rsapublic-key` — GetPasswordRSAPublicKey operation of IAuthenticationService
- `steam-web-pp-cli iauthentication-service notify-risk-quiz-results` — NotifyRiskQuizResults operation of IAuthenticationService
- `steam-web-pp-cli iauthentication-service poll-auth-session-status` — PollAuthSessionStatus operation of IAuthenticationService
- `steam-web-pp-cli iauthentication-service update-auth-session-with-mobile-confirmation` — UpdateAuthSessionWithMobileConfirmation operation of IAuthenticationService
- `steam-web-pp-cli iauthentication-service update-auth-session-with-steam-guard-code` — UpdateAuthSessionWithSteamGuardCode operation of IAuthenticationService

**ibroadcast-service** — Manage ibroadcast service

- `steam-web-pp-cli ibroadcast-service` — PostGameDataFrameRTMP operation of IBroadcastService

**icheat-reporting-service** — Manage icheat reporting service

- `steam-web-pp-cli icheat-reporting-service` — ReportCheatData operation of ICheatReportingService

**iclient-stats-1046930** — Manage iclient stats 1046930

- `steam-web-pp-cli iclient-stats-1046930` — ReportEvent operation of IClientStats_1046930

**icontent-server-config-service** — Manage icontent server config service

- `steam-web-pp-cli icontent-server-config-service get-steam-cache-node-params` — GetSteamCacheNodeParams operation of IContentServerConfigService
- `steam-web-pp-cli icontent-server-config-service set-steam-cache-client-filters` — SetSteamCacheClientFilters operation of IContentServerConfigService
- `steam-web-pp-cli icontent-server-config-service set-steam-cache-performance-stats` — SetSteamCachePerformanceStats operation of IContentServerConfigService

**icontent-server-directory-service** — Manage icontent server directory service

- `steam-web-pp-cli icontent-server-directory-service get-cdnfor-video` — GetCDNForVideo operation of IContentServerDirectoryService
- `steam-web-pp-cli icontent-server-directory-service get-client-update-hosts` — GetClientUpdateHosts operation of IContentServerDirectoryService
- `steam-web-pp-cli icontent-server-directory-service get-depot-patch-info` — GetDepotPatchInfo operation of IContentServerDirectoryService
- `steam-web-pp-cli icontent-server-directory-service get-servers-for-steam-pipe` — GetServersForSteamPipe operation of IContentServerDirectoryService
- `steam-web-pp-cli icontent-server-directory-service pick-single-content-server` — PickSingleContentServer operation of IContentServerDirectoryService

**icsgoplayers-730** — Manage icsgoplayers 730

- `steam-web-pp-cli icsgoplayers-730` — GetNextMatchSharingCode operation of ICSGOPlayers_730

**icsgoservers-730** — Manage icsgoservers 730

- `steam-web-pp-cli icsgoservers-730 get-game-maps-playtime` — GetGameMapsPlaytime operation of ICSGOServers_730
- `steam-web-pp-cli icsgoservers-730 get-game-servers-status` — GetGameServersStatus operation of ICSGOServers_730

**icsgotournaments-730** — Manage icsgotournaments 730

- `steam-web-pp-cli icsgotournaments-730 get-tournament-fantasy-lineup` — GetTournamentFantasyLineup operation of ICSGOTournaments_730
- `steam-web-pp-cli icsgotournaments-730 get-tournament-items` — GetTournamentItems operation of ICSGOTournaments_730
- `steam-web-pp-cli icsgotournaments-730 get-tournament-layout` — GetTournamentLayout operation of ICSGOTournaments_730
- `steam-web-pp-cli icsgotournaments-730 get-tournament-predictions` — GetTournamentPredictions operation of ICSGOTournaments_730
- `steam-web-pp-cli icsgotournaments-730 upload-tournament-fantasy-lineup` — UploadTournamentFantasyLineup operation of ICSGOTournaments_730
- `steam-web-pp-cli icsgotournaments-730 upload-tournament-predictions` — UploadTournamentPredictions operation of ICSGOTournaments_730

**idota2-match-570** — Manage idota2 match 570

- `steam-web-pp-cli idota2-match-570 get-live-league-games` — GetLiveLeagueGames operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-match-details` — GetMatchDetails operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-match-history` — GetMatchHistory operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-match-history-by-sequence-num` — GetMatchHistoryBySequenceNum operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-team-info-by-team-id` — GetTeamInfoByTeamID operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-top-live-event-game` — GetTopLiveEventGame operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-top-live-game` — GetTopLiveGame operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-top-weekend-tourney-games` — GetTopWeekendTourneyGames operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-tournament-player-stats` — GetTournamentPlayerStats operation of IDOTA2Match_570
- `steam-web-pp-cli idota2-match-570 get-tournament-player-stats-idota2match570` — GetTournamentPlayerStats operation of IDOTA2Match_570

**idota2-match-stats-570** — Manage idota2 match stats 570

- `steam-web-pp-cli idota2-match-stats-570` — GetRealtimeStats operation of IDOTA2MatchStats_570

**idota2-stream-system-570** — Manage idota2 stream system 570

- `steam-web-pp-cli idota2-stream-system-570` — GetBroadcasterInfo operation of IDOTA2StreamSystem_570

**idota2-ticket-570** — Manage idota2 ticket 570

- `steam-web-pp-cli idota2-ticket-570 get-steam-idfor-badge-id` — GetSteamIDForBadgeID operation of IDOTA2Ticket_570
- `steam-web-pp-cli idota2-ticket-570 set-steam-account-purchased` — SetSteamAccountPurchased operation of IDOTA2Ticket_570
- `steam-web-pp-cli idota2-ticket-570 steam-account-valid-for-badge-type` — SteamAccountValidForBadgeType operation of IDOTA2Ticket_570

**iecon-dota2-570** — Manage iecon dota2 570

- `steam-web-pp-cli iecon-dota2-570 get-event-stats-for-account` — GetEventStatsForAccount operation of IEconDOTA2_570
- `steam-web-pp-cli iecon-dota2-570 get-heroes` — GetHeroes operation of IEconDOTA2_570
- `steam-web-pp-cli iecon-dota2-570 get-item-creators` — GetItemCreators operation of IEconDOTA2_570
- `steam-web-pp-cli iecon-dota2-570 get-item-workshop-published-file-ids` — GetItemWorkshopPublishedFileIDs operation of IEconDOTA2_570
- `steam-web-pp-cli iecon-dota2-570 get-rarities` — GetRarities operation of IEconDOTA2_570
- `steam-web-pp-cli iecon-dota2-570 get-tournament-prize-pool` — GetTournamentPrizePool operation of IEconDOTA2_570

**iecon-items-1046930** — Manage iecon items 1046930

- `steam-web-pp-cli iecon-items-1046930` — GetPlayerItems operation of IEconItems_1046930

**iecon-items-1269260** — Manage iecon items 1269260

- `steam-web-pp-cli iecon-items-1269260` — GetEquippedPlayerItems operation of IEconItems_1269260

**iecon-items-440** — Manage iecon items 440

- `steam-web-pp-cli iecon-items-440 get-player-items` — GetPlayerItems operation of IEconItems_440
- `steam-web-pp-cli iecon-items-440 get-schema` — GetSchema operation of IEconItems_440
- `steam-web-pp-cli iecon-items-440 get-schema-items` — GetSchemaItems operation of IEconItems_440
- `steam-web-pp-cli iecon-items-440 get-schema-overview` — GetSchemaOverview operation of IEconItems_440
- `steam-web-pp-cli iecon-items-440 get-schema-url` — GetSchemaURL operation of IEconItems_440
- `steam-web-pp-cli iecon-items-440 get-store-meta-data` — GetStoreMetaData operation of IEconItems_440
- `steam-web-pp-cli iecon-items-440 get-store-status` — GetStoreStatus operation of IEconItems_440

**iecon-items-570** — Manage iecon items 570

- `steam-web-pp-cli iecon-items-570 get-player-items` — GetPlayerItems operation of IEconItems_570
- `steam-web-pp-cli iecon-items-570 get-store-meta-data` — GetStoreMetaData operation of IEconItems_570

**iecon-items-583950** — Manage iecon items 583950

- `steam-web-pp-cli iecon-items-583950` — GetEquippedPlayerItems operation of IEconItems_583950

**iecon-items-620** — Manage iecon items 620

- `steam-web-pp-cli iecon-items-620 get-player-items` — GetPlayerItems operation of IEconItems_620
- `steam-web-pp-cli iecon-items-620 get-schema` — GetSchema operation of IEconItems_620

**iecon-items-730** — Manage iecon items 730

- `steam-web-pp-cli iecon-items-730 get-player-items` — GetPlayerItems operation of IEconItems_730
- `steam-web-pp-cli iecon-items-730 get-schema` — GetSchema operation of IEconItems_730
- `steam-web-pp-cli iecon-items-730 get-schema-url` — GetSchemaURL operation of IEconItems_730
- `steam-web-pp-cli iecon-items-730 get-store-meta-data` — GetStoreMetaData operation of IEconItems_730

**iecon-service** — Manage iecon service

- `steam-web-pp-cli iecon-service get-trade-history` — GetTradeHistory operation of IEconService
- `steam-web-pp-cli iecon-service get-trade-hold-durations` — GetTradeHoldDurations operation of IEconService
- `steam-web-pp-cli iecon-service get-trade-offer` — GetTradeOffer operation of IEconService
- `steam-web-pp-cli iecon-service get-trade-offers` — GetTradeOffers operation of IEconService
- `steam-web-pp-cli iecon-service get-trade-offers-summary` — GetTradeOffersSummary operation of IEconService
- `steam-web-pp-cli iecon-service get-trade-status` — GetTradeStatus operation of IEconService

**igame-notifications-service** — Manage igame notifications service

- `steam-web-pp-cli igame-notifications-service user-create-session` — UserCreateSession operation of IGameNotificationsService
- `steam-web-pp-cli igame-notifications-service user-delete-session` — UserDeleteSession operation of IGameNotificationsService
- `steam-web-pp-cli igame-notifications-service user-update-session` — UserUpdateSession operation of IGameNotificationsService

**igame-servers-service** — Manage igame servers service

- `steam-web-pp-cli igame-servers-service create-account` — CreateAccount operation of IGameServersService
- `steam-web-pp-cli igame-servers-service delete-account` — DeleteAccount operation of IGameServersService
- `steam-web-pp-cli igame-servers-service get-account-list` — GetAccountList operation of IGameServersService
- `steam-web-pp-cli igame-servers-service get-account-public-info` — GetAccountPublicInfo operation of IGameServersService
- `steam-web-pp-cli igame-servers-service get-server-ips-by-steam-id` — GetServerIPsBySteamID operation of IGameServersService
- `steam-web-pp-cli igame-servers-service get-server-steam-ids-by-ip` — GetServerSteamIDsByIP operation of IGameServersService
- `steam-web-pp-cli igame-servers-service query-by-fake-ip` — QueryByFakeIP operation of IGameServersService
- `steam-web-pp-cli igame-servers-service query-login-token` — QueryLoginToken operation of IGameServersService
- `steam-web-pp-cli igame-servers-service reset-login-token` — ResetLoginToken operation of IGameServersService
- `steam-web-pp-cli igame-servers-service set-memo` — SetMemo operation of IGameServersService

**igcversion-1046930** — Manage igcversion 1046930

- `steam-web-pp-cli igcversion-1046930 get-client-version` — GetClientVersion operation of IGCVersion_1046930
- `steam-web-pp-cli igcversion-1046930 get-server-version` — GetServerVersion operation of IGCVersion_1046930

**igcversion-1269260** — Manage igcversion 1269260

- `steam-web-pp-cli igcversion-1269260 get-client-version` — GetClientVersion operation of IGCVersion_1269260
- `steam-web-pp-cli igcversion-1269260 get-server-version` — GetServerVersion operation of IGCVersion_1269260

**igcversion-1422450** — Manage igcversion 1422450

- `steam-web-pp-cli igcversion-1422450 get-client-version` — GetClientVersion operation of IGCVersion_1422450
- `steam-web-pp-cli igcversion-1422450 get-server-version` — GetServerVersion operation of IGCVersion_1422450

**igcversion-440** — Manage igcversion 440

- `steam-web-pp-cli igcversion-440 get-client-version` — GetClientVersion operation of IGCVersion_440
- `steam-web-pp-cli igcversion-440 get-server-version` — GetServerVersion operation of IGCVersion_440

**igcversion-570** — Manage igcversion 570

- `steam-web-pp-cli igcversion-570 get-client-version` — GetClientVersion operation of IGCVersion_570
- `steam-web-pp-cli igcversion-570 get-server-version` — GetServerVersion operation of IGCVersion_570

**igcversion-583950** — Manage igcversion 583950

- `steam-web-pp-cli igcversion-583950 get-client-version` — GetClientVersion operation of IGCVersion_583950
- `steam-web-pp-cli igcversion-583950 get-server-version` — GetServerVersion operation of IGCVersion_583950

**igcversion-730** — Manage igcversion 730

- `steam-web-pp-cli igcversion-730` — GetServerVersion operation of IGCVersion_730

**ihelp-request-logs