Skip to main content
Glama

retroarch_get_config

Read a single RetroArch configuration parameter by name from a running emulator via NCI, revealing paths and settings without parsing retroarch.cfg manually.

Instructions

PURPOSE: Read a single RetroArch configuration parameter by name via the NCI GET_CONFIG_PARAM command. USAGE: Discover RetroArch's filesystem paths and selected settings without parsing retroarch.cfg yourself. For run-state (playing/paused, loaded ROM) use retroarch_get_status instead — this tool only reads static config. RetroArch whitelists which params are exposed; non-whitelisted names error even if they exist in retroarch.cfg. screenshot_directory is NOT exposed — see retroarch_screenshot. BEHAVIOR: No side effects — pure read. Transport: RetroArch's Network Control Interface (NCI) over UDP (default 127.0.0.1:55355, requires network_cmd_enable = true in retroarch.cfg). Errors if the param isn't in RetroArch's NCI whitelist, the value contains characters that break the line-based reply parser (rare — embedded newlines or null bytes), or the UDP query times out. RETURNS: 'NAME = VALUE' where VALUE is the raw string as stored in retroarch.cfg (paths unquoted, booleans as 'true'/'false', integers as decimal).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesConfig key — same snake_case ASCII identifier RetroArch uses in retroarch.cfg, case-sensitive, no surrounding quotes. Path-class keys (return absolute paths on disk): `savefile_directory`, `savestate_directory`, `system_directory`, `cache_directory`, `log_dir`, `runtime_log_directory`, `core_assets_directory`. User-data keys: `netplay_nickname`. Toggle keys (return 'true' / 'false'): `video_fullscreen`, `video_vsync`, `audio_mute_enable`. The full whitelist varies per RetroArch build; if a key returns an error rather than a value, it's not exposed via the NCI on this build. Notable exclusions: `screenshot_directory` is intentionally NOT exposed by RetroArch (see retroarch_screenshot for the workaround). Also no key for the currently-selected savestate slot — track that client-side via retroarch_state_slot_plus/minus.
Behavior5/5

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

With no annotations provided, the description carries the full burden and exceeds expectations. It discloses that this is a pure read with 'No side effects,' specifies the transport (UDP, default address/port), prerequisites (network_cmd_enable=true), and error conditions (non-whitelisted params, parser-breaking characters, timeouts). It also describes the exact return format, including unquoted paths and boolean/integer representations.

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 well-structured with labeled sections (PURPOSE, USAGE, BEHAVIOR, RETURNS) and front-loaded with the core purpose. It is verbose but every sentence adds value; however, there is some redundancy, such as repeating 'screenshot_directory is NOT exposed' and 'only reads static config' across sections. Slightly tighter wording would make it ideal.

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

Completeness5/5

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

Despite having no output schema and only one parameter, the description is highly complete. It covers prerequisites, network details, error scenarios, and return format comprehensively. Given the tool's complexity (UDP transport, whitelist restrictions), the description leaves no critical gaps for an agent to correctly invoke and interpret results.

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%, and the schema itself already provides extensive parameter semantics, listing example keys, categories, and the screenshot_directory exclusion. The tool description adds minimal new parameter meaning beyond restating the exclusion and whitelist behavior, 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.

Purpose5/5

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

The description states a specific verb+resource+scope: 'Read a single RetroArch configuration parameter by name via the NCI GET_CONFIG_PARAM command.' It clearly distinguishes from siblings by explicitly saying 'For run-state (playing/paused, loaded ROM) use retroarch_get_status instead — this tool only reads static config' and notes 'screenshot_directory is NOT exposed — see retroarch_screenshot.' This leaves no ambiguity about the tool's purpose.

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?

Provides explicit when-to-use guidance: 'Discover RetroArch's filesystem paths and selected settings without parsing retroarch.cfg yourself.' It also gives clear exclusions and alternatives, naming retroarch_get_status for run-state queries and retroarch_screenshot for the screenshot_directory workaround. The whitelist limitation is disclosed upfront, helping the agent decide when to attempt a call.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pythoninthegrass/mcp-retroarch'

If you have feedback or need assistance with the MCP directory API, please join our Discord server