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
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 12 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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
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
claude mcp add alex-jordan547-renforge -- uvx renforge
{
"mcpServers": {
"alex-jordan547-renforge": {
"command": "uvx",
"args": [
"renforge"
]
}
}
} {
"servers": {
"alex-jordan547-renforge": {
"command": "uvx",
"args": [
"renforge"
]
}
}
} codex mcp add alex-jordan547-renforge -- uvx renforge
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"alex-jordan547-renforge": {
"type": "local",
"command": [
"uvx",
"renforge"
],
"enabled": true
}
}
} openclaw mcp add alex-jordan547-renforge --command uvx --arg renforge
mcp_servers:
alex-jordan547-renforge:
command: "uvx"
args: ["renforge"] {
"McpServers": {
"alex-jordan547-renforge": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"renforge"
]
}
}
} assistant mcp add alex-jordan547-renforge -t stdio -c uvx -a renforge
{
"mcpServers": {
"alex-jordan547-renforge": {
"command": "uvx",
"args": [
"renforge"
]
}
}
} 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
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 →
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 →
renforge_advance 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root of the running live session. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_assets Renforge Assets ~46
Run static asset validation and return missing/orphaned image or audio references. Useful before build and before submitting translation/build changes.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root to inspect. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_autopilot 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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_runs | integer | – | Maximum scenario runs before stopping. |
| max_steps | integer | – | Maximum steps per run. |
| project_path | string | yes | Project root for the live session. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_capture_screenshot 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.
| Name | Type | Req | Description |
|---|---|---|---|
| crop_height | integer | – | Crop height; 0 disables cropping in Y. |
| crop_width | integer | – | Crop width; 0 disables cropping in X. |
| crop_x | integer | – | Crop origin x in logical coordinates. |
| crop_y | integer | – | Crop origin y in logical coordinates. |
| crosshair_x | integer | – | Crosshair x coordinate; both x/y must be set together. |
| crosshair_y | integer | – | Crosshair y coordinate; both x/y must be set together. |
| grid | integer | – | Guide overlay grid spacing in pixels. |
| height | integer | – | Target capture height. |
| name | string | – | Capture base filename (letters, digits, dot, dash, underscore). |
| project_path | string | yes | Project root with active live session. |
| rulers | boolean | – | Draw rulers along frame edges for measurement. |
| scale | number | – | Scale factor applied after crop/resize. |
| width | integer | – | Target capture width. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_click_at 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.
| Name | Type | Req | Description |
|---|---|---|---|
| coordinate_space | string | – | `logical` (default) or `screenshot` coordinates. |
| expected_frame_id | string | – | Frame id that must match for safety checks. |
| expected_state | – | – | Optional expected runtime state dictionary before click. |
| project_path | string | yes | Project root with active live session. |
| x | number | yes | Horizontal coordinate in selected coordinate space. |
| y | number | yes | Vertical coordinate in selected coordinate space. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_click_element 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.
| Name | Type | Req | Description |
|---|---|---|---|
| effect_timeout | number | – | How long to wait when `wait_for_effect` is true. |
| element_id | string | – | Exact control id override when text is unstable. |
| exact | boolean | – | Enable strict text matching. |
| expected_frame_id | string | – | Optional frame id from a recent scene/listing call; when supplied it rejects a stale frame. |
| interaction_id | string | – | Optional interaction correlation id for logs/troubleshooting. |
| project_path | string | yes | Project root with active live session. |
| screen | string | – | Optional screen name filter to scope semantic lookup. |
| text | string | – | Preferred visible text matcher for the target control. |
| wait_for_effect | boolean | – | Wait for a visual effect/state update before returning. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_context 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 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`.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Control verb name to execute. |
| authorize | boolean | – | Explicitly authorize destructive actions when `RENFORGE_POLICY=enforce`; ignored for lower-risk actions. |
| effect_timeout | number | – | Maximum seconds to wait when `wait_for_effect` is enabled. |
| interaction_id | string | – | Optional interaction correlation id used for safety checks and logs. |
| project_path | string | yes | Project root with running live session. |
| wait_for_effect | boolean | – | Wait until bridge reports visible state effect before returning. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_diff_screenshots 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.
| Name | Type | Req | Description |
|---|---|---|---|
| after_path | string | – | Path to comparison PNG; omit to compare against current live frame. |
| before_path | string | yes | Path to baseline PNG file. |
| project_path | string | yes | Project root used for path resolution of before/after images. |
| threshold | integer | – | Pixel-difference threshold; higher values reduce sensitivity. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_distribute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| destination | string | – | Optional output directory override. |
| package | string | – | Package target (for example `pc`, `mac`, `linux`). |
| project_path | string | yes | Project root to package. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_estimate_translation Renforge Estimate Translation ~133
Estimate geometric translation between two images for visual text alignment workflows. This is file-only and read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| after_path | string | yes | Path to comparison image. |
| before_path | string | yes | Path to baseline image. |
| max_shift | integer | – | Maximum per-axis shift considered during matching. |
| region_height | integer | – | Optional crop region height. |
| region_width | integer | – | Optional crop region width. |
| region_x | integer | – | Optional crop region X origin. |
| region_y | integer | – | Optional crop region Y origin. |
| threshold | integer | – | Similarity threshold for matching pixels. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_eval 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.
| Name | Type | Req | Description |
|---|---|---|---|
| authorize | boolean | – | Explicitly authorize this open-world expression when `RENFORGE_POLICY=enforce`. |
| expr | string | yes | Python expression to evaluate in the store namespace. |
| project_path | string | yes | Project root with active live session. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_export_dialogue 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.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | – | Optional language variant to export. |
| project_path | string | yes | Project root whose dialogue should be exported. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_find_image_on_screen 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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_matches | integer | – | Maximum number of matches to return. |
| project_path | string | yes | Project root with active live session. |
| region_height | integer | – | Optional region height; set width/height together. |
| region_width | integer | – | Optional region width; set width/height together. |
| region_x | integer | – | Optional region x origin to limit search area. |
| region_y | integer | – | Optional region y origin to limit search area. |
| template_path | string | yes | Template image path relative to project or absolute. |
| threshold | number | – | Match confidence threshold. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_find_references 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_glob | string | – | Optional glob filter limiting candidate files. |
| limit | integer | – | Maximum results to return; keep this bounded for large codebases. |
| offset | integer | – | Zero-based pagination offset for matches. |
| project_path | string | yes | Project root where symbol references should be resolved. |
| symbol | string | yes | Symbol name to resolve (for example label, define, or python identifier). |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_game_state 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`.
| Name | Type | Req | Description |
|---|---|---|---|
| include | – | – | Optional sections to include in addition to default state (for example metrics, audio). |
| project_path | string | yes | Project root with an active live session. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_game_state_compact 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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_depth | integer | – | Maximum object nesting depth to serialize, from 0 through 20. |
| max_items | integer | – | Maximum variable count before trimming, from 1 through 10000. |
| max_output_bytes | integer | – | Payload cap in bytes, from 64 through 2000000. |
| project_path | string | yes | Project root with an active live session. |
| state_profile | string | – | Compact shape policy: `minimal`, `interaction`, `debug`, or `full`. |
| variable_names | – | – | Restrict output to these variable names. |
| variable_prefix | string | – | Filter variable names by this prefix. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_generate_translations 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.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | yes | Language code/name to generate. |
| project_path | string | yes | Project root to write translation files for. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_get_displayable_bounds 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.
| Name | Type | Req | Description |
|---|---|---|---|
| layer | string | – | Optional Ren'Py layer override. |
| project_path | string | yes | Project root with active live session. |
| tag | string | yes | Displayable tag name to resolve. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_get_doc 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.
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | yes | Topic identifier or slug in the doc catalog. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_get_errors 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root; this can still read bounded crash files after the runtime stops. |
| since | integer | – | Exclusive cursor for paginating older logs/diagnostics. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_get_ui_element_bounds 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.
| Name | Type | Req | Description |
|---|---|---|---|
| element_id | string | – | Element id matcher for a precise target. |
| exact | boolean | – | Require exact text matching. |
| expected_frame_id | string | – | Optional frame guard token for freshness. |
| project_path | string | yes | Project root with active live session. |
| screen | string | – | Optional screen filter for targeted lookup. |
| text | string | – | Text matcher for the element. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_get_var 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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Variable name to read. |
| project_path | string | yes | Project root with active live session. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_hit_test 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.
| Name | Type | Req | Description |
|---|---|---|---|
| coordinate_space | string | – | Coordinate system for the test point (`logical` or `screenshot`). |
| project_path | string | yes | Project root with active live session. |
| x | number | yes | X coordinate for hit testing. |
| y | number | yes | Y coordinate for hit testing. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_hover_element Renforge Hover Element ~118
Move cursor over a semantic control by text/id/screen. Prefer this before click when checking hover states or tooltips.
| Name | Type | Req | Description |
|---|---|---|---|
| element_id | string | – | Element id matcher for precise targeting. |
| exact | boolean | – | Require exact text match. |
| expected_frame_id | string | – | Frame id expected from recent scene/listing calls. |
| project_path | string | yes | Project root with active live session. |
| screen | string | – | Screen filter for ambiguous UI states. |
| text | string | – | Text matcher for the control to hover. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_info 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| crop_height | integer | – | Optional crop height in pixels; 0 keeps full height. |
| crop_width | integer | – | Optional crop width in pixels; 0 keeps full width. |
| crop_x | integer | – | Pixel offset from left for the crop rectangle origin. |
| crop_y | integer | – | Pixel offset from top for the crop rectangle origin. |
| image_path | string | yes | Local image path to load and inspect. |
| scale | number | – | Scale multiplier applied after crop; > 1 zooms in, < 1 zooms out. |
No output schema declared.
No examples provided.
renforge_inspect_project 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Absolute or relative Ren'Py project root containing `game/`. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_inspect_screen Renforge Inspect Screen ~65
Inspect a named active screen, including layer, scope and arguments. Useful for branch verification before choosing click or hover selectors.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Screen name to inspect in the live bridge state. |
| project_path | string | yes | Project root with active game session. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_jump 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root containing the target game. |
| target | string | yes | Label name or `file:line` destination for relaunch. |
| version | string | – | Runtime version to use when restarting at target. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_languages Renforge Languages ~43
List translation languages currently present under `game/tl/`. Use this before generating or exporting localized files.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root for translation inventory. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_launch 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.
| Name | Type | Req | Description |
|---|---|---|---|
| audio | string | – | Audio strategy: `auto`, `native`, `dummy`, or `none`; both `dummy` and `none` use SDL dummy audio. |
| cleanup_on_stop | boolean | – | When true, stop removes only the temporary save directory created by `savedir=temporary`; arbitrary save directories and existing saves are not deleted. |
| display | string | – | Display strategy: `auto`, `native`, `xvfb`, or `external`. The accepted token `none` returns an error because Ren'Py requires a display surface. |
| editor | boolean | – | Enable/disable live editor injection; default True for interactive work. |
| persistent | string | – | Persistent 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_path | string | yes | Project root passed to the launcher and runtime bridge. |
| savedir | string | – | Optional 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… |
| timeout | number | – | Ren'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. |
| version | string | – | Launcher version selector, either `stable` or an explicit semantic version (for example `8.5.3`). |
| warp | string | – | Optional 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root currently being launched or running. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_list_choices 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root of the running live session. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_list_docs 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| element_type | string | – | Optional element type/class filter (for example button, label). |
| project_path | string | yes | Project root with active live session. |
| screen | string | – | Optional active screen filter. |
| text | string | – | Optional text filter to narrow focusable candidates. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_measure 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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | One of `align`, `gap`, `distribute`, `center`, `overlap`, `fit`, or `contrast`. |
| project_path | string | yes | Project root with active live session. |
| targets | array | yes | Scene node `id` strings or literal bounds objects `{"x": number, "y": number, "width": number, "height": number}`. |
| tolerance | – | – | Optional tolerance; adds a pass verdict (for contrast, the minimum WCAG ratio). |
| within | – | – | Optional 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root containing the game to restart. |
| version | string | – | Runtime version used for the fresh launch. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_parse_lint 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.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | Existing Ren'Py lint output text to parse. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_poll_events 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Project root with active live session. |
| since | integer | – | Exclusive cursor position for pagination of event history. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_position_element 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.
| Name | Type | Req | Description |
|---|---|---|---|
| layer | string | – | Optional Ren'Py layer override. |
| project_path | string | yes | Project root with active live session. |
| rotate | – | – | Rotation in degrees. |
| tag | string | yes | Displayable tag to reposition. |
| xalign | – | – | Alternative x alignment offset. |
| xanchor | – | – | Anchor point for x placement (0..1). |
| xoffset | – | – | Relative x offset in pixels. |
| xpos | – | – | X position: an integer is absolute logical pixels; a float is a screen fraction (for example 0.5). |
| yalign | – | – | Alternative y alignment offset. |
| yanchor | – | – | Anchor point for y placement (0..1). |
| yoffset | – | – | Relative y offset in pixels. |
| ypos | – | – | Y position: an integer is absolute logical pixels; a float is a screen fraction (for example 0.5). |
| zoom | – | – | Scale factor for the displayable. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_run_scenario 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`.
| Name | Type | Req | Description |
|---|---|---|---|
| authorize | boolean | – | Explicitly authorize a destructive or open-world step when `RENFORGE_POLICY=enforce`. |
| capture_on_failure | boolean | – | Capture diagnostics (including image) when step evaluation fails. |
| name | string | – | Scenario name used for logs and output grouping. |
| project_path | string | yes | Project root of the live session. |
| state_profile | string | – | Compact state profile used for captures: `minimal`, `interaction`, `debug`, or `full`. |
| steps | array | yes | Ordered action objects. Supported actions: `set`, `eval`, `click`, `click_at`, `advance`, `scroll`, `wait`, `assert`, `select_choice`, `capture`, `save`, `load`, `control`, and `send_input`. |
| stop_on_failure | boolean | – | Abort remaining steps when one step fails. |
| timeout | number | – | Total finite wall-time budget from 0 through 600 seconds. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_saves 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`.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | One of `list`, `load`, or `save`. |
| authorize | boolean | – | Explicitly authorize `load` when `RENFORGE_POLICY=enforce`; ignored for list/save. |
| extra_info | – | – | Optional save metadata for save actions. |
| project_path | string | yes | Project root of the running live game. |
| regexp | – | – | Optional regex filter for list only, selecting matching slots. |
| slot | – | – | Slot label used by save/load actions. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_scan_project 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_glob | string | – | Optional filename glob filter for targeted scan files. |
| limit | integer | – | Maximum items per page. Keep values bounded to avoid large payloads. |
| offset | integer | – | Zero-based pagination offset for scan results. |
| project_path | string | yes | Project root to index for static analysis. |
| sections | – | – | Optional sections: `files`, `variables`, `graph`, `labels`, `jumps`, `calls`, `menus`, `characters`, `images`, and `unresolved_targets`. |
| symbol | string | – | Filter matches for this symbol; empty keeps section-wide scan. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_scene_tree 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.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | Detail granularity (`semantic`, `layout`, or `raw`) for scene nodes. |
| diff_against | string | – | Optional snapshot name for diff context; compare against existing `.renforge/scenes/<name>.json` entry. |
| format | string | – | Return format (`json` or `wireframe`). |
| ids | – | – | Optional element id filters. |
| include | – | – | Optional expensive node properties: `color`, `style`, and `overflow`. |
| layers | – | – | Optional layer filters. |
| max_items | integer | – | Maximum total nodes, from 1 through 10000. |
| max_output_bytes | integer | – | Payload cap, from 64 through 2000000 bytes. |
| max_output_depth | integer | – | Maximum traversal depth before truncation, from 0 through 20. |
| project_path | string | yes | Project root with active live session. |
| save_as | string | – | Optional snapshot name saved under `.renforge/scenes/<name>.json`; reusing a name overwrites it. |
| screen | string | – | Optional active screen filter. |
| types | – | – | Optional node type filters. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_screenshot 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.
| Name | Type | Req | Description |
|---|---|---|---|
| crop_height | integer | – | Crop height; 0 disables cropping in Y. |
| crop_width | integer | – | Crop width; 0 disables cropping in X. |
| crop_x | integer | – | Crop origin x in logical coordinates. |
| crop_y | integer | – | Crop origin y in logical coordinates. |
| crosshair_x | integer | – | Crosshair x coordinate; both x/y must be set together. |
| crosshair_y | integer | – | Crosshair y coordinate; both x/y must be set together. |
| grid | integer | – | Guide overlay grid spacing in pixels. |
| height | integer | – | Target capture height. Set one axis and keep aspect ratio via runtime logic. |
| project_path | string | yes | Project root with active live session. |
| rulers | boolean | – | Draw rulers along frame edges for measurement. |
| scale | number | – | Scale factor applied after crop/resize. |
| width | integer | – | Target capture width. Set one axis and keep aspect ratio via runtime logic. |
No output schema declared.
No examples provided.
renforge_search_docs 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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search query for Ren'Py documentation corpus. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_select_choice 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.
| Name | Type | Req | Description |
|---|---|---|---|
| index | – | – | Zero-based choice index fallback when text is omitted. |
| project_path | string | yes | Project root of the running live session. |
| text | – | – | Visible text to match; preferred over index. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_send_input 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.
| Name | Type | Req | Description |
|---|---|---|---|
| key | – | – | Readable named key such as `enter`, `esc`, an arrow, `pageup`, `pagedown`, `backspace`, `delete`, `home`, `end`, `space`, `tab`, or a function key. |
| project_path | string | yes | Project root with active live session. |
| scroll | – | – | Logical-coordinate object `{"x": number, "y": number, "direction": "up"|"down", "amount": integer?}`. |
| submit | boolean | – | Press Enter after injected text; only valid with text input, not key or scroll. |
| text | – | – | Text to inject as character-by-character text input. |
Structured output declared, but exposes no named fields.
No examples provided.
renforge_set_var 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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Variable name to set. |
| project_path | string | yes | Project root with active live session. |
| value | – | yes | Value to write to the variable (JSON-compatible serializable object). |
Structured output declared, but exposes no named fields.
No examples provided.
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.