Skip to main content

CLI to extract structured data from Steam (reviews, game search) — designed for LLM agents

Project description

stools

CLI tool to extract structured data from Steam. Outputs JSON to stdout, making it easy to pipe into other tools or consume from LLM agents.

Installation

pipx install stools-cli

Or with pip:

pip install stools-cli

Requires Python 3.9+. No external dependencies.

Commands

stools search

Search Steam for games by name.

stools search <query> [--limit N] [--fields f1,f2,...]
Argument Description
query Search term (e.g. megaman, dark souls)
--limit N Max results to return. Default: 10
--fields Comma-separated fields to keep per result (e.g. app_id,name)

Output schema

{
  "query": "megaman",
  "total_results": 10,
  "results": [
    {
      "app_id": 742300,
      "name": "Mega Man 11",
      "price": { "currency": "USD", "initial": 2999, "final": 2999 },
      "platforms": { "windows": true, "mac": false, "linux": false },
      "metascore": "80"
    }
  ]
}

Examples

# Search for a game
stools search "megaman"

# Get top 3 results, only app_id and name
stools search "dark souls" --limit 3 --fields app_id,name

# Search then fetch reviews for the first result
APP_ID=$(stools search "snake vs snake" 2>/dev/null | jq '.results[0].app_id')
stools reviews "$APP_ID"

stools reviews

Fetch all reviews for a Steam game.

stools reviews <app_id_or_url> [--language CODE] [--limit N] [--fields f1,f2,...] [--output FILE]
Argument Description
app Steam app ID (1005310) or store URL (https://store.steampowered.com/app/1005310/Snake_vs_Snake/)
--language Filter by language code: english, spanish, french, german, etc. Default: all
--limit N Max reviews to return. 0 = all. Default: 0
--fields Comma-separated fields to keep per review (e.g. review,voted_up)
--output FILE Write JSON to a file instead of stdout

Output schema

{
  "app_id": 1005310,
  "query_summary": {
    "num_reviews": 33,
    "review_score": 7,
    "review_score_desc": "Positive",
    "total_positive": 33,
    "total_negative": 0,
    "total_reviews": 33
  },
  "total_fetched": 33,
  "reviews": [
    {
      "recommendationid": "210668843",
      "author": {
        "steamid": "76561198079866033",
        "personaname": "username",
        "num_reviews": 32,
        "playtime_forever": 1554,
        "playtime_at_review": 1554
      },
      "language": "english",
      "review": "Review text here.",
      "timestamp_created": 1764106395,
      "timestamp_updated": 1764106395,
      "voted_up": true,
      "votes_up": 0,
      "votes_funny": 0,
      "steam_purchase": true,
      "received_for_free": false,
      "written_during_early_access": false
    }
  ]
}

Examples

# Fetch all reviews for a game
stools reviews 1005310

# Fetch only English reviews, save to file
stools reviews 1005310 --language english --output reviews.json

# Fetch first 10 reviews, no progress output
stools reviews 1005310 --limit 10
# Use a full Steam URL
stools reviews "https://store.steampowered.com/app/1005310/Snake_vs_Snake/"

# Get only review text and sentiment
stools reviews 1005310 --fields review,voted_up

Exit codes

Code Meaning
0 Success
1 Usage / input error
2 Network / API error

Agent integration

stools ships as a Claude Code plugin. To use it in your agent:

claude install-plugin aotarola/stools

This registers the stools CLI as a skill that Claude Code can discover and invoke automatically. See skills/stools/SKILL.md for the agent-facing documentation.

Design notes

  • JSON only: all output goes to stdout as JSON; errors go to stderr.
  • No dependencies: uses only Python standard library.
  • Subcommand structure: stools <command> — designed to grow with more Steam data commands.
  • Agent-ready: includes .claude-plugin/ manifest and skills/ for automatic discovery by LLM agents.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stools_cli-0.1.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stools_cli-0.1.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file stools_cli-0.1.0.tar.gz.

File metadata

  • Download URL: stools_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for stools_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b8f307ad06b23a28e807b16c89728a9837035c054bf75909523ea37c25165c86
MD5 3536a32ca2a3f9753bca6d4924779ffa
BLAKE2b-256 18821845947317a843b475269a2e9aff9fc1a8d9604f39e69fead81172eacadb

See more details on using hashes here.

Provenance

The following attestation bundles were made for stools_cli-0.1.0.tar.gz:

Publisher: publish.yml on aotarola/stools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stools_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: stools_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for stools_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 619dcfe5b01c2f26031163f45c298bb6792a7a603935741d4f8934b939107246
MD5 269d361b4a34d9bd0689b4e0eb0a40e7
BLAKE2b-256 620077fd4ba75be754369ea63da1708a9eb38106cc5e9fa1660492b7fe5da588

See more details on using hashes here.

Provenance

The following attestation bundles were made for stools_cli-0.1.0-py3-none-any.whl:

Publisher: publish.yml on aotarola/stools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page