Skip to main content
Glama

Change a MiSTer.ini setting

set_ini
Idempotent

Modify or remove a single MiSTer.ini setting globally or for a specific core while preserving the rest of the file, with a timestamped backup created before changes.

Instructions

Set (or remove) one MiSTer.ini setting, globally or for one core, keeping the rest of the file as it is.

The previous file is saved next to it first (MiSTer.ini..bak). The change takes effect the next time a core loads. A few keys are refused (main, bootcore, shared_folder, debug; see misterfpga://ini-keys). Needs SSH.

Input Schema

NameRequiredDescriptionDefault
keyYesA MiSTer.ini key, e.g. vscale_mode (misterfpga://ini-keys lists them).
fileNoMiSTer.ini, or an alternate such as MiSTer_crt.ini (get_ini lists them).MiSTer.ini
hostNoMiSTer name from get_status. Omit when the call already says which (a ref does).
valueYesThe new value, checked against the key's type and range. null removes the key.
dry_runNoShow the change (diff) without writing it.
sectionNoMiSTer (global), arcade, arcade_vertical, video=<WxH@Hz>, or a core name like SNES.MiSTer

Output Schema

NameRequiredDescriptionDefault
keyYes
newYes
oldYes
diffYes
fileYes
hostYes
backupYes
detailYes
outcomeYes
sectionYes
warningsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the timestamped backup filename, that the change only applies on next core load, that certain keys (main, bootcore, shared_folder, debug) are refused, and that SSH is required. These are exactly the operational facts an agent needs before mutating a config file.

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?

Four short sentences, front-loaded with the main action and scope, then backup, timing, refusals and prerequisite. Every sentence carries distinct, non-redundant information.

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?

For a mutating config tool with full annotations and an output schema, the description covers safety (backup), timing (next core load), blocked inputs and auth (SSH). Nothing an agent needs in order to invoke it correctly is missing.

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?

With 100% schema description coverage the schema already documents key, file, host, value (including null removal), dry_run and section. The description reinforces the global/per-core and remove semantics but adds no syntax or constraints beyond what the schema provides, so 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?

States a specific verb (set/remove), resource (one MiSTer.ini setting) and scope (globally or for one core), and clarifies it preserves the rest of the file. That cleanly separates it from the read-only sibling get_ini without naming it.

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?

Clear context for when to use it: setting or removing a single key in a specific section, with the deferred-effect note. It does not explicitly point to get_ini for reading or to dry_run for previewing, so the alternative-routing guidance is implicit rather than explicit.

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