Skip to main content
Glama

ouroboros_ralph

Start a background evolution loop that iteratively runs evolve steps until QA passes, convergence is reached, or max generations are hit, returning a job ID for status checks and cancellation.

Instructions

Start a first-class Ralph loop in the background. The loop repeatedly runs evolve_step until QA passes, convergence is reached, a terminal evolution action occurs, cancellation is requested, or max_generations is reached. In non-plugin runtimes, returns a job_id immediately for ouroboros_job_status, ouroboros_job_wait, ouroboros_job_result, and ouroboros_cancel_job. In OpenCode plugin mode, returns job_id=None and delegates the loop to the plugin child session.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
executeNoWhether each generation should execute and evaluate. Default: true.
skip_qaNoSkip post-execution QA. Default: false.
parallelNoWhether each generation may execute ACs in parallel. Default: true.
lineage_idYesLineage ID to start or continue.
project_dirNoProject root forwarded to each evolve_step generation.
execution_idNoOptional execution id used for checkpoint commit metadata.
seed_contentNoSeed YAML content for generation 1. Omit for continuation.
commit_policyNoOptional checkpoint commit policy forwarded to evolve_step.
auto_session_idNoOptional auto session id used for checkpoint commit metadata.
max_generationsNoMaximum generations to run before stopping. Default: 10. Range: 1-10.
max_total_secondsNoTotal wall-clock budget for the entire Ralph loop in seconds. In the in-process runner this is enforced by RalphLoopRunner: checked at the top of every iteration BEFORE launching evolve_step, and on exhaustion the loop stops with stop_reason='wall_clock_exhausted'. In OpenCode plugin mode the bound is forwarded to the child session and the plugin is expected to self-enforce; the MCP server cannot abort a foreign child process. When omitted, a derived ceiling of max_generations * per_iteration_timeout_seconds is auto-applied (with a WARNING log) for standalone callers. Range: 1-86400.
checkpoint_commitsNoExisting checkpoint commit records forwarded to evolve_step.
oscillation_windowNoNumber of trailing iterations whose findings_hash must match (and QA must not have passed) to stop with stop_reason='oscillation_detected'. Default: 3. Range: 2-10. Values < 2 are rejected because a single iteration cannot oscillate with itself.
conductor_directiveNoDeterministic non-relaxing directive for one successor generation.
conductor_decision_idNoSelected conductor decision authorizing one successor generation.
grade_regression_windowNoNumber of trailing iterations whose non-None grades must strictly decrease to stop with stop_reason='grade_regressing'. Default: 2. Range: 2-10. Values < 2 are rejected because strict-decrease requires at least two grades to compare.
predecessor_execution_idNoExecution or generation that this successor follows.
checkpoint_attempted_ac_idsNoAcceptance criteria already considered for checkpoint commits.
per_iteration_timeout_secondsNoPer-iteration wall-clock bound in seconds. In-process runtime: hard-enforced via asyncio.timeout, the loop stops with stop_reason='iteration_timeout' on expiry. OpenCode plugin runtime: advisory bound advertised to the child session via prompt + subagent context — the child is expected to honor it and return stop_reason='iteration_timeout', but the parent MCP process cannot interrupt the child, so a non-conforming child session may still exceed this bound. Default: 1800. Range: 30-7200.
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the background execution, immediate job_id return in non-plugin runtimes, delegation in plugin mode, and the five stopping conditions. It does not describe side effects or required permissions, but for a background loop tool this is substantial transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three dense sentences that front-load the purpose, then efficiently cover runtime behavior and termination conditions. Every clause adds value, with no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high parameter count (19), no output schema, and no annotations, the description provides strong contextual grounding: it explains the loop lifecycle, job_id usage for follow-on tools, and plugin-mode behavior. It could mention prerequisites (e.g., lineage existence) or clarify 'first-class', but overall it is well-rounded for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter-specific meaning, but the schema already provides thorough details for each of the 19 parameters, including ranges, defaults, and runtime enforcement nuances.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts a background Ralph loop and details the loop's termination conditions. However, it does not explicitly differentiate from the similarly named ouroboros_start_ralph sibling, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The implied usage is clear: use this to start a full Ralph loop that runs evolve_step iteratively. Yet there is no explicit guidance on when to prefer this over ouroboros_start_evolve_step, ouroboros_auto, or other siblings, and no exclusions or alternatives are named.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Q00/ouroboros'

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