Skip to main content
Glama

ouroboros_start_ralph

Starts a Ralph loop to evolve seed content through configured generations, returning a job_id for tracking in non-plugin runtimes or delegating to a plugin session.

Instructions

Fire-and-forget alias for ouroboros_ralph. Starts the same runtime-owned Ralph loop. 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, delegates to a plugin child session and returns job_id=None with status='delegated_to_plugin'; results are not pollable via job_status/job_result.

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, the description carries the full burden of behavioral disclosure. It explains the two runtime modes: non-plugin returns job_id immediately for polling, while plugin mode delegates and returns job_id=None with status='delegated_to_plugin', noting results are not pollable. This goes beyond a simple 'starts a loop' and covers key behavioral outcomes, though it omits details like error handling or side effects.

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 concise and well-structured: a single opening clause states the core purpose, followed by two sentences detailing behavioral modes. Every sentence earns its place, with no redundancy or fluff.

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

Completeness3/5

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

Despite the complexity (19 parameters, nested objects, no output schema), the description covers the most critical aspects: fire-and-forget nature and mode-specific return behavior. However, it omits details about the response structure beyond job_id/status, potential error conditions, and any prerequisites like lineage_id, which might be expected given 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 does not add any parameter-specific semantics beyond what the schema already provides; it only mentions job_id and status which are return values, not parameters. Therefore, it neither enhances nor detracts from schema information.

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

Purpose5/5

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

The description clearly states the tool's function as a 'Fire-and-forget alias for ouroboros_ralph' that 'Starts the same runtime-owned Ralph loop.' This gives a specific verb ('starts'), a resource ('Ralph loop'), and its nature as an alias, distinguishing it from the synchronous ouroboros_ralph sibling.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool: for fire-and-forget invocation when immediate job_id is needed, contrasted with plugin mode delegation. It does not explicitly name alternatives like ouroboros_ralph for synchronous use, but the 'alias' framing implies the distinction. No explicit exclusions are given, so not a 5.

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