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 andskills/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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8f307ad06b23a28e807b16c89728a9837035c054bf75909523ea37c25165c86
|
|
| MD5 |
3536a32ca2a3f9753bca6d4924779ffa
|
|
| BLAKE2b-256 |
18821845947317a843b475269a2e9aff9fc1a8d9604f39e69fead81172eacadb
|
Provenance
The following attestation bundles were made for stools_cli-0.1.0.tar.gz:
Publisher:
publish.yml on aotarola/stools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stools_cli-0.1.0.tar.gz -
Subject digest:
b8f307ad06b23a28e807b16c89728a9837035c054bf75909523ea37c25165c86 - Sigstore transparency entry: 1154108760
- Sigstore integration time:
-
Permalink:
aotarola/stools@5a413e7b30d20c74ad6fda2657b6603bdb42dd12 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/aotarola
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a413e7b30d20c74ad6fda2657b6603bdb42dd12 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
619dcfe5b01c2f26031163f45c298bb6792a7a603935741d4f8934b939107246
|
|
| MD5 |
269d361b4a34d9bd0689b4e0eb0a40e7
|
|
| BLAKE2b-256 |
620077fd4ba75be754369ea63da1708a9eb38106cc5e9fa1660492b7fe5da588
|
Provenance
The following attestation bundles were made for stools_cli-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on aotarola/stools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stools_cli-0.1.0-py3-none-any.whl -
Subject digest:
619dcfe5b01c2f26031163f45c298bb6792a7a603935741d4f8934b939107246 - Sigstore transparency entry: 1154108761
- Sigstore integration time:
-
Permalink:
aotarola/stools@5a413e7b30d20c74ad6fda2657b6603bdb42dd12 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/aotarola
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a413e7b30d20c74ad6fda2657b6603bdb42dd12 -
Trigger Event:
release
-
Statement type: