Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
renforge_infoA

Call first: report RenForge version and the active project.

active_project falls back from the dashboard selection to the serve default, then to a Ren'Py project detected from the current directory (project_source says which one matched). A null active_project only means auto-discovery found nothing — every tool accepts project_path directly, so ask the user for the game's path and keep going.

renforge_contextA

Discover the active Ren'Py project (dashboard, serve default, or cwd).

renforge_inspect_imageA

Open a local image and return an optional cropped/zoomed PNG for inspection.

renforge_inspect_projectD
renforge_scan_projectB

Scan scripts; defaults to summary-only, with opt-in sections and pagination.

renforge_find_referencesB

Find exact Ren'Py definitions/usages, including text interpolations.

renforge_parse_lintD
renforge_launchA

Launch or reuse a game with the Live Editor enabled by default.

Pass editor=False to launch intentionally without the visual editor.

After launch, poll renforge_launch_status until ready, then observe with a fresh renforge_screenshot or renforge_scene_tree before any click. Use renforge_click_at or renforge_click_element with a current frame_id guard; verify the result, then renforge_stop. See docs/LIVE_EDITOR.md. Optional warp is a Ren'Py file:line target.

The call waits at most 20 seconds for readiness, then returns status="starting" while startup continues in the background. Poll renforge_launch_status until it reports ready or failed. display/audio default to auto; savedir='temporary' isolates saves. timeout controls the background startup deadline, not the MCP call.

renforge_launch_statusC

Return starting, ready, failed, or idle for a background launch.

renforge_jumpA

Restart at a label or file:line; poll launch status when still starting.

renforge_new_gameB

Start at the start label; poll launch status when still starting.

renforge_stopB

Stop a running game or cancel its in-progress launch, then clean up.

renforge_game_stateB

Return complete live state; optionally include compact metrics or audio.

renforge_game_state_compactA

Return bounded live state, optionally with selected variables.

Defaults to state_profile='interaction' so the full store is never returned in the payload unless state_profile='full' is requested.

renforge_inspect_screenC

Inspect an active screen's layer, JSON-safe scope, and arguments.

renforge_advanceC

Advance the current dialogue.

renforge_controlB

Run a runtime action: advance, rollback, toggle_skip, toggle_auto, toggle_afm, game_menu, hide_windows, quick_save, quick_load, reload_script, restart_interaction, or quit.

Emits correlated business events (quick_save.completed, skip.stopped, …). Set wait_for_effect=true to block until the matching event appears.

renforge_send_inputA

Send exactly one input mode: text, named key, or scroll object.

text posts character-by-character TEXTINPUT events to a focused Ren'Py Input; submit optionally presses Enter after the text. key accepts readable names such as enter, esc, arrows, pageup, pagedown, backspace, delete, home, end, space, tab, and function keys. scroll is {"x": ..., "y": ..., "direction": "up"|"down"} in logical game coordinates, with optional integer amount. Exactly one of text, key, and scroll must be supplied.

renforge_savesB

Save, load, or list named save slots without screenshot payloads.

renforge_list_choicesB

List the on-screen menu choices (text + index).

renforge_select_choiceA

Select a menu choice by visible text (preferred) or by index.

renforge_list_ui_elementsB

List visible focusable Ren'Py controls with bounds and frame guard.

renforge_click_elementA

Click a visible control by text/id, guarded against a stale frame.

Returns received_by when another control owns the hit point. With wait_for_effect=true, wait for a correlated business event such as quick_save.completed when the clicked action is recognizable.

renforge_hover_elementB

Move the pointer over a visible control without clicking it.

renforge_get_ui_element_boundsC

Report focus bounds and rendered painted bounds for a UI element.

renforge_click_atB

Click screen coordinates with optional frame/state safety guards.

renforge_get_displayable_boundsB

Report where a shown image tag was rendered, in logical coordinates.

renforge_position_elementA

Reposition a shown image tag live and return its new logical bounds.

Provide at least one placement field. The tag keeps its current attributes. Positions follow Ren'Py's rule: an integer is absolute pixels (xpos=600 is 600px), a float is a fraction of the screen (xpos=0.5 is the centre). Use this to converge on coordinates interactively, then write the final values into the .rpy script.

renforge_diff_screenshotsA

Diff two frames and return the bounding box of what changed.

before_path is a saved PNG. after_path is another saved PNG, or empty to diff against the current live frame. Use it to measure how far an element moved or to confirm a tweak left everything else untouched.

renforge_evalB

Evaluate a Python expression in the running game's store namespace.

renforge_set_varB

Set a variable in the running game's store namespace.

renforge_get_varB

Read a variable from the running game's store.

renforge_poll_eventsA

Return pushed events (dialogue, labels, exceptions) newer than since.

renforge_get_errorsC

Return recent bridge exceptions or bounded crash-file diagnostics.

renforge_wait_untilA

Wait for exactly one label, screen, or expression condition.

Returns a compact state by default (state_profile='interaction'). Pass include for extra fields/variables; use state_profile='full' only when the complete store is required.

renforge_hit_testA

Inspect the interactive focus stack at a coordinate.

Returns topmost and underneath focusable controls so agents can detect transparent overlays that intercept clicks.

renforge_scene_treeA

Perceive the whole scene as structured data (logical coordinates).

Unlike renforge_list_ui_elements (focusables only), this reports every layer displayable, focusable control, and text block with id, type, bounds, center, zorder and screen. Every reply carries an omitted completeness hint. detail is semantic (default), layout or raw; layers/types/screen/ids scope the result. include=["color","style","overflow"] opts into composited colour, declared style, and best-effort text overflow. format="wireframe" adds an ASCII map. save_as persists a snapshot under .renforge/scenes/; diff_against diffs the live scene against a saved snapshot.

renforge_measureA

Measure pixel relationships between scene nodes, without eyes.

action is one of align, gap, distribute, center, overlap, fit, contrast. Each target (and within) is a renforge_scene_tree node id (string, resolved live) or a literal bounds object {x,y,width,height}. Returns actionable deltas in logical pixels; when tolerance is given, adds a pass verdict. contrast samples the live frame and reports a WCAG ratio (one target = its internal fg/bg, two targets = between the two elements).

renforge_run_scenarioB

Run a multi-step live scenario (click/wait/assert/...) in one call.

On failure, captures a screenshot and compact diagnostics automatically. Supported step actions: set, eval, click, click_at, advance, scroll, wait, assert, select_choice, capture, save, load, control, send_input.

renforge_autopilotA

Auto-play the game across all branches; report label coverage and crashes.

renforge_assetsB

Find orphaned and missing image/audio assets in the project.

renforge_languagesA

List translation languages present under game/tl/.

renforge_translation_statsB

Report missing dialogue/string translation counts for a language.

renforge_generate_translationsA

Generate/update translation files for a language (writes game/tl//).

renforge_export_dialogueC

Export the game's dialogue as plain text.

renforge_web_buildB

Package the project as a browser-playable build (needs the web DLC).

renforge_distributeB

Build desktop distributions (e.g. package='pc', 'mac', 'linux').

renforge_search_docsB

Search Ren'Py's offline documentation for a keyword.

renforge_get_docA

Read a Ren'Py documentation page as plain text (e.g. topic='cli').

renforge_list_docsA

List available Ren'Py documentation topics.

renforge_screenshotB

Capture a game frame, optionally resizing, cropping, and zooming it.

Measurement guides help pixel-perfect placement: grid draws lines every N pixels, rulers labels those steps along the edges, and crosshair_x/crosshair_y mark a point. Capture at the game's logical resolution (width/height) so the labels read as logical coordinates. Passing only one of width/height keeps the game's aspect ratio.

renforge_capture_screenshotC

Persist a screenshot under the project's controlled capture directory.

renforge_estimate_translationC

Estimate stable visual translation between two saved frames.

renforge_find_image_on_screenC

Find a template image in the current frame and return its bounds.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/alex-jordan547/renforge-mcp'

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