mcp-server-steam
Provides tools for interacting with the Steam Web API, enabling AI agents to access user profiles, game libraries, achievements, store details, workshop items, reviews, and more.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-steamget the top 10 most played games in my library"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server-steam
AI 를 활용해 생성된 프로젝트입니다.
FastMCP를 사용하여 Steam Web API와 통합하는 종합 MCP(Model Context Protocol) 서버입니다.
주요 기능
사용자 프로필 및 통계
프로필 정보 (닉네임, 아바타, 계정 상세)
친구 목록
소유 게임 라이브러리
플레이시간 데이터
최근 플레이한 게임
Steam 레벨
업적 진행상황
게임 정보 및 스토어
게임 상세 정보 및 메타데이터
스토어 가격 및 할인 정보
뉴스 및 업데이트
게임 검색
특정 게임의 업적 데이터
커뮤니티 기능
Steam 워크샵 아이템
사용자 리뷰
VAC 및 게임 밴 상태
Related MCP server: steam-mcp
PyPI에서 설치
PyPI에 게시된 후 다음과 같이 설치할 수 있습니다:
pip install mcp-server-steam설치 후 다음과 같이 실행합니다:
mcp-server-steam소스에서 설치
또는 소스 코드에서 직접 설치합니다:
저장소 클론:
git clone <repository-url>
cd mcp-server-steamuv로 의존성 설치:
uv sync패키지 설치:
uv pip install -e .Steam Web API 키 발급:
Steam 계정으로 로그인
도메인 등록 후 API 키 복사
환경 설정:
중요: .env 파일에 API 키를 설정해야 합니다.
# .env.example을 복사해서 .env 파일 생성
cp .env.example .env
# .env 파일을 텍스트 편집기로 열어서 STEAM_API_KEY 추가
# 예: STEAM_API_KEY=YOUR_API_KEY_HERE
# (선택사항) Steam ID를 기본값으로 설정하려면:
# STEAM_USER_ID=76561198XXXXXXXXXXXAPI 키 발급: https://steamcommunity.com/dev/apikey
사용 방법
서버 실행
# PyPI에서 설치한 경우
mcp-server-steam
# 소스에서 개발 중인 경우
uv run python -m mcp_server_steam서버가 STDIO 전송 방식으로 시작되며, Claude Desktop 같은 MCP 클라이언트에서 사용할 수 있습니다.
Claude Desktop Configuration
📖 자세한 설정 가이드: CLAUDE_CONFIG.md
PyPI에서 설치한 경우 (권장)
Claude Desktop 설정 파일에 추가:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"steam": {
"command": "uvx",
"args": ["mcp-server-steam"],
"env": {
"STEAM_API_KEY": "${STEAM_API_KEY}",
"STEAM_USER_ID": "${STEAM_USER_ID}"
}
}
}
}또는 pip으로 설치한 경우:
{
"mcpServers": {
"steam": {
"command": "mcp-server-steam",
"env": {
"STEAM_API_KEY": "${STEAM_API_KEY}",
"STEAM_USER_ID": "${STEAM_USER_ID}"
}
}
}
}소스에서 개발하는 경우
{
"mcpServers": {
"steam": {
"command": "uv",
"args": ["run", "python", "-m", "mcp_server_steam"],
"cwd": "/path/to/mcp-server-steam",
"env": {
"STEAM_API_KEY": "${STEAM_API_KEY}",
"STEAM_USER_ID": "${STEAM_USER_ID}"
}
}
}
}환경 변수 사용 (권장)
API 키를 직접 입력하는 대신 환경 변수를 사용하세요:
# ~/.zshrc 또는 ~/.zprofile에 추가
export STEAM_API_KEY="your_steam_api_key_here"설정에서는:
"env": {
"STEAM_API_KEY": "${STEAM_API_KEY}"
}Claude Desktop 재시작
설정을 적용하려면 Claude Desktop을 완전히 종료했다가 다시 시작하세요.
MCP 클라이언트 설정
일반적으로는 PyPI 버전을 사용하는 것이 좋습니다:
{
"mcpServers": {
"steam": {
"command": "uvx",
"args": ["mcp-server-steam"],
"env": {
"STEAM_API_KEY": "${STEAM_API_KEY}",
"STEAM_USER_ID": "${STEAM_USER_ID}"
}
}
}
}FastMCP CLI로 테스트
# 사용 가능한 도구 목록 보기
uv run fastmcp list src/mcp_server_steam/server.py
# 도구 호출 테스트
uv run fastmcp call src/mcp_server_steam/server.py get_user_profile steam_id=76561198000000000사용 가능한 도구
프로필 도구
get_user_profile- Steam 사용자 프로필 조회get_friends_list- 친구 목록 조회get_owned_games- 소유한 모든 게임 조회get_recently_played_games- 최근 플레이한 게임 조회get_steam_level- Steam 레벨 조회get_player_achievements- 특정 게임의 업적 진행상황 조회
게임 도구
get_game_details- 스토어에서 게임 정보 조회get_game_news- 게임 뉴스 및 업데이트 조회get_global_achievement_percentages- 전체 업적 통계 조회search_games- Steam에서 게임 검색get_game_schema- 업적 및 통계 스키마 조회
커뮤니티 도구
get_workshop_items- Steam 워크샵 아이템 조회get_workshop_item_details- 워크샵 아이템 상세 정보get_user_reviews- 게임 사용자 리뷰 조회get_player_bans- VAC 및 게임 밴 상태 조회
유틸리티 도구
resolve_vanity_url- Vanity URL을 Steam ID로 변환
리소스
steam://config- 서버 설정steam://supported-games- 일반적인 게임 App ID 목록
Steam ID vs App ID
Steam ID (SteamID): 64비트 사용자 계정 ID (예: 76561198000000000)
App ID (AppID): Steam 스토어에서의 게임 식별자 (예: CS2의 경우 730)
커스텀 프로필 URL을 Steam ID로 변환하려면 resolve_vanity_url을 사용하세요.
속도 제한 (Rate Limiting)
서버는 Steam API 제한을 준수하기 위해 속도 제한을 구현합니다:
분당 100회 요청
오류 발생 시 자동 지수 백오프
속도 제한 응답에 대한 적절한 에러 처리
프로젝트 구조
mcp-server-steam/
├── src/
│ └── mcp_server_steam/
│ ├── __init__.py
│ ├── __main__.py # 메인 진입점
│ ├── server.py # MCP 서버
│ ├── steam_client.py # Steam API 클라이언트
│ ├── config.py # 설정
│ └── tools/ # 도구 모듈
│ ├── __init__.py
│ ├── profile.py # 사용자 프로필 도구
│ ├── games.py # 게임 정보 도구
│ └── community.py # 커뮤니티 도구
├── pyproject.toml # 프로젝트 설정 및 의존성
├── README.md # 이 파일
├── .env # API 키 (git에 포함되지 않음)
└── .env.example # 환경변수 템플릿에러 처리
서버는 다음 경우에 명확한 에러 메시지를 제공합니다:
유효하지 않은 Steam ID 또는 App ID
API 키 누락
속도 제한 초과
네트워크 오류
Steam API 오류
AI 사용 예시
예시 1: 사용자 프로필 조회
사용자: "내 Steam 프로필 조회해줘"
AI: resolve_vanity_url을 호출하여 vanity URL을 Steam ID로 변환
AI: get_user_profile을 호출하여 프로필 정보 조회예시 2: 게임 라이브러리 분석
사용자: "내 게임 목록 보여줘"
AI: get_user_profile로 Steam ID 획득
AI: get_owned_games로 소유 게임 목록 조회
AI: 플레이타임 기준으로 정렬하고 상위 게임 요약예시 3: 게임 검색 및 상세 정보
사용자: "엘든 링 GO 정보 알려줘"
AI: search_games로 "ELDEN RING" 검색
AI: get_game_details로 상세 정보, 가격, 장르 조회예시 4: 업적 확인
사용자: "내 염완의 왕 게임 업적이 어떻게 돼?"
AI: get_owned_games로 게임 목록 확인
AI: get_player_achievements로 염완의 왕 업적 조회
AI: get_global_achievement_percentages로 전체 플레이어 대비 비교예시 5: 워크샵 모드 찾기
사용자: "스카이림 모드 추천해줘"
AI: search_games로 스타필드 스카이림(Skyrim, App ID: 72850) 검색
AI: get_workshop_items로 인기 모드 목록 조회
AI: get_workshop_item_details로 특정 모드 상세 정보 확인AI를 위한 팁
도구 사용 순서:
resolve_vanity_url→get_user_profile→ 다른 도구들데이터 효율성:
include_app_info=True로 한 번에 게임 정보까지 가져오기오류 처리: Steam ID가 유효하지 않으면 vanity URL 변환 먼저 시도
언어 설정: 한국 사용자를 위한
language="korean"또는language="english"파라미터 활용
기여
기여를 환영합니다! 이슈나 풀 리퀘스트를 자유롭게 제출해 주세요.
참고 자료
라이선스
MIT License - 자세한 내용은 LICENSE 파일을 참조하세요
Available Tools
16 toolsget_friends_listA
Steam 사용자의 친구 목록을 조회합니다.
반환 데이터: 각 친구의 Steam ID(steamid), 친구 맺은 날짜(friend_since timestamp), 관계(relationship) 등을 포함합니다.
사용 예시: steam_id="76561198000000000", relationship="all"
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | Yes | 친구 목록을 조회할 사용자의 64-bit Steam ID입니다. | |
| relationship | No | 친구 관계 필터. 'all'=모든 친구, 'friend'=친구만 | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses return data fields (steamid, friend_since, relationship) and mentions relationship filter behavior. It does not disclose potential rate limits, auth requirements, or side effects, but it's a read-only operation implied by '조회' (retrieve). This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with purpose, and includes a useful example. It is structured with a summary, return data explanation, and example. It's slightly verbose due to the example but each part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the essential aspects: what it does, what it returns, and a usage example. An output schema exists, so return structure details are not necessary. It's complete enough for an agent to select and invoke the tool correctly, though it could mention edge cases like empty friend lists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds value by providing a concrete usage example and explaining the 'relationship' filter values ('all' vs 'friend') in the schema. This goes beyond the schema definitions and helps clarify expected input format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves a Steam user's friend list (친구 목록을 조회합니다), which matches the tool name. It distinguishes from sibling tools like get_user_profile and get_owned_games by specifying the resource (friends) and operation (list). However, it doesn't explicitly contrast with sibling tools, so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an example usage with specific parameter values, implying when to use it (to fetch friends with optional relationship filter). But it doesn't explicitly state when to use this tool versus alternatives, nor does it mention exclusions or prerequisites beyond the required steam_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_detailsA
Steam 상점에서 게임 상세 정보를 조회합니다.
반환 데이터: 각 게임의 이름(name), 개발사(developers), 퍼블리셔(publishers), 가격 정보(price_overview), 장르(genres), 릴리스 날짜(release_date), 플랫폼(true/false), 메타데이터 등을 포함합니다.
사용 예시: app_ids=[730, 570, 440], language="english"
| Name | Required | Description | Default |
|---|---|---|---|
| app_ids | Yes | 상세 정보를 조회할 게임들의 Steam App ID 리스트입니다. 최대 100개까지 한 번에 조회 가능합니다. | |
| language | No | 게임 정보 언어입니다. 'english', 'korean' 등을 지원합니다. | english |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return data content and a usage example, but does not mention error handling, rate limits, authentication requirements, or behavior for invalid app_ids. This is a mild transparency gap, hence a middle score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It opens with the primary action, then lists return data, and ends with a concrete usage example. Every sentence adds value, with no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 parameters, no nested objects) and an output schema exists, so the description does not need to explain return values in depth. It nevertheless does so, which is slightly redundant but still useful. The description, schema, and context signals together provide enough information for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters with descriptive text, including the 100-item limit for app_ids and supported language strings. The description also provides an example of parameter usage ('app_ids=[730, 570, 440], language="english"'), reinforcing the schema. It does not add meaning beyond what the schema already provides, so the baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to retrieve game details from the Steam store. It lists specific return fields (name, developers, publishers, price, etc.), which distinguishes it from sibling tools like get_game_schema or search_games. The verb '조회합니다' (retrieve) and resource '게임 상세 정보' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you have Steam app_ids and need detailed game information. It provides a usage example with app_ids and language, but does not explicitly mention alternatives or exclusions. The context makes the use case clear, though it stops short of naming sibling tools for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_newsA
특정 게임의 뉴스와 업데이트를 조회합니다.
반환 데이터: 각 뉴스의 제목(title), 내용(contents), URL(url), 날짜(date), 피드 라벨(feed_label) 등을 포함합니다.
사용 예시: app_id=730, count=5, max_length=300
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 반환할 뉴스 개수입니다. 최대 20개까지 가능합니다. | |
| app_id | Yes | 뉴스를 조회할 게임의 Steam App ID입니다. | |
| max_length | No | 각 뉴스 항목의 최대 길이입니다(문자 수). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the return fields (title, contents, URL, date, feed_label) and gives an example, but does not mention rate limits, authentication, or any side effects. This is sufficient for a simple read-only query, but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a single sentence for the main purpose, a sentence listing return fields, and a usage example. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (as indicated by context signals), the description need not explain return values in detail. It already covers the core fields and provides an example, while the schema handles the rest. It lacks edge-case or error handling details, but these are not critical for a straightforward query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with clear descriptions (e.g., app_id is the Steam App ID, count is the number of news items, max_length is the character limit). The description's usage example (app_id=730, count=5, max_length=300) adds a concrete illustration but no new semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it queries news and updates for a specific game ('특정 게임의 뉴스와 업데이트를 조회합니다'), making the operation clear. It distinguishes itself from sibling tools like get_game_details and get_user_reviews, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage example with concrete parameter values, implying the tool is for retrieving game news. However, it offers no explicit guidance on when to use this tool over alternatives or exclusions, leaving the agent to infer context from the tool's name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_schemaA
게임의 업적과 통계 스키마를 조회합니다.
반환 데이터: 게임의 �적들(achievements), 사용 가능한 통계(availableGameStats), 통계 정의(gameStats) 등을 포함합니다.
사용 예시: app_id=730, language="english"
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | 게임 스키마를 조회할 게임의 Steam App ID입니다. | |
| language | No | 업적 이름과 설명의 언어입니다. | english |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It discloses the return data (achievements, availableGameStats, gameStats), which is helpful. However, it doesn't mention whether the operation is read-only, any permissions needed, or error conditions. The read-only nature is implied by '조회' but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: a one-sentence purpose, a list of return data, and a usage example. It is well-structured and wastes no words. However, there is a minor corrupted character in the text ('�적들'), slightly detracting from polish.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, an output schema, and full parameter coverage, the description is quite complete. It states the purpose and return contents. It lacks guidance on when to use versus alternatives, but that's covered under usage guidelines. The availability of an output schema reduces the need to explain return values in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (app_id and language) with 100% coverage. The description adds a concrete usage example, but no additional semantic meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool retrieves the game's achievement and stats schema, using a specific verb ('조회합니다') and resource ('업적과 통계 스키마'). This distinguishes it from siblings like get_player_achievements (player-specific) and get_game_details (general info).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage example (app_id=730, language='english'), implying this tool is for retrieving schema data. It doesn't explicitly mention when not to use it or name alternatives, but the context is clear enough for an agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_global_achievement_percentagesA
게임의 전역 업적 달성률을 조회합니다.
반환 데이터: 각 업적의 이름(name)과 전체 플레이어 중 달성한 비율(percentage)을 포함합니다. 이를 통해 해당 업적이 희규한지 일반적인지 파악할 수 있습니다.
사용 예시: app_id=730
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | 업적 통계를 조회할 게임의 Steam App ID입니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden of behavioral disclosure. It explicitly states the return data (achievement name and percentage) and explains how to interpret the results (rare vs common), providing useful behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it starts with the main purpose, then explains the return data, provides an interpretation guideline, and ends with a usage example. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a simple tool with one parameter and an existing output schema, the description adequately covers the purpose, return shape, and interpretation. It could potentially mention edge cases (e.g., games without achievements), but the current description is sufficiently complete for a typical query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for the single parameter app_id, making the baseline 3. The description adds a usage example (app_id=730) which is helpful but does not add any new semantic meaning to the parameter beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb '조회합니다' (queries) and clearly identifies the resource as the game's global achievement percentages. It differentiates itself from the sibling get_player_achievements by emphasizing global achievement statistics, making its scope distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage context by focusing on global achievement rates, which is clearly distinct from player-specific tools. It also provides a usage example, but it does not explicitly mention when not to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_owned_gamesA
사용자가 소유한 모든 게임을 조회합니다.
반환 데이터: 각 게임의 App ID(appid), 이름(name), 총 플레이시간(playtime_forever, 분 단위), 최근 플레이시간(playtime_2weeks, 분 단위), 마지막 플레이 날짜(last_played, Unix timestamp) 등을 포함합니다.
플레이시간은 '분' 단위입니다. 60시간 = 3600분입니다.
사용 예시: steam_id="76561198000000000", include_app_info=True
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | No | 게임 라이브러리를 조회할 사용자의 64-bit Steam ID입니다. 설정하지 않으면 환경변수 STEAM_USER_ID를 사용합니다. | |
| include_app_info | No | 게임 이름과 메타데이터를 포함할지 여부입니다. 기본값은 true입니다. | |
| include_played_free_games | No | 플레이한 적 있는 무료 게임을 포함할지 여부입니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses behavioral traits such as return data fields, the fact that playtime is in minutes (with a conversion example), and the fallback to environment variable STEAM_USER_ID for steam_id. However, it does not mention rate limits, authentication requirements beyond the env var, or potential pagination/limits, leaving some behavioral aspects opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose, return data, unit clarification, and a usage example. Each sentence adds value, though the unit clarification and example are slightly redundant with the schematic information. Overall, it is efficient and front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the input schema is fully documented, the description provides sufficient context for an agent to select and invoke the tool. It covers the resource being queried, key return fields, and a concrete example. It could be enhanced by explicitly differentiating from get_recently_played_games, but this is not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all three parameters, including defaults and the env var fallback for steam_id. The description adds an example (steam_id='76561198000000000', include_app_info=True) but does not provide additional semantics beyond the schema. This matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '사용자가 소유한 모든 게임을 조회합니다' (retrieves all games owned by the user), using a specific verb and resource. It distinguishes from siblings like get_recently_played_games by focusing on the complete owned library, and lists key return fields (appid, name, playtimes, last_played), making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context (gets all owned games) but does not explicitly state when to use this tool versus alternatives like get_recently_played_games or get_game_details. No exclusions or alternative tool mentions are provided, so the usage guidance is merely implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_player_achievementsA
특정 게임의 업적 진행상황을 조회합니다.
반환 데이터: 각 업적의 이름(name), 달성 여부(achieved), 달성 시간(unlocktime, Unix timestamp), 설명(description) 등을 포함합니다.
사용 예시: steam_id="76561198000000000", app_id=730, language="english"
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | 업적을 조회할 게임의 Steam App ID입니다. 예: 730(CS2), 570(Dota 2) | |
| language | No | 업적 이름 언어입니다. 'english', 'korean' 등을 지원합니다. | english |
| steam_id | Yes | 업적을 조회할 사용자의 64-bit Steam ID입니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return data structure and gives a concrete usage example, which is useful behavior information. With no annotations provided, it carries the full burden, but it does not mention access requirements (e.g., public profile), error cases, or rate limits. It is a moderate disclosure but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loading the purpose, then providing return data and a usage example without any wasted words. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple query purpose, all parameters are well-defined in the schema (100% coverage), and an output schema is stated to exist. The description adds return data details and an example, making it fairly complete for an agent. It falls short of 5 due to missing guidance on error conditions or profile privacy requirements, but is otherwise adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions and examples (e.g., app_id 730 for CS2, language 'english'). The description adds a usage example, but it largely duplicates what the schema already provides. Baseline of 3 applies due to high schema coverage, with minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'retrieves achievement progress for a specific game' (특정 게임의 업적 진행상황을 조회합니다), with a specific verb and resource. It also lists return fields (name, achieved, unlocktime, description), distinguishing it from sibling tools like get_global_achievement_percentages or get_game_schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage example showing steam_id, app_id, and language, and implies per-user/per-game usage. However, it does not explicitly state when to use this tool versus alternatives (e.g., global achievement percentages, game schema), and lacks any exclusion criteria or alternative tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_player_bansA
플레이어들의 VAC와 게임 밴 상태를 조회합니다.
반환 데이터: 각 플레이어의 Steam ID(SteamID), VAC 밴 여부(VACBanned), VAC 밴 횟수(numberOfVACBans), 게임 밴 여부, 게임 밴 횟수, 마지막 밴 이후 날짜(DaysSinceLastBan) 등을 포함합니다.
사용 예시: steam_ids=["76561198000000000", "76561198000000001"]
| Name | Required | Description | Default |
|---|---|---|---|
| steam_ids | Yes | 밴 상태를 조회할 사용자들의 64-bit Steam ID 리스트입니다. 최대 100개까지 가능합니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the return fields and includes a usage example, but doesn't mention rate limits, error behavior, or confirm this is a read-only operation. The return data description is helpful but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the purpose, lists return fields efficiently, and includes a short example. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter with 100% schema coverage and an output schema, the description provides sufficient context for an agent. It explains returns even though output schema exists, which is a bonus. It lacks details on error handling but that's not critical for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter is well documented. The description adds a usage example but does not significantly expand on the parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves VAC and game ban status for players, specifying the resource (player bans) and the action (retrieve). It lists the returned fields, distinguishing it from sibling tools like get_user_profile or get_owned_games.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage example with steam_ids and implies use for ban queries. However, it doesn't explicitly state when to use this over alternatives or any exclusions, but the context with sibling tool names makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recently_played_gamesB
최근 플레이한 게임 목록을 조회합니다.
반환 데이터: 최근에 플레이한 게임들의 App ID, 이름, 최근 2주간 플레이시간, 총 플레이시간 등을 포함합니다.
사용 예시: steam_id="76561198000000000", count=10
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 반환할 최근 게임 수입니다. 최대 50개까지 가능합니다. | |
| steam_id | Yes | 최근 플레이한 게임을 조회할 사용자의 64-bit Steam ID입니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention authentication, rate limits, side effects, or any constraints beyond the returned data. This is a significant gap for a tool that performs an external API call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct, comprising a purpose statement, bullet-like return data summary, and an example. Every sentence contributes meaningful information without redundancy or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two parameters and an output schema (as indicated by context signals), the description covers the essential purpose and return fields. It lacks usage guidelines and transparency details, but considering the low complexity and schema richness, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already thoroughly describes both parameters (steam_id and count, with default and max). The description adds a usage example, which is helpful but does not provide additional semantic meaning beyond the schema. With 100% schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a list of recently played games (최근 플레이한 게임 목록을 조회합니다). It specifies the resource and verb, and the return data (App ID, name, playtime) distinguishes it from siblings like get_owned_games or get_user_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It includes a usage example but does not mention exclusions or compare with sibling tools like get_owned_games. Usage context is only implied by the tool's name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_steam_levelA
사용자의 Steam 레벨을 조회합니다.
반환 데이터: 사용자의 Steam 레벨(player_level)을 포함합니다.
사용 예시: steam_id="76561198000000000"
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | Yes | Steam 레벨을 조회할 사용자의 64-bit Steam ID입니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns player_level and gives a usage example, but does not mention error conditions, authentication needs, or that it is a read-only operation. However, the verb '조회' implies a read, and the simple nature of the tool partially compensates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences and an example, all front-loaded with the purpose. Every sentence contributes value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one required parameter and an output schema, and the description includes the purpose, return data, and a usage example. It is slightly incomplete because it lacks any caveats or usage guidance, but for a simple getter it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes steam_id as the 64-bit Steam ID with 100% coverage. The description adds a concrete example value ('76561198000000000'), which clarifies the expected format and aids invocation. This is a useful addition beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'retrieves the user's Steam level' with a specific verb and resource. It distinguishes from sibling tools like get_user_profile or get_player_bans by focusing on the specific Steam level metric. The mention of player_level in return data reinforces the specific output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It only provides a usage example with steam_id, but does not explain context, prerequisites, or exclusions. This is a clear gap given the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileA
Steam 사용자 프로필을 조회합니다.
반환 데이터: 사용자명(personaname), 아바타 URL(avatarfull), 온라인 상태(personastate), 국가(loccountrycode), 프로필 URL(profileurl) 등을 포함합니다.
사용 예시: steam_id="76561198000000000"
| Name | Required | Description | Default |
|---|---|---|---|
| steam_id | Yes | Steam 사용자의 64-bit ID입니다. 예: 76561198000000000. vanity URL(steamcommunity.com/id/xxx)이 있는 경우 먼저 resolve_vanity_url 도구로 변환하세요. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It lists the output fields and implies a read-only operation, but does not mention potential limitations (e.g., private profiles), authentication requirements, or error cases. The description adds some context about return values but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose, a bulleted list of return fields, and a usage example. Every sentence adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema present, the description provides sufficient detail: purpose, return fields, and an example. The only minor gap is the absence of any note about profile visibility or data availability, but the existing output schema likely covers return structure, making this adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the steam_id parameter thoroughly, including an example and the vanity URL resolution note. The description does not add additional parameter semantics beyond what the schema provides, so the baseline score of 3 applies given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a Steam user profile (조회합니다) and lists the specific return fields (personaname, avatarfull, etc.), making its purpose unambiguous. It is distinct from sibling tools like get_friends_list or get_owned_games, which focus on other data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a concrete usage example with steam_id and adds a helpful cross-tool reference to resolve_vanity_url for vanity URLs, indicating a prerequisite workflow. However, it does not explicitly state when to use this tool versus alternatives or when not to use it, though the sibling context makes this implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_reviewsA
게임의 사용자 리뷰를 조회합니다.
반환 데이터: 각 리뷰의 작성자(author, Steam ID 포함), 내용(content), 추천 수(votes_up), 비추천 수(votes_down), 총 플레이시간(author.playtime_forever), 작성일(timestamp), 리뷰 길이 등을 포함합니다.
사용 예시: app_id=730, review_type="all", count=10
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 반환할 리뷰 수입니다. 최대 100개까지 가능합니다. | |
| app_id | Yes | 리뷰를 조회할 게임의 Steam App ID입니다. | |
| review_type | No | 리뷰 필터입니다. 'all'=전체, 'positive'=긍정, 'negative'=부정 | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It discloses return data fields (author, content, votes, playtime, timestamp, length) and provides an example, but it does not mention potential side effects, rate limits, authorization requirements, or error conditions. This is helpful but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a one-sentence purpose, a list of return data, and a usage example. Every sentence contributes useful information, with no redundancy or irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complete input schema, available output schema, and lack of annotations, the description covers the essential context: purpose, return data, and an example. It lacks explicit error-handling or edge-case guidance, but for a simple retrieval tool, it is quite complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes all parameters with 100% coverage, including defaults and value ranges. The description adds a concrete usage example that shows how parameters combine, but it does not provide additional semantic meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Retrieves user reviews for a game' (게임의 사용자 리뷰를 조회합니다). It specifies the action (retrieve) and resource (user reviews), distinguishing it from sibling tools like get_game_details and get_game_news.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a usage example (app_id=730, review_type='all', count=10) that demonstrates how to call the tool, but it does not explicitly state when to use this tool vs alternatives or when not to use it. The intended usage is implied by the verb 'retrieve', but no exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workshop_item_detailsA
워크샵 아이템의 상세 정보를 조회합니다.
반환 데이터: 각 아이템의 상세 메타데이터, 설명, 태그, 미리보기 이미지, 의존성, 구독/좋아요 통계 등을 포함합니다.
사용 예시: published_file_ids=[12345678, 87654321]
| Name | Required | Description | Default |
|---|---|---|---|
| published_file_ids | Yes | 상세 정보를 조회할 워크샵 아이템들의 published file ID 리스트입니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses returned data fields, but it does not mention authorization, rate limits, error behavior, or confirm the read-only nature explicitly, though '조회' implies a safe read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose, followed by useful return data and a concrete example; no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter detail query with an output schema, the description adequately covers purpose, return contents, and an invocation example. It could add caveats around invalid IDs or limits, but is not incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the only parameter (published file ID list), and the description's example only illustrates values without adding semantic meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('조회합니다' - retrieve) and resource ('워크샵 아이템의 상세 정보' - workshop item details), and the return-data breakdown (metadata, tags, preview image, dependencies, stats) clearly distinguishes it from sibling list tool get_workshop_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for retrieving item details and provides a usage example, but it does not explicitly state when to use this tool over alternatives (e.g., get_workshop_items) or mention exclusions/prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workshop_itemsB
Steam Workshop 아이템을 조회합니다.
반환 데이터: 각 아이템의 파일 ID(publishedfileid), 제목(title), 생성자(creator), 구독 수(subscriptions), 좋아요 수(favorites), 파일 크기(file_size), 설명 등을 포함합니다.
사용 예시: app_id=4000(Garry's Mod), query_type=1, page=1, count=30
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 페이지 번호입니다. 결과가 많은 경우 다음 페이지를 조회하세요. | |
| count | No | 페이지당 아이템 수입니다. 최대 100개까지 가능합니다. | |
| app_id | Yes | 워크샵 아이템을 조회할 게임의 Steam App ID입니다. | |
| query_type | No | 쿼리 유형입니다. 1=추천순, 2=최신순, 3=구독순 등. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does disclose the return fields and provides an example call, which is useful. However, it does not mention pagination behavior (despite page/count params), sorting semantics beyond query_type, or any side effects (though likely read-only). It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. It includes example usage and return fields in a compact format, which is efficient. No wasted words, though it could be slightly better organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not explain return values, but it does anyway, which is helpful. The main gap is lack of usage guidance and differentiation from the sibling tool. For a list endpoint with moderate complexity, it is adequate but not comprehensive, especially since no annotations are provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds a concrete example with typical values and the return fields, but does not explain parameter meanings beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries Steam Workshop items and lists the returned fields, which is a specific verb+resource. The name vs. sibling (get_workshop_item_details) suggests a list operation, but the description does not explicitly differentiate between them, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus get_workshop_item_details or other siblings. The example usage with app_id/query_type/page/count provides a concrete scenario, but it does not state exclusions or alternatives, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_vanity_urlA
Steam 커스텀 URL(vanity URL)을 64-bit Steam ID로 변환합니다.
반환 데이터: 변환된 64-bit Steam ID(steamid)와 성공 여부(success)를 포함합니다.
중요: 대부분의 다른 도구들은 64-bit Steam ID가 필요합니다. 사용자가 커스텀 URL만 제공한 경우 먼저 이 도구로 변환해야 합니다.
사용 예시: vanity_url="robinwalker" 또는 vanity_url="customusername"
| Name | Required | Description | Default |
|---|---|---|---|
| vanity_url | Yes | 변환할 Steam 커스텀 URL 또는 vanity ID입니다. steamcommunity.com/id/xxx에서 xxx 부분입니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It mentions the return data includes 'steamid' and 'success', which adds transparency. However, it does not disclose failure behavior (e.g., what happens if the vanity URL is invalid) or explicitly state that the operation is read-only and side-effect-free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, covering the function, return data, an important usage note, and an example in a compact format. Every sentence adds value, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, an output schema exists, and the description explains the purpose, usage context, return data, and provides examples. It is missing explicit error-handling details, but that is not critical for this conversion tool. Overall, it is complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a clear description of the parameter with 100% coverage, so the baseline is 3. The description adds value by providing usage examples ('robinwalker', 'customusername') and clarifying the parameter's role in the conversion process, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the function: converting Steam custom URLs (vanity URLs) to 64-bit Steam IDs. It uses a specific verb and resource, and clearly distinguishes itself from sibling tools, which are all data retrieval tools, by being a conversion utility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage guidance: 'Most other tools require 64-bit Steam ID. If user provides only custom URL, must first convert with this tool.' This explicitly tells when to use it and implies when not to use it (when a 64-bit ID is already available).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gamesA
Steam에서 게임을 검색합니다.
반환 데이터: 일치하는 게임들의 App ID(id), 이름(name), 출시일(released), 가격(price) 등을 포함합니다.
검색 팁: 정확한 게임명을 아는 경우 영어로 검색하거나 App ID를 사용하세요.
사용 예시: query="action", count=25
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 반환할 검색 결과 수입니다. 최대 50개까지 가능합니다. | |
| query | Yes | 게임 검색어입니다. 영어 검색이 더 정확합니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It discloses the return data structure and notes that English searches are more accurate. However, it does not explain matching behavior, error handling, or other edge cases that could affect agent expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose, a list of return fields, a search tip, and an example. Every sentence adds useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter search tool with an output schema, the description covers purpose, return data, and usage guidance. It lacks explicit boundary conditions (e.g., max count is already in schema) but is otherwise complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters, but the description adds value beyond the schema by clarifying that the 'query' works best in English and by providing a concrete usage example with 'query="action", count=25'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Steam에서 게임을 검색합니다' (Searches for games on Steam) with a specific verb and resource. It lists the return fields, distinguishing it from sibling tools that retrieve specific game data or user profiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical search tips: using English or App ID for better accuracy, and includes a usage example. It implies when to use this tool over alternatives (e.g., when you need to find a game by name), though it doesn't explicitly contrast with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v1.0.6- First observed
get_friends_list - First observed
get_game_details - First observed
get_game_news - First observed
get_game_schema - First observed
get_global_achievement_percentages - First observed
get_owned_games - First observed
get_player_achievements - First observed
get_player_bans - First observed
get_recently_played_games - First observed
get_steam_level - First observed
get_user_profile - First observed
get_user_reviews - First observed
get_workshop_item_details - First observed
get_workshop_items - First observed
resolve_vanity_url - First observed
search_games
TDQS
Scored across 16 tools
Each tool targets a distinct resource/action: profile, friends, games, achievements, store details, news, workshop, reviews, bans, and vanity URL resolution. Even similar tools like get_owned_games vs get_recently_played_games are clearly differentiated by scope (all vs recent).
All tool names use snake_case with a verb_noun pattern, predominantly 'get_*' (e.g., get_user_profile, get_friends_list). The two exceptions, search_games and resolve_vanity_url, still follow verb_noun and are semantically distinct, so the overall convention is consistent and predictable.
With 16 tools, the count is slightly above the typical 3-15 sweet spot, but each tool maps to a real Steam Web API endpoint and the coverage is broad, so it does not feel bloated. The slight excess is justified by the platform's feature set.
The set covers major Steam data domains: user profiles, friends, games, achievements, store info, news, workshop, reviews, and bans. Minor gaps exist (e.g., no user game stats or DLC listing), but these are edge cases; core read workflows are well represented.
Maintenance
Related MCP Connectors
Steam Web API: profiles, owned games, achievements, app news, player counts.
Steam profiles, SteamID conversion, bans, FACEIT stats, friends and comparisons. Free, no API key.
Live Steam Market API docs, schemas, products, games, markets and endpoint search.
Live Steam market data for AI agents: top sellers, deals, player counts. Paid per call via x402.
Related MCP Servers
- AlicenseBqualityCmaintenanceProvides tools for interacting with the Steam Web API to access player profiles, game libraries, achievements, statistics, inventories, and game information through natural language.3458 npm5MIT
- AlicenseAqualityBmaintenanceExposes Steam Web API tools as MCP resources for Claude Code, Claude Desktop, and Gemini CLI, enabling profile lookups, game searches, achievement tracking, and more.1110 npm1MIT
- AlicenseAqualityAmaintenanceEnables interaction with Steam: search games, get store details, reviews, prices, discounts, news, and player profiles, libraries, and achievements via the Steam Web API.25128 npm4MIT
- AlicenseNot gradedqualityDmaintenanceProvides Steam Web API integration for querying owned games, player achievements, app news, and store details. Part of the Pipeworx MCP gateway enabling natural language queries to Steam data.3 npmMIT