Skip to main content
Glama
Zach-Houston

retroachievements-mcp

by Zach-Houston

retroachievements-mcp

A Model Context Protocol server that exposes the RetroAchievements public API to MCP-compatible clients like Claude Code, Claude Desktop, and Cursor.

Built on top of the official @retroachievements/api TypeScript SDK.

What you can do with it

  • "What achievements did I unlock in the last hour?"

  • "Summarize my RetroAchievements activity this month."

  • "Show me the achievement list for Super Mario 64."

  • "Who are the top-ten ranked players right now?"

  • "How rare is each achievement in The Legend of Zelda: A Link to the Past?"

Related MCP server: speedrun-mcp

Requirements

Install

git clone https://github.com/Zach-Houston/retroachievements-mcp.git
cd retroachievements-mcp
npm install
npm run build

First-time setup

You have three ways to get the server credentials in place. Pick whichever fits.

Just start asking your MCP client questions like "Show me my RetroAchievements profile." The first call will fail with a structured "credentials not configured" message that gives the assistant two choices to offer you.

1A. In-chat paste (fastest)

You paste your username and Web API key into the chat. The assistant calls ra_save_credentials, which validates the key against the live API and saves it. Downside: the key is in your chat transcript.

1B. Edit a file the assistant scaffolds (key never touches chat)

The assistant calls ra_prepare_credentials_file, which writes a placeholder credentials.env in your user config dir and returns a file:// link. You click the link, paste your key in the file, save. The server picks it up on the next tool call. Upside: key never appears in the transcript.

Either way, credentials end up at:

  • Windows: %APPDATA%\retroachievements-mcp\credentials.env

  • macOS: ~/Library/Application Support/retroachievements-mcp/credentials.env

  • Linux: $XDG_CONFIG_HOME/retroachievements-mcp/credentials.env

The assistant can call ra_status at any time to see whether setup is done, half-done (placeholder file waiting for a key), or not started.

2. Interactive CLI

npm run setup

Walks you through getting an account (if needed), prompts for your Web API key, verifies against the API, and saves to the same user config dir.

3. Env vars in your MCP client config

Set RA_USERNAME and RA_API_KEY as env entries in your MCP client's server config (see Use with Claude Code). The server reads env vars first, then falls back to the stored file. Env vars never touch the chat history.

Configure

The server reads two environment variables at startup:

Variable

Value

RA_USERNAME

Your RetroAchievements username.

RA_API_KEY

Your Web API key (find it at https://retroachievements.org/controlpanel.php).

Pass the values as env entries in your MCP client config (see below) — those take precedence over the stored credentials file.

If you launch the server without env vars set and no stored credentials, it will still start and respond to MCP clients — but every tool call returns a friendly error pointing the assistant at ra_save_credentials / ra_prepare_credentials_file. A missing key never silently bricks the connection.

Use with Claude Code

Add this to your Claude Code MCP config (~/.claude.json or via claude mcp add):

{
  "mcpServers": {
    "retroachievements": {
      "command": "node",
      "args": ["C:/Users/Z/projects/retroachievements-mcp/dist/index.js"],
      "env": {
        "RA_USERNAME": "YourUserName",
        "RA_API_KEY": "your-web-api-key"
      }
    }
  }
}

Or, after npm link, you can use the retroachievements-mcp binary directly.

Use with Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "retroachievements": {
      "command": "node",
      "args": ["C:/Users/Z/projects/retroachievements-mcp/dist/index.js"],
      "env": {
        "RA_USERNAME": "YourUserName",
        "RA_API_KEY": "your-web-api-key"
      }
    }
  }
}

Tools

Setup

Tool

Description

ra_status

Reports configured / source (env, file, file-pending, none) / username / file path.

ra_save_credentials

In-chat flow: validates a username + key the user typed, then writes them to the user config.

ra_prepare_credentials_file

Out-of-chat flow: writes a placeholder file the user opens locally, pastes their key, and saves.

User

Tool

Description

ra_user_profile

Basic profile (points, rank, motto, avatar).

ra_user_summary

Profile + recent games + recent achievements + awards.

ra_user_points

Lightweight: just the user's hardcore + softcore point totals.

ra_user_recent_achievements

Achievements unlocked in the last N minutes.

ra_user_recently_played_games

Recently played games with progress.

ra_user_completion_progress

All started games with completion %, hardcore status, award level.

ra_user_progress

Per-game progress for an arbitrary list of game IDs (bulk lookup).

ra_user_awards

Site awards earned (mastery, beaten, events).

ra_user_want_to_play

The user's want-to-play wishlist.

ra_user_completed_games

Games the user has fully mastered (softcore and/or hardcore).

ra_user_achievements_between

Achievements earned between two ISO dates.

ra_user_achievements_on_day

Achievements earned on a single calendar day.

ra_game_info_and_user_progress

Game info + the user's per-game unlock state (one call instead of two).

ra_users_i_follow

Accounts the credentialed user follows.

ra_users_following_me

Accounts following the credentialed user.

Game

Tool

Description

ra_game

Basic game metadata (title, console, developer, box art).

ra_game_extended

Full game info with the achievement list and unlock counts.

ra_game_rank_and_score

High-score holders OR latest masters for a game (pick via type).

ra_game_rating

Community star rating + number of votes.

ra_achievement_distribution

Histogram: how many players have unlocked N achievements in this game.

Console

Tool

Description

ra_console_ids

All consoles RA tracks. Use to translate names like "SNES" to a consoleId.

ra_game_list

All games on a console, optionally filtered to those with achievement sets.

Achievement

Tool

Description

ra_achievement_unlocks

Users who have unlocked a specific achievement, with timestamps and totals.

Leaderboard

Tool

Description

ra_leaderboard_entries

Top entries for a leaderboard.

ra_user_game_leaderboards

All leaderboards a user has placed on for a given game.

Feed

Tool

Description

ra_achievement_of_the_week

Currently featured achievement-of-the-week + leaderboard.

ra_top_ten_users

Site's top-ten ranked users by hardcore points.

ra_recent_game_awards

Site-wide recent masteries / completions / beaten awards, filterable by kind.

More are easy to add (comments, tickets, claims, hashes, game progression list, set requests, per-user game rank) — see src/tools/ for the pattern.

Develop

npm run dev     # tsx, no build step
npm run build   # compile to dist/
npm start       # run the compiled server

License

MIT

Available Tools

13 tools
ra_achievement_of_the_weekGet achievement of the weekA

The currently featured achievement-of-the-week, plus the leaderboard of users who have already unlocked it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It reveals that the tool returns both the achievement and a leaderboard, which is helpful. However, it does not disclose any behavioral traits such as update frequency, caching, or authentication needs. The description is adequate 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.

Conciseness5/5

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

The description is a single sentence of 15 words, front-loading the key information. Every word earns its place, with no fluff.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema), the description covers what is returned (achievement and leaderboard). It could hint at the read-only nature, but being a simple query tool, this is minor. Overall, it is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the schema coverage is 100%. The description correctly does not add parameter information as none exist. The baseline of 3 applies, but with zero parameters the description is sufficient, earning a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the current achievement of the week and the leaderboard of users who unlocked it. It specifies the resource (achievement-of-the-week) and the action (get), distinguishing it from sibling tools that focus on user-specific data or games.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.

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

ra_gameGet game metadataB

Basic metadata for a game by ID: title, console, developer, publisher, genre, release date, box art.

ParametersJSON Schema
NameRequiredDescriptionDefault
gameIdYesRetroAchievements game ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as authentication, rate limits, error handling, or behavior for invalid game IDs. For a simple lookup, some context is missing.

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

Conciseness4/5

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

One concise sentence listing key fields. No redundant information, but could be improved with structured formatting.

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

Completeness3/5

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 no output schema, the description is adequate but lacks details on response format or error conditions. Slightly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'gameId'. The description adds no extra meaning beyond what the schema already provides (ID). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves basic metadata for a game by ID, listing specific fields (title, console, etc.). It distinguishes from the sibling tool 'ra_game_extended' by implying it's basic vs extended info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'ra_game_extended'. No when-not-to-use or prerequisites mentioned.

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

ra_game_extendedGet extended game infoA

Full game info including the achievement list (id, title, description, points, badge, unlock counts).

ParametersJSON Schema
NameRequiredDescriptionDefault
gameIdYesRetroAchievements game ID
isRequestingUnofficialAchievementsNoInclude unofficial / dev-only achievements (default false)

TDQS

A3.9/5.0
Behavior3/5

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 the returned data structure but does not mention read-only nature, rate limits, or other behavioral traits.

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

Conciseness5/5

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

The description is a single sentence that efficiently communicates the tool's purpose and output. It is front-loaded and every word adds value.

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

Completeness3/5

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

Given no output schema, the description provides the key fields for achievements but is vague about 'full game info'. It could list additional top-level fields or indicate the scope of the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters with 100% coverage. The description adds no extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns 'Full game info including the achievement list' with specific fields. This distinguishes it from the sibling tool 'ra_game' which likely provides basic info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for extended info, but does not explicitly state when not to use or mention alternatives. The context is clear from the tool name and title.

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

ra_save_credentialsSave RetroAchievements credentialsA

Validate a RetroAchievements username + Web API key against the live API, then persist them to a local config file so future tool calls work without env vars. USE ONLY with values the user typed in chat themselves — never guess or fabricate an API key. If the user does not have a key, point them at https://retroachievements.org/controlpanel.php first.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesThe user's RetroAchievements username, as typed by them.
webApiKeyYesThe user's Web API Key from https://retroachievements.org/controlpanel.php, as typed by them. Do not invent this value.

TDQS

A4.6/5.0
Behavior4/5

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

Discloses key behaviors: validation against live API, persistence to config, and enabling future tool calls without env vars. However, it does not mention error handling (e.g., invalid key) or whether it overwrites existing config. Given no annotations, it's fairly transparent but has minor gaps.

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

Conciseness5/5

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

Three sentences, each serving a purpose: action, usage rule, fallback. No filler, front-loaded with the main operation. Extremely concise and well-structured.

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

Completeness4/5

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

The description covers purpose, usage, and parameter sources. Lacks details about return values or error behavior, but the tool is simple and the key behaviors are well explained. Completeness is adequate for context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover both parameters (100% coverage). The description adds value by reiterating the 'as typed by them' constraint and referencing the key-retrieval URL, which aids in correct parameter values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: validating a username and API key against the live API and persisting them to a config file. It distinguishes itself from sibling tools, none of which handle credential saving.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to only use values typed by the user, never to guess or fabricate an API key, and provides a fallback URL for obtaining a key. This leaves no ambiguity about when and how to use the tool.

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

ra_statusCheck RetroAchievements MCP setup statusA

Reports whether RetroAchievements credentials are configured and where they came from (env vars or saved file). Call this first if you're unsure whether the server is ready to use.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Discloses what the tool reports (configuration status and source) but lacks details on error conditions or return format; no annotations to supplement.

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

Conciseness5/5

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

Two concise sentences with front-loaded purpose; no unnecessary words.

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

Completeness4/5

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

Adequately covers purpose and usage for a zero-parameter tool; slight gap in output description, but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters present, so the description correctly omits parameter details; baseline score of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reports whether credentials are configured and their source, distinguishing it as a readiness check tool among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises calling this first when unsure about server readiness, providing clear usage context.

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

ra_top_ten_usersGet top ten usersA

The site's current top-ten ranked users by hardcore points.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses the tool returns current top-ten users by hardcore points, which is a read-only query. With no annotations, it carries the full burden, but the simple nature of the tool (no side effects) makes this adequate.

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

Conciseness5/5

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

The description is a single concise sentence that is front-loaded and contains no unnecessary information. Every word contributes to understanding.

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

Completeness4/5

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

Given no parameters and no output schema, the description sufficiently explains the tool's purpose. It could mention whether the list is ordered or if ties are handled, but the current description is mostly complete for a simple list retrieval.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and the schema coverage is 100% (empty schema). The description adds no parameter details, but none are needed. This is appropriate for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the current top-ten ranked users by hardcore points. The name and title are descriptive and differentiate from sibling tools like ra_user_profile or ra_user_summary, which focus on individual user data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The context implies it's for leaderboard queries, but the description does not state when not to use it or mention alternatives.

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

ra_user_achievements_betweenGet achievements earned in a date rangeB

All achievements a user unlocked between two ISO dates. Powerful for weekly/monthly recaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesRetroAchievements username
fromDateYesStart date, ISO 8601 (e.g. 2026-06-01 or 2026-06-01T00:00:00Z)
toDateYesEnd date, ISO 8601

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It does not disclose potential behaviors such as pagination, ordering, rate limits, or response size limits, which are important for an agent to know.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action and date format, and a concise use-case note. No wasted words.

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

Completeness3/5

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

Given the tool has 3 parameters, no output schema, and no annotations, the description is minimally adequate but lacks details on return format, ordering, and potential limits. It satisfies basic understanding but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described in the input schema. The description adds no additional parameter meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all achievements a user unlocked between two ISO dates, and provides a use case for weekly/monthly recaps. It uses specific verbs and resource, but does not explicitly distinguish from sibling tools like ra_user_recent_achievements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for recaps but lacks explicit guidance on when to use this tool versus alternatives (e.g., ra_user_recent_achievements) or when not to use it.

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

ra_user_awardsGet user awardsB

Site awards the user has earned (mastery, beaten, event awards) with dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesRetroAchievements username

TDQS

B3.3/5.0
Behavior2/5

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 mentions 'with dates' but omits critical traits such as read-only nature, authentication requirements, rate limits, or response structure. The description fails to disclose whether the operation is safe or mutating.

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

Conciseness5/5

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

The description is a single sentence with no redundant information. It is front-loaded with the title and immediately conveys the core functionality. Every word is necessary.

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

Completeness3/5

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

The tool is simple with one required parameter and no output schema. The description covers the basic functionality but lacks details on output format, error cases, or usage context. While minimally adequate, there is room to add value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'username', which is described as 'RetroAchievements username'. The tool description does not add additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool retrieves user awards (mastery, beaten, event awards) with dates, using a specific verb ('gets') and resource ('user awards'). It distinguishes from sibling tools like 'ra_user_achievements_between' by focusing on awards rather than achievements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'ra_user_summary' or 'ra_user_achievements_between'. The description does not mention prerequisites, limitations, or exclusions, leaving the agent to infer usage context.

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

ra_user_completion_progressGet user completion progressC

All games the user has earned at least one achievement in, with completion %, hardcore status, and award level.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesRetroAchievements username
countNo
offsetNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It fails to state that the tool is read-only, whether authentication is needed, or how pagination works (count and offset parameters are not explained). The only disclosed behavior is the return fields, but missing key traits like data freshness or rate limits.

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

Conciseness4/5

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

The description is a single, focused sentence that communicates the core functionality efficiently. It is front-loaded with the key verb and resource. However, it could be slightly restructured to include parameter hints without becoming verbose, so it is not perfect but strong.

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

Completeness3/5

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

Given the lack of output schema, the description mentions return fields (completion %, hardcore status, award level) which is helpful. However, it does not mention that the result is a list, or that count and offset control pagination. It also omits the required username parameter context. Overall, it provides basic completeness but misses important details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only username has a description). The tool description does not explain the count and offset parameters (e.g., for pagination). It adds no meaning beyond the minimal schema, and for the undocumented parameters, agents get no help understanding their purpose or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it returns 'All games the user has earned at least one achievement in, with completion %, hardcore status, and award level.' This clearly identifies the tool's purpose: retrieving a user's completion progress per game. It is distinct from sibling tools like 'ra_user_achievements_between' (filtered by dates) and 'ra_user_recent_achievements' (recent achievements only), making purpose differentiation strong.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. For example, it does not mention that it only includes games with at least one achievement, nor does it exclude cases where the user has zero achievements. No when-to-use or when-not-to-use information is present, leaving agents to infer usage context.

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

ra_user_profileGet user profileB

Retrieve summary profile data for a RetroAchievements user (points, rank, motto, member-since, avatar).

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesRetroAchievements username

TDQS

B3.4/5.0
Behavior3/5

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

The word 'Retrieve' implies a read-only operation with no side effects, which is sufficient for this simple tool. However, no annotations are provided, and the description does not mention authentication or rate limits, though the tool is likely minimal in those regards.

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

Conciseness5/5

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

The description is a single, well-structured sentence that conveys the tool's purpose and returned fields without unnecessary words. Perfectly concise.

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

Completeness4/5

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

Given the low complexity (one parameter, no output schema), the description adequately covers what the tool returns by listing fields. It lacks detail on response structure but is complete enough for an agent to understand the tool's value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single required parameter 'username'. The description adds no additional meaning beyond the schema's 'RetroAchievements username', so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 ('summary profile data for a RetroAchievements user'), and lists key fields (points, rank, motto, member-since, avatar). It is clear but does not explicitly differentiate from siblings like ra_user_summary, which may have similar purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as ra_user_summary or ra_user_awards. The description does not provide context for selection, prerequisites, or exclusions.

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

ra_user_recent_achievementsGet user's recent achievementsA

Achievements a user has unlocked in the last N minutes (default 60). Useful for 'what did they just play?' queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesRetroAchievements username
recentMinutesNoLook back this many minutes (default 60)

TDQS

A3.7/5.0
Behavior3/5

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

Since no annotations are provided, the description must disclose behavior. It mentions the time window and default value, but does not specify pagination, sorting, maximum results, or whether the operation is read-only. Disclosure is adequate for a simple 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.

Conciseness5/5

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

Two sentences, front-loaded with purpose. No fluff or redundant wording. Efficient and clear.

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

Completeness3/5

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

No output schema is provided, and the description does not explain the return format (list, count, structure). For a tool with two parameters and a simple purpose, this is adequate but incomplete. Safety and authentication context are missing due to lack of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context about the default 60 minutes for 'recentMinutes', which the schema does not specify, but 'username' is not elaborated beyond schema. Minor value added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and the resource 'recent achievements', with specific time window (N minutes). It distinguishes from sibling tools like 'ra_user_achievements_between' and 'ra_user_summary' by focusing on the 'just played' use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete use case ('what did they just play?') but does not explicitly mention when not to use it or contrast with alternatives like 'ra_user_achievements_between' for custom date ranges. Usage is 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.

ra_user_recently_played_gamesGet user's recently played gamesA

List of games the user has touched most recently, with last-played timestamps and per-game progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesRetroAchievements username
countNoHow many games to return (default 10, max 50)
offsetNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It mentions that the output includes timestamps and progress, which adds value beyond the schema. However, it does not disclose other behavioral traits like idempotency, rate limits, or authentication requirements. Since the schema already covers basic input constraints, the description adds moderate transparency.

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

Conciseness5/5

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

Description is a single, well-constructed sentence that directly conveys the purpose. No redundant information; every word serves a clear function. Front-loaded with the key action and resource.

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

Completeness4/5

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

For a simple list tool with 3 parameters and no output schema, the description provides necessary context about the returned data (timestamps and progress). However, it does not explain the offset parameter at all, which is a minor gap. Overall, it is mostly complete for an agent to understand what the tool returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (username and count have descriptions; offset lacks one). The description does not add any extra meaning to the parameters; it focuses on output details. For the missing offset description, there is no compensation. Baseline 3 is appropriate given coverage but incomplete for offset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List of games the user has touched most recently, with last-played timestamps and per-game progress.' The verb 'list' and resource 'games' specify the action and object, and the scope 'recently played' distinguishes it from other user-related tools like ra_user_achievements or ra_user_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving recently played games but provides no explicit guidance on when to use this tool versus alternatives, such as ra_user_completion_progress for full game lists, or when not to use it (e.g., if offline). No usage exclusions or contextual hints are given.

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

ra_user_summaryGet user summaryB

Fuller summary for a user: recent games, recent achievements, last activity, rank, awards count.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesRetroAchievements username
recentGamesCountNoHow many recent games to include (default 5)
recentAchievementsCountNoHow many recent achievements to include (default 10)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavioral traits. It only lists data returned, not side effects, authorization needs, or error conditions. It does not state whether the operation is read-only or idempotent.

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

Conciseness4/5

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

The description is a single sentence that conveys the core purpose efficiently. However, it could be more structured (e.g., bullet points) for clarity, especially given the number of data points listed.

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

Completeness2/5

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

The description lacks details on the output structure (no output schema) and fails to clarify terms like 'last activity' or 'rank.' For a tool returning a multi-field summary, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented. The description adds no additional meaning beyond what the schema provides (e.g., does not explain the time range for 'recent' or how count limits work).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a 'fuller summary' including specific data types (recent games, achievements, last activity, rank, awards count). This distinguishes it from sibling tools that focus on individual aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for a comprehensive overview but does not explicitly state when to use it versus alternative tools (e.g., ra_user_recent_achievements for only achievements). No guidance on when not to use it.

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.

  1. 13 tool updatesv0.1.0
    • First observedra_achievement_of_the_week
    • First observedra_game
    • First observedra_game_extended
    • First observedra_save_credentials
    • First observedra_status
    • First observedra_top_ten_users
    • First observedra_user_achievements_between
    • First observedra_user_awards
    • First observedra_user_completion_progress
    • First observedra_user_profile
    • First observedra_user_recent_achievements
    • First observedra_user_recently_played_games
    • First observedra_user_summary

TDQS

A3.8/5.0

Scored across 13 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, targeting different entities (game, user, credentials) or aspects (basic vs. extended game info, profile vs. summary vs. recent activity). No two tools appear to overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent pattern: the prefix 'ra_' followed by the entity and optional descriptor (e.g., ra_game, ra_game_extended, ra_user_profile, ra_user_summary). All lowercase with underscores, no mixed conventions.

Tool Count5/5

With 13 tools, the server is well-scoped for the RetroAchievements domain. It covers game lookups, user data (profile, summary, recent activity, progress), leaderboards, and credential management without being excessive or sparse.

Completeness4/5

The surface covers most common operations: game metadata, user stats, achievements, and progress. Minor gaps exist (e.g., no tool for game search or specific achievement details), but these are not critical for typical workflows.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query Speedrun.com data through the official API, supporting tools for retrieving game, run, and leaderboard information.
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to query speedrun.com for games, categories, leaderboards, world records, players, and personal bests using natural language.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables querying Chess.com public data including player profiles, stats, games, and club information through natural language.
    9
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query Riot Games data such as accounts, summoners, match history, and champion mastery via natural language.
    5
    MIT