Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.alex-jordan547/renforge

PYPI · RENFORGE · SCANNED SEP 21

Inspect, drive and debug a running Ren'Py game: state, screenshots, guarded clicks, saves, builds.

Available components

0 this week 69 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 2 of 39 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability77
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7089 tokens (~131/item across 54 items; 54 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
  • Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (96% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 55 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the io.github.alex-jordan547/renforge MCP server?

io.github.alex-jordan547/renforge runs locally as a PyPI package, launched with uvx renforge. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · renforge

# add to Claude Code
claude mcp add alex-jordan547-renforge -- uvx renforge
// .cursor/mcp.json
{
  "mcpServers": {
    "alex-jordan547-renforge": {
      "command": "uvx",
      "args": [
        "renforge"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "alex-jordan547-renforge": {
      "command": "uvx",
      "args": [
        "renforge"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add alex-jordan547-renforge -- uvx renforge
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "alex-jordan547-renforge": {
      "type": "local",
      "command": [
        "uvx",
        "renforge"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add alex-jordan547-renforge --command uvx --arg renforge
# ~/.hermes/config.yaml
mcp_servers:
  alex-jordan547-renforge:
    command: "uvx"
    args: ["renforge"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "alex-jordan547-renforge": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "renforge"
      ]
    }
  }
}
# add to Vellum
assistant mcp add alex-jordan547-renforge -t stdio -c uvx -a renforge
// mcp.json
{
  "mcpServers": {
    "alex-jordan547-renforge": {
      "command": "uvx",
      "args": [
        "renforge"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 16 Sept 26 +1
    • Stability: 0.97 → pass security
  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 −3
    • Security disclosure: unverified → fail functional
    • Stability: pass → 0.83 functional
  • 10 Sept 26 +1
    • Stability: 0.97 → pass security
    • Security disclosure: fail → unverified functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed pypi/renforge@0.7.2

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 39 packages
Packages resolved 39
Stale 1
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 54 exposed · ~6,769 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
renforge_advance ~58

Advance one dialogue event from the currently active queue. Prefer `renforge_control(action="advance")` only when you intentionally need control-command consistency with other navigation actions.

NameTypeReqDescription
project_pathstringyesProject root of the running live session.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_assets ~46

Run static asset validation and return missing/orphaned image or audio references. Useful before build and before submitting translation/build changes.

NameTypeReqDescription
project_pathstringyesProject root to inspect.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_autopilot ~100

Auto-play branches by stopping any current manual session and launching a fresh session for every replay. It writes incremental progress to `.renforge/autopilot.json` and may download/cache the required SDK. Best for broad checks; not deterministic and potentially expensive.

NameTypeReqDescription
max_runsintegerMaximum scenario runs before stopping.
max_stepsintegerMaximum steps per run.
project_pathstringyesProject root for the live session.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_capture_screenshot ~241

Persist the current frame under `.renforge/captures/` and return the output path plus hash. This writes disk and may overwrite an existing name.

NameTypeReqDescription
crop_heightintegerCrop height; 0 disables cropping in Y.
crop_widthintegerCrop width; 0 disables cropping in X.
crop_xintegerCrop origin x in logical coordinates.
crop_yintegerCrop origin y in logical coordinates.
crosshair_xintegerCrosshair x coordinate; both x/y must be set together.
crosshair_yintegerCrosshair y coordinate; both x/y must be set together.
gridintegerGuide overlay grid spacing in pixels.
heightintegerTarget capture height.
namestringCapture base filename (letters, digits, dot, dash, underscore).
project_pathstringyesProject root with active live session.
rulersbooleanDraw rulers along frame edges for measurement.
scalenumberScale factor applied after crop/resize.
widthintegerTarget capture width.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_click_at ~138

Click a coordinate in screenshot or logical space. Use semantic click first (`renforge_click_element`) and fall back when text/id selectors are unavailable. Combine with coordinate space and frame/state guards.

NameTypeReqDescription
coordinate_spacestring`logical` (default) or `screenshot` coordinates.
expected_frame_idstringFrame id that must match for safety checks.
expected_stateOptional expected runtime state dictionary before click.
project_pathstringyesProject root with active live session.
xnumberyesHorizontal coordinate in selected coordinate space.
ynumberyesVertical coordinate in selected coordinate space.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_click_element ~207

Click a semantic UI element by text/id/screen (preferred). Falls back safely through fresh frame guards and returns focus hints when another element captures the hit test. Use `renforge_click_at` only as coordinate fallback.

NameTypeReqDescription
effect_timeoutnumberHow long to wait when `wait_for_effect` is true.
element_idstringExact control id override when text is unstable.
exactbooleanEnable strict text matching.
expected_frame_idstringOptional frame id from a recent scene/listing call; when supplied it rejects a stale frame.
interaction_idstringOptional interaction correlation id for logs/troubleshooting.
project_pathstringyesProject root with active live session.
screenstringOptional screen name filter to scope semantic lookup.
textstringPreferred visible text matcher for the target control.
wait_for_effectbooleanWait for a visual effect/state update before returning.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_context ~44

Return the same full payload as `renforge_info`, including active project discovery, dashboard/runtime hints, and RenForge version. This is an alias, not a reduced view.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_control ~223

Run a runtime control action (`advance`, `rollback`, `toggle_skip`, `toggle_auto`, `toggle_afm`, `game_menu`, `hide_windows`, `quick_save`, `quick_load`, `reload_script`, `restart_interaction`, `quit`). Use `quick_load` with care: it replaces live state. `quit` stops the active game session. `renforge_advance` is a narrower alternative for pure advance actions. Destructive actions require `authorize=true` when `RENFORGE_POLICY=enforce`.

NameTypeReqDescription
actionstringyesControl verb name to execute.
authorizebooleanExplicitly authorize destructive actions when `RENFORGE_POLICY=enforce`; ignored for lower-risk actions.
effect_timeoutnumberMaximum seconds to wait when `wait_for_effect` is enabled.
interaction_idstringOptional interaction correlation id used for safety checks and logs.
project_pathstringyesProject root with running live session.
wait_for_effectbooleanWait until bridge reports visible state effect before returning.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_diff_screenshots ~104

Diff two PNG frames and return whether pixels changed plus the minimal changed rectangle. Use for regression checks between pre/post actions.

NameTypeReqDescription
after_pathstringPath to comparison PNG; omit to compare against current live frame.
before_pathstringyesPath to baseline PNG file.
project_pathstringyesProject root used for path resolution of before/after images.
thresholdintegerPixel-difference threshold; higher values reduce sensitivity.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_distribute ~89

Build desktop distribution packages and write them to destination. This executes packaging toolchains and may download and cache the SDK; it can be slow or destructive when output paths are reused.

NameTypeReqDescription
destinationstringOptional output directory override.
packagestringPackage target (for example `pc`, `mac`, `linux`).
project_pathstringyesProject root to package.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_estimate_translation ~133

Estimate geometric translation between two images for visual text alignment workflows. This is file-only and read-only.

NameTypeReqDescription
after_pathstringyesPath to comparison image.
before_pathstringyesPath to baseline image.
max_shiftintegerMaximum per-axis shift considered during matching.
region_heightintegerOptional crop region height.
region_widthintegerOptional crop region width.
region_xintegerOptional crop region X origin.
region_yintegerOptional crop region Y origin.
thresholdintegerSimilarity threshold for matching pixels.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_eval ~138

Evaluate an arbitrary Python expression in the running store namespace. This may call project functions and mutate runtime state or access the filesystem, start processes, and use the network with the game process's permissions. Prefer `renforge_get_var` for plain reads and use this only for controlled diagnostics. Pass `authorize=true` when `RENFORGE_POLICY=enforce`, unless this operation is allowlisted.

NameTypeReqDescription
authorizebooleanExplicitly authorize this open-world expression when `RENFORGE_POLICY=enforce`.
exprstringyesPython expression to evaluate in the store namespace.
project_pathstringyesProject root with active live session.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_export_dialogue ~69

Export dialogue for translators or external tooling. This may download and cache the SDK, then writes and overwrites `dialogue.txt` at the project root.

NameTypeReqDescription
languagestringOptional language variant to export.
project_pathstringyesProject root whose dialogue should be exported.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_find_image_on_screen ~163

Find a template image on the current frame and return matches with bounds in screenshot coordinates. Use this to close the control loop after screenshot capture and click fallback.

NameTypeReqDescription
max_matchesintegerMaximum number of matches to return.
project_pathstringyesProject root with active live session.
region_heightintegerOptional region height; set width/height together.
region_widthintegerOptional region width; set width/height together.
region_xintegerOptional region x origin to limit search area.
region_yintegerOptional region y origin to limit search area.
template_pathstringyesTemplate image path relative to project or absolute.
thresholdnumberMatch confidence threshold.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_find_references ~121

Find symbol definitions and references across scripts and templates with the same pagination controls as scan. Useful before editing or renaming project identifiers.

NameTypeReqDescription
file_globstringOptional glob filter limiting candidate files.
limitintegerMaximum results to return; keep this bounded for large codebases.
offsetintegerZero-based pagination offset for matches.
project_pathstringyesProject root where symbol references should be resolved.
symbolstringyesSymbol name to resolve (for example label, define, or python identifier).

Structured output declared, but exposes no named fields.

No examples provided.

renforge_game_state ~82

Read full live state for debugging and monitoring. Use this before/after interactions to verify state deltas without changing variables directly. Request optional sections such as `metrics` and `audio`.

NameTypeReqDescription
includeOptional sections to include in addition to default state (for example metrics, audio).
project_pathstringyesProject root with an active live session.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_game_state_compact ~168

Read bounded live state with explicit variable limits and payload caps for large sessions. Use this in loops and scripts to keep responses predictable.

NameTypeReqDescription
max_depthintegerMaximum object nesting depth to serialize, from 0 through 20.
max_itemsintegerMaximum variable count before trimming, from 1 through 10000.
max_output_bytesintegerPayload cap in bytes, from 64 through 2000000.
project_pathstringyesProject root with an active live session.
state_profilestringCompact shape policy: `minimal`, `interaction`, `debug`, or `full`.
variable_namesRestrict output to these variable names.
variable_prefixstringFilter variable names by this prefix.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_generate_translations ~83

Generate or update translation files under `game/tl/<language>/`. This may download and cache the SDK before writing output. It writes files, so treat it as destructive when run against production trees and prefer checking stats first.

NameTypeReqDescription
languagestringyesLanguage code/name to generate.
project_pathstringyesProject root to write translation files for.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_get_displayable_bounds ~78

Read placement bounds for a rendered displayable tag by tag name. Use this to diagnose layout changes or anchor calculations before moving elements.

NameTypeReqDescription
layerstringOptional Ren'Py layer override.
project_pathstringyesProject root with active live session.
tagstringyesDisplayable tag name to resolve.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_get_doc ~69

Read a single Ren'Py documentation topic. For discovery, run `renforge_search_docs` and `renforge_list_docs` first to avoid guessing IDs. This may download and cache the SDK before resolving doc content.

NameTypeReqDescription
topicstringyesTopic identifier or slug in the doc catalog.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_get_errors ~76

Read recent runtime and bridge errors. Run this after risky actions or after a stop to confirm the game did not crash with hidden diagnostics.

NameTypeReqDescription
project_pathstringyesProject root; this can still read bounded crash files after the runtime stops.
sinceintegerExclusive cursor for paginating older logs/diagnostics.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_get_ui_element_bounds ~113

Resolve semantic element bounds without clicking. Use this after list output to verify target geometry before any pointer action.

NameTypeReqDescription
element_idstringElement id matcher for a precise target.
exactbooleanRequire exact text matching.
expected_frame_idstringOptional frame guard token for freshness.
project_pathstringyesProject root with active live session.
screenstringOptional screen filter for targeted lookup.
textstringText matcher for the element.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_get_var ~99

Read one named variable from the live store. JSON-safe values are returned as-is; other objects are replaced by a type label without calling conversion hooks such as `__repr__`. Resolving the name can still run a store property getter. Prefer this over `renforge_eval` when you only need a named lookup.

NameTypeReqDescription
namestringyesVariable name to read.
project_pathstringyesProject root with active live session.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_hit_test ~101

Inspect which interactive nodes sit under a coordinate. Use this when click targets look stale or overlays may absorb events, and prefer semantic selectors once ambiguity is resolved.

NameTypeReqDescription
coordinate_spacestringCoordinate system for the test point (`logical` or `screenshot`).
project_pathstringyesProject root with active live session.
xnumberyesX coordinate for hit testing.
ynumberyesY coordinate for hit testing.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_hover_element ~118

Move cursor over a semantic control by text/id/screen. Prefer this before click when checking hover states or tooltips.

NameTypeReqDescription
element_idstringElement id matcher for precise targeting.
exactbooleanRequire exact text match.
expected_frame_idstringFrame id expected from recent scene/listing calls.
project_pathstringyesProject root with active live session.
screenstringScreen filter for ambiguous UI states.
textstringText matcher for the control to hover.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_info ~54

Call this first. It returns the active project target (dashboard, "serve_default" or cwd), plus local runtime hints and RenForge version. Use this to determine the project path you should pass to project-scoped tools.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_inspect_image ~150

Inspect a local image file and optionally crop/zoom it before returning PNG bytes. Use this for artifact review without launching the game.

NameTypeReqDescription
crop_heightintegerOptional crop height in pixels; 0 keeps full height.
crop_widthintegerOptional crop width in pixels; 0 keeps full width.
crop_xintegerPixel offset from left for the crop rectangle origin.
crop_yintegerPixel offset from top for the crop rectangle origin.
image_pathstringyesLocal image path to load and inspect.
scalenumberScale multiplier applied after crop; > 1 zooms in, < 1 zooms out.

No output schema declared.

No examples provided.

renforge_inspect_project ~64

Read-only static analysis of a Ren'Py project: scan metadata and file structure without starting the game engine. Use this for safe project triage before runtime actions.

NameTypeReqDescription
project_pathstringyesAbsolute or relative Ren'Py project root containing `game/`.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_inspect_screen ~65

Inspect a named active screen, including layer, scope and arguments. Useful for branch verification before choosing click or hover selectors.

NameTypeReqDescription
namestringyesScreen name to inspect in the live bridge state.
project_pathstringyesProject root with active game session.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_jump ~95

Restart into a specific label/file position and keep interacting in a fresh game session. If needed, this may download and cache the required SDK before restart. Use for deterministic positioning before scripted checks.

NameTypeReqDescription
project_pathstringyesProject root containing the target game.
targetstringyesLabel name or `file:line` destination for relaunch.
versionstringRuntime version to use when restarting at target.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_languages ~43

List translation languages currently present under `game/tl/`. Use this before generating or exporting localized files.

NameTypeReqDescription
project_pathstringyesProject root for translation inventory.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_launch ~461

Start or attach a running game session with Live Editor enabled by default (pass editor=false for non-editor runtime launch). Launch starts the background startup flow, usually returning while startup is still in progress; poll `renforge_launch_status` and capture with `renforge_screenshot` before interaction. It may download/cache the selected SDK, inject session-owned `.rpy` files and editor assets under `game/`, and publish authenticated ownership/bridge metadata under `.renforge/control/`. `renforge_stop` removes only owned session artifacts.

NameTypeReqDescription
audiostringAudio strategy: `auto`, `native`, `dummy`, or `none`; both `dummy` and `none` use SDL dummy audio.
cleanup_on_stopbooleanWhen true, stop removes only the temporary save directory created by `savedir=temporary`; arbitrary save directories and existing saves are not deleted.
displaystringDisplay strategy: `auto`, `native`, `xvfb`, or `external`. The accepted token `none` returns an error because Ren'Py requires a display surface.
editorbooleanEnable/disable live editor injection; default True for interactive work.
persistentstringPersistent mode: `existing` preserves current persistent data and `empty` removes it in the isolated session; `copy` and `fixture` currently set an environment marker only and do not copy or load fix…
project_pathstringyesProject root passed to the launcher and runtime bridge.
savedirstringOptional save directory override. `temporary` creates an isolated temporary directory; any other non-default value is an arbitrary save directory path that is created if missing and is never removed…
timeoutnumberRen'Py background startup deadline in seconds (0 uses the launcher default). This does not control the MCP response wait; poll `renforge_launch_status` after a `starting` result.
versionstringLauncher version selector, either `stable` or an explicit semantic version (for example `8.5.3`).
warpstringOptional Ren'Py `file.rpy:line` startup target; this launch tool does not resolve label names.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_launch_status ~66

Poll launch progress and return `idle`, `starting`, `ready`, `failed`, `closing`, or `closed`. Use after any launch start when the first call has not returned an immediate ready state.

NameTypeReqDescription
project_pathstringyesProject root currently being launched or running.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_list_choices ~54

List on-screen menu choices with index and text ordering. Call before `renforge_select_choice` to pick valid entries for the current menu state.

NameTypeReqDescription
project_pathstringyesProject root of the running live session.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_list_docs ~45

List available Ren'Py documentation topics. Use this as the discovery step before any topic-specific docs read. This may download and cache the SDK if docs are not already available.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_list_ui_elements ~106

List focusable UI elements with bounds and element metadata. Use this first for semantic interaction planning; it is narrower than a full scene readout and aligned to click/hover workflows.

NameTypeReqDescription
element_typestringOptional element type/class filter (for example button, label).
project_pathstringyesProject root with active live session.
screenstringOptional active screen filter.
textstringOptional text filter to narrow focusable candidates.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_measure ~170

Measure geometry between scene nodes without visual inspection. `contrast` samples the live frame and reports a WCAG ratio. Use this to detect layout drift after positional edits.

NameTypeReqDescription
actionstringyesOne of `align`, `gap`, `distribute`, `center`, `overlap`, `fit`, or `contrast`.
project_pathstringyesProject root with active live session.
targetsarrayyesScene node `id` strings or literal bounds objects `{"x": number, "y": number, "width": number, "height": number}`.
toleranceOptional tolerance; adds a pass verdict (for contrast, the minimum WCAG ratio).
withinOptional scene node id or literal `{x,y,width,height}` bounds used as the containing region.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_new_game ~78

Restart at `start` and begin a new story progression. This may download and cache the required SDK before the fresh launch. Prefer this for clean scenario entry rather than reusing unstable runtime state.

NameTypeReqDescription
project_pathstringyesProject root containing the game to restart.
versionstringRuntime version used for the fresh launch.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_parse_lint ~60

Parse existing Ren'Py lint output text and return normalized diagnostics. This does not run Ren'Py, does not execute code, and does not touch the runtime.

NameTypeReqDescription
textstringyesExisting Ren'Py lint output text to parse.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_poll_events ~62

Read queued runtime events since a stream index. Use this for deterministic event-driven debugging instead of polling live UI repeatedly.

NameTypeReqDescription
project_pathstringyesProject root with active live session.
sinceintegerExclusive cursor position for pagination of event history.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_position_element ~237

Reposition a shown image tag live and return new logical bounds. This mutates runtime placement only; after converging with scene/measure tools, write the final values into the `.rpy` source.

NameTypeReqDescription
layerstringOptional Ren'Py layer override.
project_pathstringyesProject root with active live session.
rotateRotation in degrees.
tagstringyesDisplayable tag to reposition.
xalignAlternative x alignment offset.
xanchorAnchor point for x placement (0..1).
xoffsetRelative x offset in pixels.
xposX position: an integer is absolute logical pixels; a float is a screen fraction (for example 0.5).
yalignAlternative y alignment offset.
yanchorAnchor point for y placement (0..1).
yoffsetRelative y offset in pixels.
yposY position: an integer is absolute logical pixels; a float is a screen fraction (for example 0.5).
zoomScale factor for the displayable.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_run_scenario ~283

Run a scripted scenario pipeline of multiple interaction steps in one call and return grouped diagnostics. `eval`, `assert`, and expression-based `wait` steps execute arbitrary Python that may mutate state, access the filesystem, start processes, or use the network. Validate expectations and review capture output on failure. Destructive or open-world steps require `authorize=true` when `RENFORGE_POLICY=enforce`.

NameTypeReqDescription
authorizebooleanExplicitly authorize a destructive or open-world step when `RENFORGE_POLICY=enforce`.
capture_on_failurebooleanCapture diagnostics (including image) when step evaluation fails.
namestringScenario name used for logs and output grouping.
project_pathstringyesProject root of the live session.
state_profilestringCompact state profile used for captures: `minimal`, `interaction`, `debug`, or `full`.
stepsarrayyesOrdered action objects. Supported actions: `set`, `eval`, `click`, `click_at`, `advance`, `scroll`, `wait`, `assert`, `select_choice`, `capture`, `save`, `load`, `control`, and `send_input`.
stop_on_failurebooleanAbort remaining steps when one step fails.
timeoutnumberTotal finite wall-time budget from 0 through 600 seconds.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_saves ~171

List, load, or save named slots in a single command family. `list` is read-only; `load` replaces live state and `save` can overwrite the chosen slot. Verify slot names before mutating gameplay progress. `load` requires `authorize=true` when `RENFORGE_POLICY=enforce`.

NameTypeReqDescription
actionstringyesOne of `list`, `load`, or `save`.
authorizebooleanExplicitly authorize `load` when `RENFORGE_POLICY=enforce`; ignored for list/save.
extra_infoOptional save metadata for save actions.
project_pathstringyesProject root of the running live game.
regexpOptional regex filter for list only, selecting matching slots.
slotSlot label used by save/load actions.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_scan_project ~173

Search project scripts with bounded output. Use `sections`, `file_glob`, and `symbol` for focused indexing, then paginate with `offset` and `limit` for stable batches.

NameTypeReqDescription
file_globstringOptional filename glob filter for targeted scan files.
limitintegerMaximum items per page. Keep values bounded to avoid large payloads.
offsetintegerZero-based pagination offset for scan results.
project_pathstringyesProject root to index for static analysis.
sectionsOptional sections: `files`, `variables`, `graph`, `labels`, `jumps`, `calls`, `menus`, `characters`, `images`, and `unresolved_targets`.
symbolstringFilter matches for this symbol; empty keeps section-wide scan.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_scene_tree ~324

Read the full scene graph (logical scene data). Unlike `renforge_list_ui_elements` this is broad and includes non-focusable nodes, so use it for full-tree inspection when semantic selectors are ambiguous. `save_as` or `diff_against` may create `.renforge/scenes/`; `save_as` writes and overwrites the named JSON snapshot. Omit both options for read-only inspection.

NameTypeReqDescription
detailstringDetail granularity (`semantic`, `layout`, or `raw`) for scene nodes.
diff_againststringOptional snapshot name for diff context; compare against existing `.renforge/scenes/<name>.json` entry.
formatstringReturn format (`json` or `wireframe`).
idsOptional element id filters.
includeOptional expensive node properties: `color`, `style`, and `overflow`.
layersOptional layer filters.
max_itemsintegerMaximum total nodes, from 1 through 10000.
max_output_bytesintegerPayload cap, from 64 through 2000000 bytes.
max_output_depthintegerMaximum traversal depth before truncation, from 0 through 20.
project_pathstringyesProject root with active live session.
save_asstringOptional snapshot name saved under `.renforge/scenes/<name>.json`; reusing a name overwrites it.
screenstringOptional active screen filter.
typesOptional node type filters.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_screenshot ~241

Capture the current live frame and return an in-memory image response (no persistent file write). Use this to inspect UI state before clicks or scenario actions.

NameTypeReqDescription
crop_heightintegerCrop height; 0 disables cropping in Y.
crop_widthintegerCrop width; 0 disables cropping in X.
crop_xintegerCrop origin x in logical coordinates.
crop_yintegerCrop origin y in logical coordinates.
crosshair_xintegerCrosshair x coordinate; both x/y must be set together.
crosshair_yintegerCrosshair y coordinate; both x/y must be set together.
gridintegerGuide overlay grid spacing in pixels.
heightintegerTarget capture height. Set one axis and keep aspect ratio via runtime logic.
project_pathstringyesProject root with active live session.
rulersbooleanDraw rulers along frame edges for measurement.
scalenumberScale factor applied after crop/resize.
widthintegerTarget capture width. Set one axis and keep aspect ratio via runtime logic.

No output schema declared.

No examples provided.

renforge_search_docs ~66

Search local Ren'Py documentation snippets by keyword before opening results. Use this to identify canonical topic IDs before `renforge_get_doc`. This may download and cache the SDK when docs are not already available.

NameTypeReqDescription
querystringyesSearch query for Ren'Py documentation corpus.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_select_choice ~93

Select a menu choice by case-insensitive text or zero-based index. Text matching prefers an exact match, then uses the shortest case-insensitive substring match. Use list output first to avoid ambiguous partial text.

NameTypeReqDescription
indexZero-based choice index fallback when text is omitted.
project_pathstringyesProject root of the running live session.
textVisible text to match; preferred over index.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_send_input ~182

Send exactly one input command path (text, key, or scroll object) into the live game. Keep calls scoped and single-purpose; for deterministic workflows prefer one action per invocation.

NameTypeReqDescription
keyReadable named key such as `enter`, `esc`, an arrow, `pageup`, `pagedown`, `backspace`, `delete`, `home`, `end`, `space`, `tab`, or a function key.
project_pathstringyesProject root with active live session.
scrollLogical-coordinate object `{"x": number, "y": number, "direction": "up"|"down", "amount": integer?}`.
submitbooleanPress Enter after injected text; only valid with text input, not key or scroll.
textText to inject as character-by-character text input.

Structured output declared, but exposes no named fields.

No examples provided.

renforge_set_var ~79

Write a game variable directly in the live store namespace. This mutates state immediately and should be used after validating the current state snapshot.

NameTypeReqDescription
namestringyesVariable name to set.
project_pathstringyesProject root with active live session.
valueyesValue to write to the variable (JSON-compatible serializable object).

Structured output declared, but exposes no named fields.

No examples provided.

Common questions

What is the io.github.alex-jordan547/renforge MCP server?

io.github.alex-jordan547/renforge is an MCP server listed in the public MCP registry as io.github.alex-jordan547/renforge. Inspect, drive and debug a running Ren'Py game: state, screenshots, guarded clicks, saves, builds. This page covers its PyPI package (renforge).

Is the io.github.alex-jordan547/renforge MCP server safe to use?

io.github.alex-jordan547/renforge scores 69 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.alex-jordan547/renforge MCP server expose?

io.github.alex-jordan547/renforge exposes 54 tools: renforge_info, renforge_context, renforge_inspect_image, renforge_inspect_project, renforge_scan_project, and 49 more. Their descriptions and schemas cost roughly 6,769 tokens of context every time the server is loaded.

Is the io.github.alex-jordan547/renforge MCP server still maintained?

io.github.alex-jordan547/renforge is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.alex-jordan547/renforge MCP server under?

io.github.alex-jordan547/renforge declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.