ralph-loop-mcp
This server implements the Ralph Loop — a multi-model iterative development workflow where a "worker" AI model performs tasks and a "reviewer" AI model provides feedback, cycling until the reviewer decides to "SHIP" the work.
Core capabilities:
Initialize a session (
ralph_loop_initialize) — Start a new iterative cycle for a task, configuring worker/reviewer models, providers, max iterations, and cross-model review enforcement.Retrieve the current task (
ralph_loop_get_task) — Fetch the task description for the worker phase.Submit completed work (
ralph_loop_submit_work) — Submit the worker's output and summary, transitioning the session to the review phase.Retrieve submitted work (
ralph_loop_get_work) — Fetch the worker's output so the reviewer model can evaluate it.Submit a review decision (
ralph_loop_submit_review) — SubmitSHIP(accept) orREVISE(iterate) with optional feedback.Retrieve reviewer feedback (
ralph_loop_get_feedback) — Get feedback for the next worker iteration, or confirm completion ifSHIP.Check session status (
ralph_loop_get_status) — Get the current iteration number, phase (work/review), and overall state.Get model configuration (
ralph_loop_get_config) — Retrieve the worker/reviewer model and provider setup for a session.Reset a session (
ralph_loop_reset) — Clear all state files to restart a session fresh.Block an iteration (
ralph_loop_block) — Signal the worker is stuck with a reason, creating aRALPH-BLOCKED.mdmarker to halt the loop.Run a full automated loop (
ralph_loop_run) — Execute the complete workflow from initialization through orchestration automatically.
Session state is persisted in a file-based system (~/.goose/ralph/{sessionId}/), and supported LLM providers include Anthropic, OpenAI, Google, GitHub Copilot, and Goose.
Allows using GitHub Copilot as worker or reviewer in the Ralph Loop.
Allows using Google's Gemini models as worker or reviewer in the Ralph Loop.
Allows using OpenAI's models (e.g., GPT-4) as worker or reviewer in the Ralph Loop.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ralph-loop-mcpstart a Ralph Loop session to implement JWT auth"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ralph-loop-runner
A cross-platform implementation of the Ralph Loop — a multi-model iterative development technique where a "worker" model does the work and a "reviewer" model provides cross-model review, iterating until the reviewer says "SHIP".
Based on:
Ralph Wiggum as a "software engineer" by Geoffrey Huntley
Overview
The Ralph Loop implements a two-phase iterative workflow:
┌─────────────────────────────────────────────────────────────┐
│ RALPH LOOP │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ WORK PHASE ┌─────────┐ │
│ │ TASK │ ──────────────────▶ │ WORKER │ │
│ │ │ fresh context │ (Model A)│ │
│ └─────────┘ └────┬────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Submit Work + │ │
│ │ Summary │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────┐ REVIEW PHASE ┌─────────┐ │
│ │ REVIEWER│ ◀─────────────────── │ WORK │ │
│ │(Model B)│ cross-model review │ OUTPUT │ │
│ └────┬────┘ └─────────┘ │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ │ DECISION│ │
│ │ SHIP │──────▶ COMPLETE ✓ │
│ │ REVISE │──────▶ Next Iteration (fresh context) │
│ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘Related MCP server: AMS Development MCP Servers
Features
Cross-platform Native: Single script per platform (Bash for Linux/macOS, PowerShell for Windows) — no Node.js runtime required
Dual Mode Operation:
MCP Server Mode — JSON-RPC 2.0 over stdio for integration with AI agents
CLI Mode — Run the full loop directly from command line
Session-based: Multiple concurrent Ralph Loop sessions supported
File-based State: Persistent state stored in
~/.goose/ralph/{sessionId}/11 MCP Tools: Complete workflow control via MCP tools, including
ralph_loop_runfor full automationCross-Model Review: Worker/reviewer model configuration with validation
Multiple LLM Providers: Anthropic (Claude), OpenAI, Google (Gemini), GitHub Copilot, Goose
Flexible Configuration: Environment variables, CLI arguments, or MCP tool calls
Implementations
Platform | File | Requirements |
Linux/macOS |
| bash, jq |
Windows |
| PowerShell 5.1+, jq |
Both implementations provide identical functionality in a single script file each.
Installation
Prerequisites
jq - JSON processor (required for both Bash and PowerShell)
Linux:
apt-get install jq/yum install jq/apk add jqmacOS:
brew install jqWindows:
choco install jq/winget install jqlang.jq/scoop install jq
Bash (Linux/macOS) or PowerShell 5.1+ (Windows)
LLM CLI (for
ralph_loop_runand CLI mode):claude(Anthropic)openai(OpenAI)gemini(Google)copilot(GitHub Copilot) —npm install -g @github/copilotgoose(Goose) —go install github.com/aaif-goose/goose@latest
Setup
# Clone the repository
git clone https://github.com/sheldonrobinson/ralph-loop-mcp
cd ralph-loop-mcp
# Make executable (Linux/macOS)
chmod +x ralph-loop-runner.sh
# Configure in Claude Desktop (MCP mode):
{
mode):
{
"mcpServers": {
"ralph-loop": {
"command": "/path/to/ralph-loop-runner.sh",
"args": []
}
}
}Windows (PowerShell):
# Configure in claude_desktop_config.json:
{
"mcpServers": {
"ralph-loop": {
"command": "powershell.exe",
"args": ["-File", "C:\\path\\to\\ralph-loop-runner.ps1"]
}
}
}Usage
CLI Mode (Direct Execution)
Run the complete Ralph Loop directly from the command line:
# Linux/macOS - task as argument
./ralph-loop-runner.sh "Implement user authentication with JWT tokens"
# Linux/macOS - task from file
./ralph-loop-runner.sh ./task.md
# Windows
.\ralph-loop-runner.ps1 "Implement user authentication with JWT tokens"
.\ralph-loop-runner.ps1 .\task.mdWith environment variables:
RALPH_WORKER_MODEL=claude-3-5-sonnet \
RALPH_WORKER_PROVIDER=anthropic \
RALPH_REVIEWER_MODEL=gpt-4o \
RALPH_REVIEWER_PROVIDER=openai \
RALPH_MAX_ITERATIONS=5 \
./ralph-loop-runner.sh "Your task here"With command-line arguments:
./ralph-loop-runner.sh "Your task here" \
--worker-model claude-3-5-sonnet \
--worker-provider anthropic \
--worker-agent goose \
--reviewer-model gpt-4o \
--reviewer-provider openai \
--reviewer-agent goose \
--max-iterations 5 \
--work-guidelines ./recipes/ralph-work.yaml \
--review-guidelines ./recipes/ralph-review.yaml \
--session-id my-featureMCP Server Mode
When run without arguments, the script runs as an MCP server over stdio:
# Linux/macOS
./ralph-loop-runner.sh
# Windows
powershell.exe -File ralph-loop-runner.ps1Quick Start: Full Automated Loop (Recommended)
Use the ralph_loop_run tool to run the complete worker/reviewer loop automatically:
{
"method": "tools/call",
"params": {
"name": "ralph_loop_run",
"arguments": {
"sessionId": "my-feature",
"task": "Implement user authentication with JWT tokens",
"maxIterations": 5,
"workerModel": "claude-3-5-sonnet",
"workerProvider": "anthropic",
"workerAgent": "goose",
"reviewerModel": "gpt-4o",
"reviewerProvider": "openai",
"reviewerAgent": "goose",
"crossModelReviewEnforced": true,
"workGuidelines": "/path/to/ralph-work.yaml",
"reviewGuidelines": "/path/to/ralph-review.yaml"
}
}
}This tool handles:
Initialization - Creates session with worker/reviewer configuration
Orchestration - Loops through WORK → REVIEW phases
Execution - Calls LLM providers via CLI (claude, openai, gemini, copilot, goose)
State Management - Persists all state to
~/.goose/ralph/{sessionId}/
Manual Step-by-Step Workflow
For more control, use individual tools:
Initialize Session
{
"method": "tools/call",
"params": {
"name": "ralph_loop_initialize",
"arguments": {
"sessionId": "my-feature",
"task": "Implement user authentication with JWT tokens",
"maxIterations": 5,
"workerModel": "claude-3-5-sonnet",
"workerProvider": "anthropic",
"workerAgent": "goose",
"reviewerModel": "gpt-4o",
"reviewerProvider": "openai",
"reviewerAgent": "goose"
}
}
}Worker Phase - Get Task
{
"method": "tools/call",
"params": { "name": "ralph_loop_get_task", "arguments": { "sessionId": "my-feature" } }
}Worker Phase - Submit Work
{
"method": "tools/call",
"params": {
"name": "ralph_loop_submit_work",
"arguments": {
"sessionId": "my-feature",
"iteration": 1,
"work": "// Complete JWT implementation...",
"summary": "Implemented JWT auth with access/refresh tokens, middleware, and tests"
}
}
}Reviewer Phase - Get Work
{
"method": "tools/call",
"params": { "name": "ralph_loop_get_work", "arguments": { "sessionId": "my-feature" } }
}Reviewer Phase - Submit Review
{
"method": "tools/call",
"params": {
"name": "ralph_loop_submit_review",
"arguments": {
"sessionId": "my-feature",
"iteration": 1,
"decision": "REVISE",
"feedback": "Add token expiration handling and improve error messages"
}
}
}Next Iteration - Get Feedback
{
"method": "tools/call",
"params": { "name": "ralph_loop_get_feedback", "arguments": { "sessionId": "my-feature" } }
}Available Tools
Tool | Description |
| Initialize a new Ralph Loop session with a task |
| Get the current task for the worker phase |
| Submit work results and summary from worker |
| Get worker's submitted work for reviewer |
| Submit review decision (SHIP/REVISE) with feedback |
| Get reviewer feedback for next iteration |
| Get current session status (iteration, phase, state) |
| Get worker/reviewer model configuration |
| Reset/clear a session |
| Block current iteration with reason |
| Run complete automated loop (initialization → orchestration → execution → state management) |
State Management
State is stored in ~/.goose/ralph/{sessionId}/:
~/.goose/ralph/my-feature/
├── config.json # Worker/reviewer model configuration
├── task.json # Original task
├── work.json # Current work submission
├── review.json # Current review
├── work-complete.txt # Worker completion flag
├── review-result.txt # SHIP/REVISE decision
├── review-feedback.txt # Reviewer feedback
├── RALPH-BLOCKED.md # Blocking reason (if blocked)
└── iteration.txt # Current iteration numberCross-Model Review Setup
For true cross-model review, use different models for worker and reviewer:
Worker (e.g., Claude Sonnet):
Gets fresh context each iteration
Receives only task + feedback
Does the actual work
Reviewer (e.g., GPT-4, Gemini, or another Claude):
Reviews worker's output
Provides SHIP/REVISE decision
Gives specific feedback for revision
The crossModelReviewEnforced option (default: true) validates that worker and reviewer use different models/providers, warning if they are the same.
Blocking
If the worker gets stuck, they can block the iteration:
{
"method": "tools/call",
"params": {
"name": "ralph_loop_block",
"arguments": {
"sessionId": "my-feature",
"reason": "Cannot proceed - missing API credentials for external service"
}
}
}This creates RALPH-BLOCKED.md and stops the loop until resolved.
Configuration
Environment Variables
Variable | Description | Default |
| Worker model name | — |
| Worker provider (anthropic/openai/google/copilot/goose) | — |
| Worker agent (goose/claude/openai/gemini/copilot) | goose |
| Reviewer model name | — |
| Reviewer provider (anthropic/openai/google/copilot/goose) | — |
| Reviewer agent (goose/claude/openai/gemini/copilot) | goose |
| Max iterations (-1 for unlimited) | 10 |
| Path to work guidelines/recipe |
|
| Path to review guidelines/recipe |
|
| Base directory for recipes |
|
Command-Line Arguments (CLI Mode)
Argument | Description |
| Worker model name |
| Worker provider (anthropic/openai/google/copilot/goose) |
| Worker agent (goose/claude/openai/gemini/copilot) |
| Reviewer model name |
| Reviewer provider (anthropic/openai/google/copilot/goose) |
| Reviewer agent (goose/claude/openai/gemini/copilot) |
| Max iterations (-1 for unlimited) |
| Work guidelines/recipe file |
| Review guidelines/recipe file |
| Custom session ID |
Supported Providers
Provider | CLI Command | Notes |
Anthropic |
| Requires Anthropic API key |
OpenAI |
| Requires OpenAI API key |
| Requires Google API key | |
GitHub Copilot |
| Requires |
Goose |
| Uses Goose recipes for structured workflows |
API Reference
ralph_loop_initialize
{
sessionId?: string; // default: "default"
task: string; // required
maxIterations?: number; // default: 10, -1 = unlimited
workerModel?: string; // e.g., "claude-3-5-sonnet"
workerProvider?: string; // e.g., "anthropic"
workerAgent?: string; // e.g., "goose"
reviewerModel?: string; // e.g., "gpt-4o"
reviewerProvider?: string; // e.g., "openai"
reviewerAgent?: string; // e.g., "goose"
crossModelReviewEnforced?: boolean; // default: true
workGuidelines?: string; // path to work guidelines
reviewGuidelines?: string; // path to review guidelines
}ralph_loop_get_task
{ sessionId?: string; } // default: "default"ralph_loop_submit_work
{
sessionId?: string; // default: "default"
work: string; // required
summary: string; // required
iteration: number; // required, >= 1
}ralph_loop_get_work
{ sessionId?: string; } // default: "default"ralph_loop_submit_review
{
sessionId?: string; // default: "default"
decision: "SHIP" | "REVISE"; // required
feedback?: string; // required for REVISE
iteration: number; // required, >= 1
}ralph_loop_get_feedback
{ sessionId?: string; } // default: "default"ralph_loop_get_status
{ sessionId?: string; } // default: "default"ralph_loop_get_config
{ sessionId?: string; } // default: "default"ralph_loop_reset
{ sessionId?: string; } // default: "default"ralph_loop_block
{
sessionId?: string; // default: "default"
reason: string; // required
}ralph_loop_run
{
sessionId?: string; // default: "default"
task: string; // required
maxIterations?: number; // default: 10, -1 = unlimited
workerModel: string; // required
workerProvider: string; // required
workerAgent?: string; // default: "goose"
reviewerModel: string; // required
reviewerProvider: string; // required
reviewerAgent?: string; // default: "goose"
crossModelReviewEnforced?: boolean; // default: true
workGuidelines?: string; // path to work guidelines
reviewGuidelines?: string; // path to review guidelines
}License
MIT
Available Tools
10 toolsralph_loop_blockA
Block the current iteration with a reason (creates RALPH-BLOCKED.md). Worker uses this when stuck.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Reason for blocking | |
| sessionId | No | Session identifier | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool creates a file (RALPH-BLOCKED.md) and implies state mutation by blocking the iteration. With no annotations, this is helpful but incomplete; it doesn't explain whether the block is reversible, what happens to in-progress work, or any other 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose and key behavioral aspect (file creation). It is front-loaded with the action and resource, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters, no output schema, and no nested objects. The description covers the purpose, typical user, and a key effect. It is complete enough for a focused tool, though more details about blocking semantics would be ideal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description mentions 'reason' but doesn't add additional meaning (e.g., format, length, or examples) beyond the schema's description. Thus, baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('blocks the current iteration') and the specific resource (RALPH-BLOCKED.md file creation). It distinguishes itself from siblings like ralph_loop_submit_work or ralph_loop_get_status by being the only 'block' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Worker uses this when stuck,' which provides clear context for when to use. However, it does not mention when not to use (e.g., if the worker can proceed) or suggest alternatives like ralph_loop_get_feedback or ralph_loop_submit_work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_get_configB
Get the worker/reviewer model configuration for the session.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session identifier | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It states 'Get' indicating read-only, but does not describe side effects, permissions, or behavior on missing session. Minimal transparency for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the one-parameter, read-only nature, the description is nearly complete. It does not explicitly detail return values, but an agent can infer from 'config' and absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with 'sessionId' described as 'Session identifier'. Description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves 'worker/reviewer model configuration for the session', specifying a verb and resource, and distinguishes from siblings like ralph_loop_get_status or ralph_loop_get_work which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like ralph_loop_get_status. The description implies use for configuration retrieval but does not mention exclusions or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_get_feedbackB
Get reviewer feedback for the next worker iteration. Returns feedback if REVISE, or completion status if SHIP.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session identifier | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries the full burden. It mentions two return types but does not disclose side effects, whether it's read-only, authorization requirements, or default behavior for missing sessionId. Minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence that efficiently conveys the core purpose and key details. It is front-loaded with the verb and resource. Slightly short but no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description should explain return values more thoroughly. It mentions two outcomes but not their structure or format. Given the complexity of the tool in a multi-tool workflow, more context is needed for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description does not add any additional meaning to the parameter beyond its schema description ('Session identifier'). The tool description does not mention the parameter, so no extra value is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Get reviewer feedback' and specifies the context 'for the next worker iteration'. It distinguishes from sibling tools like ralph_loop_get_status by mentioning two possible outcomes (feedback or completion status), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage when needing feedback for the next iteration but does not explicitly state when to use this tool versus alternatives like ralph_loop_submit_review or other get tools. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_get_statusA
Get current status of the Ralph Loop session including iteration, phase, and state.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session identifier | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects (e.g., is it read-only?), auth requirements, rate limits, or what triggers state changes. It only lists what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no fluff, front-loaded with verb and resource. Very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema, no annotations), the description covers the basic purpose. However, it lacks usage guidance and behavioral details, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema for the single parameter sessionId, which already has a description and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb "Get", the resource "current status of the Ralph Loop session", and lists the included fields (iteration, phase, state). This distinguishes it from sibling tools like ralph_loop_get_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking session status but provides no explicit guidance on when to use versus siblings, no prerequisites, and no when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_get_taskC
Get the current task for the worker phase. Returns the task description.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session identifier | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states it returns a 'task description' without mentioning read-only nature, prerequisites, or behavior when no task exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy. However, could be slightly more structured (e.g., separate purpose and return info). Still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description only says 'Returns the task description' without detail. For a tool with no annotations or output schema, more context on return value and edge cases is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one parameter with description). Description adds no additional meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Identifies verb ('Get') and resource ('current task for the worker phase'), distinguishing it from siblings like ralph_loop_get_work or ralph_loop_get_status. Could be more specific about what constitutes a 'task' vs 'work'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., ralph_loop_get_work, ralph_loop_get_status). Does not mention context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_get_workB
Get the worker's submitted work for the reviewer phase. Returns work output and summary.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session identifier | default |
TDQS
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 only states that it 'Returns work output and summary' without mentioning side effects, authorization needs, or whether it is read-only. Additional context about what 'work output' entails is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that front-load the action and result. No unnecessary words, but the lack of structure (e.g., bullet points) is acceptable for such a short description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal given the tool's context (no output schema, no annotations). It does not explain the nature of 'work output and summary', nor does it provide details about the reviewer phase or how it relates to sibling tools. More context would be beneficial for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents the sessionId parameter with a description. The tool description does not add any additional meaning or context beyond what is in the schema, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'worker's submitted work', and the context 'for the reviewer phase'. It is specific and distinguishes from siblings like ralph_loop_submit_work and ralph_loop_submit_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage in the reviewer phase but does not provide explicit guidance on when to use this tool versus alternatives like ralph_loop_get_task or ralph_loop_get_feedback. No when-not-to-use or specific prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_initializeB
Initialize a new Ralph Loop session with a task. Starts the iterative worker/reviewer cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | The task description for the Ralph Loop to work on | |
| sessionId | No | Unique session identifier (optional, defaults to 'default') | default |
| workerModel | No | Model for the worker phase (e.g., 'claude-3-5-sonnet', 'gpt-4o') | |
| maxIterations | No | Maximum number of iterations (default: 10) | |
| reviewerModel | No | Model for the reviewer phase (should be different from worker for cross-model review) | |
| workerProvider | No | Provider for the worker phase (e.g., 'anthropic', 'openai') | |
| reviewerProvider | No | Provider for the reviewer phase (e.g., 'anthropic', 'openai', 'google') | |
| crossModelReviewEnforced | No | Enforce cross-model review (worker and reviewer must be different) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It does not mention side effects (e.g., overwriting an existing session with the same sessionId), resource usage, or any required permissions. The description is too sparse to inform the agent of potential impacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The first sentence immediately states the primary action, and the second adds context about the cycle. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, no output schema, and initiates a complex iterative process, the description is insufficient. It does not explain what the return value is, what triggers the next steps, or how the cycle works. The agent may not have enough context to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 100%, the baseline is 3. The description does not add any additional meaning to the parameters beyond what the schema already provides. It does not explain the roles of workerModel vs reviewerModel or how they affect behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool initializes a new Ralph Loop session with a task and starts the iterative worker/reviewer cycle. It uses a specific verb (initialize) and resource (session), distinguishing it from sibling tools that manage or query existing sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for starting a new session but does not explicitly state when to use it versus alternatives like ralph_loop_submit_review or ralph_loop_get_status. No guidance on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_resetA
Reset/clear a Ralph Loop session, removing all state files.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session identifier | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states 'removing all state files', indicating destructive behavior, but lacks details on irreversibility, permissions, or side effects on other sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no extraneous words. It is appropriately sized for the simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no output schema), the description covers the core action and effect. However, it omits whether the session must exist and possible error outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for 'sessionId'. The tool description adds no extra meaning beyond the schema's 'Session identifier', so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'reset/clear', the resource 'Ralph Loop session', and the effect 'removing all state files'. This distinguishes it from sibling tools like ralph_loop_initialize or ralph_loop_get_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives or any prerequisites. The description only states what it does without context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_submit_reviewB
Submit review decision (SHIP or REVISE) with feedback from the reviewer phase.
| Name | Required | Description | Default |
|---|---|---|---|
| decision | Yes | Review decision - SHIP to complete, REVISE to iterate again | |
| feedback | No | Feedback for the worker (required for REVISE, optional for SHIP) | |
| iteration | Yes | Current iteration number | |
| sessionId | No | Session identifier | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the action (submit review decision) and the parameters, but does not disclose behavioral traits such as side effects (e.g., state transitions), required permissions, or what happens after submission (e.g., if SHIP ends the loop).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core action and key details. Every word earns its place; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no output schema, and no annotations. The description explains the core purpose but lacks context on workflow integration (e.g., what happens after SHIP vs REVISE, how it fits with sibling tools). It is adequate but not fully complete for a non-trivial tool in a loop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema already documents each parameter. The description adds minimal extra meaning beyond restating 'SHIP' and 'REVISE'. Baseline of 3 is appropriate as it provides no additional semantic value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'submit' and the resource 'review decision'. It lists the two decision options (SHIP/REVISE) and feedback. However, it does not differentiate this tool from sibling tools like ralph_loop_submit_work, missing a chance to emphasize that this is for the reviewer phase specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage during the reviewer phase ('from the reviewer phase') but does not explicitly state when to use this tool versus alternatives, nor does it mention when not to use it. No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ralph_loop_submit_workA
Submit work results and summary from the worker phase. Transitions to review phase.
| Name | Required | Description | Default |
|---|---|---|---|
| work | Yes | The complete work output/results | |
| summary | Yes | Brief summary of what was done | |
| iteration | Yes | Current iteration number | |
| sessionId | No | Session identifier | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions state transition ('Transitions to review phase') but omits other behavioral traits like idempotency, side effects, or error conditions, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, no unnecessary words. Extremely concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description provides minimal context: it does not explain return values, error handling, or the exact nature of the state transition. Adequate for basic usage but incomplete for comprehensive understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no parameter-specific value beyond the schema definitions. Baseline score of 3 is appropriate as the schema handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (submit), resource (work results and summary), and context (from worker phase, transitions to review), effectively distinguishing it from sibling tools like ralph_loop_submit_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after the worker phase and before review, but provides no explicit guidance on when to use vs. alternatives or when not to use it. Sibling differentiation is left to context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v1.0.0- First observed
ralph_loop_block - First observed
ralph_loop_get_config - First observed
ralph_loop_get_feedback - First observed
ralph_loop_get_status - First observed
ralph_loop_get_task - First observed
ralph_loop_get_work - First observed
ralph_loop_initialize - First observed
ralph_loop_reset - First observed
ralph_loop_submit_review - First observed
ralph_loop_submit_work
TDQS
Each tool has a distinct purpose: initialization, work submission, review feedback, status, etc. No two tools have overlapping functionality.
All tools follow a consistent verb_noun pattern with the ralph_loop_ prefix in snake_case, making them predictable and logical.
With 10 tools, the set covers the full worker/reviewer cycle without being bloated or insufficient.
Covers all major phases: initialize, work, review, block, reset, and status. Minor gap: no explicit tool to list all feedback history, but core workflow is complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP Server for an Agent Task Marketplace
MCP server for generating rough-draft project plans from natural-language prompts.
MCP server for Product Management
Remote MCP server for XDaLa workflow preparation on XGR.Network.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that turns independent AI agents into a coordinated engineering team with shared task board, context, review loop, and enforced plan-implement-review-iterate workflow.24MIT
- AlicenseNot gradedqualityCmaintenanceMCP servers for real-time development monitoring and interactive pair programming.1MIT
- AlicenseAqualityFmaintenanceA code review tool server based on Model Context Protocol (MCP) providing multi-dimensional code review and scoring.417MIT

convergeqa-mcpofficial
AlicenseBqualityBmaintenanceMCP servers for multi-model document review with critique/iterate and compare/due-diligence tools, using public verification receipts.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sheldonrobinson/ralph-loop-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server