RenForge MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
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
| Capability | Details |
|---|---|
| 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
| Name | Description |
|---|---|
| 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 After launch, poll The call waits at most 20 seconds for readiness, then returns
|
| 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 |
| 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.
|
| 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 ( |
| renforge_diff_screenshotsA | Diff two frames and return the bounding box of what changed.
|
| 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 |
| 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_measureA | Measure pixel relationships between scene nodes, without eyes.
|
| 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: |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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