Skip to main content
Glama
# macOS / Linux / WSL 2
curl -fsSL https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.sh | OUROBOROS_INSTALL_REF=readme-hero bash
# Windows (PowerShell) — no Python needed; installs Git and uv for you
irm https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.ps1 | iex

Turn a vague idea into a verified, working codebase -- across Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Kiro, Copilot, Pi, OMP, Zcode, Goose, GJC, Antigravity, and Grok.

Ouroboros is an Agent OS for AI coding: a local-first runtime layer that turns non-deterministic agent work into a replayable, observable, policy-bound execution contract. It replaces ad-hoc prompting with a structured specification-first workflow: interview, crystallize, execute, evaluate, evolve.


The Ouroboros Agent OS Stack

Like any OS, Ouroboros is split into a stable OS layer of primitives, an application layer of domain workflows, and a shell that humans actually sit in front of. Three repos, one stack:

Layer

Repo

Role

What it gives you

Shell (terminal client)

Ouro-labs/ourocode

Native terminal UI for running ooo workflows across Claude / Codex / Gemini CLIs in one session

TUI, wonderTool decision pickers, MCP pane state, command discovery

Apps (domain workflows)

Ouro-labs/ouroboros-plugins

UserLevel plugin contract — composes core primitives into installable domain programs (PR ops, Jira sync, incidents, releases)

Plugin manifest, scoped permissions, audit/provenance, reference plugins

OS (this repo)

Q00/ouroboros

Agent OS core — Seed, Ledger, Runtime, MCP, safety boundaries

ooo commands, spec-first workflow engine, multi-runtime adapter

How they connect:

  ourocode  ──►  ooo / ouroboros-plugins  ──►  ouroboros core (Seed · Ledger · MCP · Runtime)
   shell             user-level apps                        kernel
  • The kernel (ouroboros) owns the contract: every action becomes a Seed-bound, ledger-recorded, replayable event — regardless of which LLM executes it.

  • Plugins (ouroboros-plugins) declare scoped capabilities against that contract, so domain workflows (review a PR, triage a Linear ticket, run a release) stay auditable and policy-bound instead of being one-off prompts.

  • Ourocode is the terminal shell: it surfaces MCP state, interview questions, and wonderTool decisions as first-class TUI elements, so you can drive the OS without leaving the keyboard or switching between CLIs.

Use ouroboros alone with any supported CLI, layer plugins on for domain workflows, or install ourocode when you want a unified terminal cockpit.

Disclaimer. The Ouroboros project and community are not affiliated with any cryptocurrency, token, memecoin, or trading community — including, but not limited to, any "ouroboros" tickers on pump.fun or other launchpads. This is an open-source developer tool. We do not issue, endorse, or hold any coins. Any token claiming association with this project is unauthorized.

Naming note. A separate, unaffiliated open-source project also uses the name "Ouroboros" — Anton Razzhigaev's self-modifying, autonomous-memory agent at github.com/razzant/ouroboros. No shared code, no relationship. This project locks a specification before executing rather than rewriting its own architecture; if you're looking for the latter, that's the other one.


Related MCP server: MIDAS

Why Ouroboros?

Most AI coding fails at the input, not the output. The bottleneck is not AI capability -- it is human clarity.

Problem

What Happens

Ouroboros Fix

Vague prompts

AI guesses, you rework

Socratic interview exposes hidden assumptions

No spec

Architecture drifts mid-build

Immutable seed spec locks intent before code

Manual QA

"Looks good" is not verification

3-stage automated evaluation gate


Quick Start

Install — one command, everything auto-detected:

# macOS / Linux / WSL 2
curl -fsSL https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.sh | OUROBOROS_INSTALL_REF=readme bash
# Windows (PowerShell 5.1+ or pwsh 7+) — nothing to install first
irm https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.ps1 | iex

The Windows installer installs Git and uv through winget when they are missing, lets uv download its own Python, then installs ouroboros-ai and wires the host it finds. Native Windows is experimental and Codex CLI needs WSL 2; see platform support.

First command — open your AI coding agent and run these in order:

> ooo setup
> ooo interview "I want to build a task management CLI"

ooo setup is a one-time configuration step. ooo interview is the first workflow command and starts the Socratic interview. After setup, Codex follows its currently selected model and Claude Code starts with its recommended model settings. Choose Directly configure models only when you want to pin a stage to a specific model; it opens the local settings screen in your browser. You can return to those settings any time with ooo config.

Or from a plain terminal, without an agent host:

$ ouroboros init start --orchestrator "I want to build a task management CLI tool"

Works with Claude Code, Codex CLI, GitHub Copilot CLI, OpenCode, Hermes, Gemini, Kiro CLI, Pi CLI, OMP CLI, Zcode, Goose, GJC, Antigravity CLI, and Grok Build CLI. The installer detects available runtimes and registers the MCP server where the host supports it. For explicit selection, run ouroboros setup --runtime <opencode|kiro|copilot|gemini|pi|omp|zcode|goose|gjc|antigravity|grok> after installation. Copilot live-discovers its subscription catalog via the GitHub Copilot models API; Kiro's settings picker queries the authenticated CLI with kiro-cli chat --listmodels -f json, so account and enterprise allow-list changes appear without a hardcoded model table.

DeepSeek support. Ouroboros speaks DeepSeek two ways. Point the interview/Seed/QA pipeline at DeepSeek's own models with --llm-backend dsh (ouroboros mcp serve --runtime claude-cli --llm-backend dsh, or OUROBOROS_LLM_BACKEND=dsh) — this drives DeepSeek Harness's ACP server under the hood. Or go the other way: install the dsh-ouroboros plugin (dsh plugin --profile <your-profile> add "github:Q00/ouroboros#main&path:integrations/dsh-plugin") and type ooo interview / ooo auto directly in the DeepSeek Harness chat — the same ouroboros_interview / ouroboros_auto tools run natively inside it, Socratic questions and all. Both directions, including what the dsh backend needs beyond the one variable, are in the DeepSeek Harness guide.

Needs codex on your PATH and uvx on the host (the plugin's MCP descriptor launches the server with it). Install uv with pipx install uv, pip install --user uv, or brew install uv.

codex plugin marketplace add Q00/ouroboros
codex plugin add ouroboros@ouroboros

Start a new Codex session, then run these commands in order:

ooo setup
ooo interview "Build a task management CLI"

ooo setup is the one-time runtime preparation. Once ready, Ouroboros follows Codex's current default model; choose Directly configure models only when you want to pin a specific model for a pipeline stage.

pipx install 'ouroboros-ai[mcp]'       # or: uv tool install 'ouroboros-ai[mcp]'
ouroboros setup --runtime kiro         # detects Kiro CLI, registers MCP server, and
                                        # writes OUROBOROS_RUNTIME=kiro into
                                        # ~/.kiro/settings/mcp.json (the trusted,
                                        # setup-managed location -- a project .env
                                        # is untrusted input and this key is ignored there)

Then use ooo commands inside a Kiro CLI session.

gh auth login                                # one-time GitHub auth (used for live model discovery)
pipx install 'ouroboros-ai[mcp]'             # or: uv tool install 'ouroboros-ai[mcp]'
ouroboros setup --runtime copilot            # discovers models live, picks a default,
                                             # registers MCP server in ~/.copilot/mcp-config.json

Restart your Copilot CLI session, then use ooo commands inside it. Model-ID mapping is catalog-gated: the current direct and OpenRouter Opus defaults resolve to Copilot's published claude-opus-5, while legacy Anthropic versions convert only their trailing numeric separator and only when the discovered catalog contains the exact candidate. Unknown IDs remain unchanged so Copilot reports an explicit unavailable-model error instead of silently selecting a different model. Leave role models unset so setup writes a discovered ID, or set a Copilot-valid ID explicitly. See the Copilot runtime guide.

See the GitHub Copilot CLI runtime guide for full details.

Claude Code plugin only (no Python package or global Python to install; the host needs uv, which provides both uvx for the MCP server and the skills' Python >= 3.12 fallback):

claude plugin marketplace add Q00/ouroboros && claude plugin install ouroboros@ouroboros

Then run ooo setup inside a Claude Code session.

pip / uv / pipx:

pip install 'ouroboros-ai[mcp,tui]' && ouroboros setup --runtime claude-cli  # recommended MCP v2 default
pip install 'ouroboros-ai[claude]'      # Claude Agent SDK profile (MCP 1.x, isolated)
pip install 'ouroboros-ai[claude-cli]'  # dependency-free Claude CLI worker
pip install 'ouroboros-ai[claude-sdk]'  # explicit alias for the Claude SDK profile
pip install 'ouroboros-ai[litellm]'     # + LiteLLM multi-provider; Python 3.12-3.13
pip install 'ouroboros-ai[mcp]'         # MCP v2 server/client without the GUI
pip install 'ouroboros-ai[tui]'         # settings GUI only
pip install 'ouroboros-ai[all]'         # MCP 1.x app bundle; excludes MCP 2 by design
ouroboros setup                         # configure runtime

Core and non-LiteLLM installs support Python 3.12-3.14. LiteLLM-bearing installs ([litellm], [all], and source --extra all) support Python 3.12-3.13; use Python 3.13 for current examples. See Platform Support.

The recommended standalone installation is ouroboros-ai[mcp,tui] followed by an explicit MCP v2-compatible runtime selection. The example uses --runtime claude-cli; substitute another compatible runtime such as codex, opencode, hermes, gemini, goose, kiro, copilot, pi, or gjc. Use [claude] and [claude-sdk] only in isolated MCP 1.x environments.

pip install 'ouroboros-ai[mcp]' is valid for embedding the MCP client/server library in an already isolated Python environment, but host registration requires uvx --isolated --python '>=3.12' or pipx. Use pipx install 'ouroboros-ai[mcp]' or uv tool install 'ouroboros-ai[mcp]' before ouroboros setup --runtime <claude-cli|codex|opencode|hermes|gemini|goose|kiro|copilot|pi|gjc>; setup exits without changing runtime configuration when neither isolated launcher is available.

Legacy compatibility: ouroboros-ai[dashboard] is still accepted as a compatibility alias/no-op; it does not install dashboard runtime payload. ouroboros-ai[all] includes that no-op alias only for compatibility.

Homebrew (macOS/Linux):

brew tap q00/tap
brew install ouroboros-ai
ouroboros setup                         # configure runtime

Self-hosted tap, not yet in homebrew-core. Installs the same package published to PyPI.

See runtime guides: Claude Code · Codex CLI · Hermes · OpenCode · Kiro CLI · Gemini CLI · GitHub Copilot CLI · Zcode · Pi JSON mode · OMP (Oh My Pi) · Goose · GJC · Antigravity CLI · Grok Build CLI

ouroboros uninstall

Removes all configuration, MCP registration, and data. See UNINSTALL.md for details.

Python >= 3.12 required. LiteLLM-bearing profiles support Python 3.12-3.13. See Platform Support and pyproject.toml.

Installing as an MCP server: use 0.51.1 or later. Earlier versions can fail at startup with Failed to reconnect to plugin:ouroboros:ouroboros: -32000 when an existing environment shadows the [mcp] profile (#2012). This matters if you install through a downstream package rather than PyPI, since those can lag.


What You Get

After one loop of the Ouroboros cycle, a vague idea becomes a verified codebase:

Step

Before

After

Interview

"Build me a task CLI"

12 hidden assumptions exposed, ambiguity scored to 0.19

Seed

No spec

Immutable specification with acceptance criteria, ontology, constraints

Evaluate

Manual review

3-stage gate: Mechanical (free) -> Semantic -> Multi-Model Consensus

interview  ->  Socratic questioning exposed 12 hidden assumptions
seed       ->  Crystallized answers into an immutable spec (Ambiguity: 0.15)
run        ->  Executed via Double Diamond decomposition
evaluate   ->  3-stage verification: Mechanical -> Semantic -> Consensus

Use ooo <cmd> inside your AI coding agent session, or ouroboros init start, ouroboros run seed.yaml, etc. from the terminal.

The serpent completed one loop. Each loop, it knows more than the last.


How It Compares

AI coding tools are powerful -- but they solve the wrong problem when the input is unclear.

Vanilla AI Coding

Ouroboros

Vague prompt

AI guesses intent, builds on assumptions

Socratic interview forces clarity before code

Spec validation

No spec -- architecture drifts mid-build

Immutable seed spec locks intent; ambiguity gate (<= 0.2) blocks premature code without explicit force

Evaluation

"Looks good" / manual QA

3-stage automated gate: Mechanical -> Semantic -> Multi-Model Consensus

Rework rate

High -- wrong assumptions surface late

Low -- assumptions surface in the interview, not in the PR review


The Loop

The ouroboros -- a serpent devouring its own tail -- is not decoration. It IS the architecture:

    Interview -> Seed -> Execute -> Evaluate
        ^                           |
        +---- Evolutionary Loop ----+

Each cycle does not repeat -- it evolves. The output of evaluation feeds back as input for the next generation, until the system truly knows what it is building.

Phase

What Happens

Interview

Socratic questioning exposes hidden assumptions

Seed

Answers crystallize into an immutable specification

Execute

Double Diamond: Discover -> Define -> Design -> Deliver

Evaluate

3-stage gate: Mechanical ($0) -> Semantic -> Multi-Model Consensus

Evolve

Wonder ("What do we still not know?") -> Reflect -> next generation

"This is where the Ouroboros eats its tail: the output of evaluation becomes the input for the next generation's seed specification." -- reflect.py

Convergence is reached when ontology similarity >= 0.95 -- when the system has questioned itself into clarity.

Ralph: The Loop That Never Stops

ooo ralph runs the evolutionary loop persistently -- across session boundaries -- until convergence is reached. Each step is stateless: the EventStore reconstructs the full lineage, so even if your machine restarts, the serpent picks up where it left off.

Ralph Cycle 1: evolve_step(lineage, seed) -> Gen 1 -> action=CONTINUE
Ralph Cycle 2: evolve_step(lineage)       -> Gen 2 -> action=CONTINUE
Ralph Cycle 3: evolve_step(lineage)       -> Gen 3 -> action=CONVERGED
                                                +-- Ralph stops.
                                                    The ontology has stabilized.

Commands

Inside AI coding agent sessions, use ooo <cmd> skills. From the terminal, use the ouroboros CLI.

Skill (ooo)

CLI equivalent

What It Does

ooo setup

ouroboros setup

Register runtime and configure project (one-time)

ooo interview

ouroboros init start

Socratic questioning -- expose hidden assumptions

ooo auto

ouroboros auto

Goal → A-grade Seed → execution handoff with bounded loops

ooo seed

(generated by interview)

Crystallize into immutable spec

ooo run

ouroboros run seed.yaml

Execute via Double Diamond decomposition

ooo evaluate

(via MCP)

3-stage verification gate

ooo evolve

(via MCP)

Evolutionary loop until ontology converges

ooo unstuck

(via MCP)

5 lateral thinking personas when you are stuck

ooo status

ouroboros status executions / ouroboros status execution <id>

Session tracking + (MCP-only) drift detection

ooo resume-session

ouroboros resume

List in-flight sessions and re-attach commands

ooo cancel

ouroboros cancel execution [<id>|--all]

Cancel stuck or orphaned executions

ooo ralph

(via MCP)

Persistent loop until verified

ooo tutorial

(interactive)

Interactive hands-on learning

ooo help

ouroboros --help

Full reference

ooo pm

(via MCP)

PM-focused interview + PRD generation

ooo qa

(via skill)

General-purpose QA verdict for any artifact

ooo update

ouroboros update

Check for updates + upgrade to latest

ooo brownfield

(via skill)

Scan and manage brownfield repo/worktree defaults

ooo publish

(skill/runtime surface; uses gh CLI)

Publish a Seed as GitHub Epic/Task issues for team workflows

Not all skills have direct CLI equivalents. Some (evaluate, evolve, unstuck, ralph, publish) are available through agent skills, runtime rules, or MCP tools rather than a direct ouroboros <subcommand> shell command. /resume is reserved for Claude Code's built-in session picker; use ooo resume-session for Ouroboros in-flight sessions. Claude Code also reserves /run, /status, /help, and /config. The safe direct skill forms are /ouroboros:ouroboros-run, /ouroboros:ouroboros-status, /ouroboros:ouroboros-help, and /ouroboros:ouroboros-config; the familiar ooo run, ooo status, ooo help, and ooo config phrases remain supported.

See the CLI reference for full details.


The Nine Minds

Nine highlighted agents below, with 12 more specialized agents available (21 total). All loaded on-demand, never preloaded:

Agent

Role

Core Question

Socratic Interviewer

Questions-only. Never builds.

"What are you assuming?"

Ontologist

Finds essence, not symptoms

"What IS this, really?"

Seed Architect

Crystallizes specs from dialogue

"Is this complete and unambiguous?"

Evaluator

3-stage verification

"Did we build the right thing?"

Contrarian

Challenges every assumption

"What if the opposite were true?"

Hacker

Finds unconventional paths

"What constraints are actually real?"

Simplifier

Removes complexity

"What's the simplest thing that could work?"

Researcher

Stops coding, starts investigating

"What evidence do we actually have?"

Architect

Identifies structural causes

"If we started over, would we build it this way?"


Under the Hood

src/ouroboros/
+-- bigbang/        Interview, ambiguity scoring, brownfield explorer
+-- routing/        PAL Router -- 3-tier cost optimization (1x / 10x / 30x)
+-- execution/      (deprecated — logic moved to orchestrator/ and mcp/tools/)
+-- evaluation/     Mechanical -> Semantic -> Multi-Model Consensus
+-- evolution/      Wonder / Reflect cycle, convergence detection
+-- resilience/     4-pattern stagnation detection, 5 lateral personas
+-- observability/  3-component drift measurement, auto-retrospective
+-- persistence/    Event sourcing (SQLAlchemy + aiosqlite), checkpoints
+-- orchestrator/   Runtime abstraction layer (Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Kiro, Copilot, Pi, OMP, GJC, Goose, Antigravity, Grok, Zcode)
+-- core/           Types, errors, seed, ontology, security
+-- providers/      LiteLLM adapter (100+ models)
+-- mcp/            MCP client/server integration
+-- plugin/         Plugin system (skill/agent auto-discovery)
+-- tui/            Terminal UI dashboard
+-- cli/            Typer-based CLI

Key internals:

  • PAL Router -- Frugal (1x) -> Standard (10x) -> Frontier (30x) with auto-escalation on failure, auto-downgrade on success

  • Drift -- Goal (50%) + Constraint (30%) + Ontology (20%) weighted measurement, threshold <= 0.3

  • Brownfield -- Auto-detects config files across multiple language ecosystems

  • Evolution -- Up to 30 generations, convergence at ontology similarity >= 0.95

  • Stagnation -- Detects spinning, oscillation, no-drift, and diminishing returns patterns

  • Agent OS runtime -- Replayable execution contract across capability discovery, policy, directives, event journal, and agent processes

  • Runtime backends -- Pluggable abstraction layer (orchestrator.runtime_backend config) with first-class support for Claude Code, Codex CLI, OpenCode, Hermes, Gemini, Goose, Kiro, Copilot, Pi, and OMP; same workflow spec, different execution engines

See Architecture for the full design document.


From Wonder to Ontology

Wonder -> "How should I live?" -> "What IS 'live'?" -> Ontology -- Socrates

Every great question leads to a deeper question -- and that deeper question is always ontological: not "how do I do this?" but "what IS this, really?"

   Wonder                          Ontology
"What do I want?"    ->    "What IS the thing I want?"
"Build a task CLI"   ->    "What IS a task? What IS priority?"
"Fix the auth bug"   ->    "Is this the root cause, or a symptom?"

This is not abstraction for its own sake. When you answer "What IS a task?" -- deletable or archivable? solo or team? -- you eliminate an entire class of rework. The ontological question is the most practical question.

Ouroboros embeds this into its architecture through the Double Diamond:

    * Wonder          * Design
   /  (diverge)      /  (diverge)
  /    explore      /    create
 /                 /
* ------------ * ------------ *
 \                 \
  \    define       \    deliver
   \  (converge)     \  (converge)
    * Ontology        * Evaluation

The first diamond is Socratic: diverge into questions, converge into ontological clarity. The second diamond is pragmatic: diverge into design options, converge into verified delivery. Each diamond requires the one before it -- you cannot design what you have not understood.

The Interview does not end when you feel ready -- it ends when the math says you are ready. Ouroboros quantifies ambiguity as the inverse of weighted clarity:

Ambiguity = 1 - Sum(clarity_i * weight_i)

Each dimension is scored 0.0-1.0 by the LLM (temperature 0.1 for reproducibility), then weighted:

Dimension

Greenfield

Brownfield

Goal Clarity -- Is the goal specific?

40%

35%

Constraint Clarity -- Are limitations defined?

30%

25%

Success Criteria -- Are outcomes measurable?

30%

25%

Context Clarity -- Is the existing codebase understood?

--

15%

Threshold: Ambiguity <= 0.2. A score above that blocks Seed generation. Passing force explicitly is what gets past it, and the CLI puts that choice on screen next to continue and cancel. The gate is a default worth arguing with, not a lock.

Example (Greenfield):

  Goal: 0.9 * 0.4  = 0.36
  Constraint: 0.8 * 0.3  = 0.24
  Success: 0.7 * 0.3  = 0.21
                        ------
  Clarity             = 0.81
  Ambiguity = 1 - 0.81 = 0.19  <= 0.2 -> Ready for Seed

Why 0.2? Because at 80% weighted clarity, the remaining unknowns are small enough that code-level decisions can resolve them. Above that threshold, you are still guessing at architecture.

The evolutionary loop does not run forever. It stops when consecutive generations produce ontologically identical schemas. Similarity is measured as a weighted comparison of schema fields:

Similarity = 0.5 * name_overlap + 0.3 * type_match + 0.2 * exact_match

Component

Weight

What It Measures

Name overlap

50%

Do the same field names exist in both generations?

Type match

30%

Do shared fields have the same types?

Exact match

20%

Are name, type, AND description all identical?

Threshold: Similarity >= 0.95 -- the loop converges and stops evolving.

But raw similarity is not the only signal. The system also detects pathological patterns:

Signal

Condition

What It Means

Stagnation

Similarity >= 0.95 for 3 consecutive generations

Ontology has stabilized

Oscillation

Gen N ~ Gen N-2 (period-2 cycle)

Stuck bouncing between two designs

Repetitive feedback

>= 70% question overlap across 3 generations

Wonder is asking the same things

Hard cap

30 generations reached

Safety valve

Gen 1: {Task, Priority, Status}
Gen 2: {Task, Priority, Status, DueDate}     -> similarity 0.78 -> CONTINUE
Gen 3: {Task, Priority, Status, DueDate}     -> similarity 1.00 -> CONVERGED

Two mathematical gates, one philosophy: do not build until you are clear (Ambiguity <= 0.2), do not stop evolving until you are stable (Similarity >= 0.95).


Contributing

git clone https://github.com/Q00/ouroboros
cd ouroboros
uv sync --python 3.13 --all-groups
uv run --python 3.13 --no-sync pytest

Issues · Discussions · Contributing Guide


Sponsors

Ouroboros is MIT-licensed and built in the open. If it saves you rework — or you want the loop to keep evolving — consider sponsoring. Sponsorship directly funds maintenance, new runtime integrations, and sponsor-only deep-dive content.

Every sponsor keeps the serpent evolving. Thank you.


Activity

These numbers are generated from GitHub data and refreshed automatically; caching may delay updates.


Available Tools

34 tools
ouroboros_ac_dashboardA

Display per-AC pass/fail compliance dashboard across generations. Shows which acceptance criteria passed, failed, or are flaky. Modes: 'summary' (default), 'full' (AC x Gen matrix), 'ac' (single AC history).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDisplay mode: 'summary' (default), 'full', or 'ac'
ac_indexNoAC index (1-based) for 'ac' mode. Required when mode='ac'.
lineage_idYesID of the lineage to display

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It does disclose the behavioral output ('Shows which acceptance criteria passed, failed, or are flaky') and the display modes, which implies a read-only dashboard. However, it does not explicitly state that this is a non-mutating operation, nor does it mention any prerequisites or side effects, which are relevant for a tool in this family.

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 extremely concise, with three short sentences that each carry critical information: what the tool does, what it shows, and the available modes. There is no filler, and the most important verb-resource pair is front-loaded. This is efficient and well-structured.

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 tool's moderate complexity (3 parameters, no output schema, no annotations), the description covers the essential purpose and mode behaviors. It does not explain the return format or the dependency of 'ac_index' on 'mode', but the schema covers the latter. It is complete enough for an agent to understand when and how to invoke it, though a bit more detail on output could improve it.

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

Parameters4/5

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

The input schema already documents all three parameters with 100% coverage, giving a baseline of 3. The description adds meaningful context by explaining the 'full' mode as 'AC x Gen matrix' and 'ac' mode as 'single AC history', which enriches the semantics of the 'mode' parameter beyond the schema's brief description. This added value justifies a score above baseline.

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's purpose: 'Display per-AC pass/fail compliance dashboard across generations.' It specifies the verb 'Display' and the resource (AC compliance dashboard), and includes what it shows (passed, failed, flaky). However, it does not explicitly distinguish this tool from its sibling 'ouroboros_ac_tree_hud', so it lacks a direct differentiation.

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 description implies when to use the tool (when needing a compliance dashboard) and provides mode guidance ('summary' default, 'full', 'ac'), but it does not explain when to use this tool versus alternative sibling tools such as 'ouroboros_ac_tree_hud' or 'ouroboros_lineage_status'. There are no explicit exclusions or alternative recommendations, so usage context is implied rather than stated.

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

ouroboros_ac_tree_hudB

Return a render-ready markdown snapshot of the live acceptance-criteria tree for an Ouroboros session.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoVerbosity: 'tree' (default) for the full AC tree, 'summary' for a short monitor, or 'compact' for one-line polling.tree
cursorNoPrevious EventStore row ID cursor.
max_nodesNoMaximum tree nodes to render when view='tree'.
session_idYesSession ID to inspect.

TDQS

B3.4/5.0
Behavior3/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 communicates that the tool is a live, read-only snapshot and indicates the output format, which is useful. However, it does not disclose cursor-advance behavior, potential side effects, or failure modes, leaving some ambiguity around the 'cursor' parameter.

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 a single, front-loaded sentence with no redundant words. Every word earns its place, and it conveys the essential purpose and output format without padding.

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?

For a simple read-only snapshot tool, the description combined with the schema provides adequate completeness. The return value is described as a markdown snapshot, and all parameters are documented. However, the lack of any mention of error conditions or cursor semantics slightly limits completeness given the absence of an output schema.

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%, and the input schema already explains all four parameters including their defaults and meanings. The tool description itself adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.

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 returns a render-ready markdown snapshot of the live acceptance-criteria tree for a session, using a specific verb and resource. It is distinct from generic status tools, though it does not explicitly differentiate itself from the sibling tool 'ouroboros_ac_dashboard'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no context for appropriate scenarios, and no exclusions. Usage is only implied by the verb 'Return', leaving the agent to infer when this snapshot is preferred over dashboard or status tools.

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

ouroboros_autoA

Run full-quality ooo auto: automatically interview, generate an A-grade Seed, and start execution only after the A-grade gate passes. All loops are bounded.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory
goalNoGoal/task for ooo auto
domainNoOptional domain profile name (for example, coding)
resumeNoAuto session id to resume
skip_runNoStop after A-grade Seed
attach_jobNoAttach an externally verified job id to an unknown run handoff
attach_sourceNoSource label for an attached run handle
commit_policyNoCheckpoint commit policy: ac_checkpoint, final_only, or none
reconcile_runNoTry to reconcile an unknown run handoff without starting a duplicate run
attach_sessionNoAttach an externally verified run session id to an unknown run handoff
efficiency_modeNoExecution efficiency policy: adaptive may use lower-cost child tiers with recovery escalation; quality_first keeps child ACs at the parent starting tier. Default: adaptive.
worktree_policyNoWorktree isolation policy: auto, always, current, or none
attach_executionNoAttach an externally verified execution id to an unknown run handoff
complete_productNoWhen true, chain RUN → RALPH_HANDOFF after a successful run handoff so a single ouroboros_auto invocation iterates Ralph until QA passes, convergence, or a budget bound trips. Defaults to false (opt-in).
reconcile_sourceNoSource label for run handoff reconciliation
user_preferencesNoCaller-supplied user preferences keyed by ledger section name (e.g. runtime_context, constraints, non_goals). The Driver tags matching answers with [from-auto][user_preference] in the ledger. Keys must be valid ledger section names; values must be non-empty strings or non-empty lists of strings/numbers. On resume, null/empty values clear the persisted preference for that section.
max_repair_roundsNoMax repair rounds
frugality_assuranceNoFrugality assurance: off, observe, or explicitly authorized strict. Defaults from efficiency_mode and is immutable on resume.
max_interview_roundsNoMax interview rounds
pipeline_timeout_secondsNoTop-level pipeline deadline in seconds. Defaults to 7200s for new sessions. Range: 60-86400. Cannot be changed on resume; the deadline is preserved across process restarts.

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description adds some behavioral context: the A-grade gate blocks execution until quality is met, and all loops are bounded. However, it does not detail side effects, runtime expectations, or interaction with resume/attach options, leaving a gap for such a complex tool.

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 two sentences, front-loaded with the main purpose and followed by a key safety guarantee. It is appropriately concise, leaving parameter details to the schema.

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 tool's complexity (20 parameters, nested options) and no output schema, the description gives the essential pipeline overview but omits broader context like resume/attach/reconciliation workflows. However, the schema covers parameter details thoroughly, so the combination is reasonably complete.

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 parameters are well-documented in the schema. The description itself does not elaborate on any parameters, providing no additional meaning beyond the schema.

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 with a specific verb ('Run') and names the resource/pipeline (full-quality ooo auto). It enumerates the key steps (interview, generate A-grade Seed, execute after gate) which distinguishes it from simpler siblings like execute_seed or start_auto.

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 conveys a clear context: this is the complete automatic pipeline with a quality gate. It does not explicitly mention alternatives or exclusions, but the workflow description implies when to use it (for full auto runs).

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

ouroboros_brownfieldA

Manage brownfield repository registrations. Scan home directory for repos, register/query repos, or set the default brownfield context for PM interviews.

ParametersJSON Schema
NameRequiredDescriptionDefault
descNoOne-line description of the repository. Used with 'register'. Optional.
nameNoHuman-readable name for the repository. Used with 'register'. Defaults to directory name.
pathNoAbsolute filesystem path of the repository. Required for 'register' and 'set_default' actions.
limitNoMaximum number of rows to return for 'query' pagination. Omit for no limit.
actionNoAction to perform: 'scan' to discover repos from ~/, 'register' to add a single repo, 'query' to list all repos or get default, 'set_default' to toggle a repo's default flag (supports multiple defaults; does NOT clear others). Auto-detected from parameters when omitted.
offsetNoNumber of rows to skip for 'query' pagination. Defaults to 0.
indicesNoComma-separated repo numbers from the scan list (e.g. '6,18,19'). Used with 'set_defaults' action to replace all defaults at once.
scan_rootNoExisting directory to walk for the 'scan' action. Defaults to the current user's home directory.
is_defaultNoFor 'set_default' action: set to true to mark as default, false to unmark. Defaults to true.
default_onlyNoWhen true with 'query' action, return only the default repo instead of the full list. Defaults to false.

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It only lists high-level actions without disclosing side effects, persistence behavior, or nuances like the fact that 'set_default' does not clear other defaults. This is a significant gap for a management tool that modifies state.

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 a single, concise sentence that front-loads the tool's purpose and lists the primary actions. Every word earns its place, and it is well-structured for quick comprehension.

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?

For a tool with 10 parameters and multiple actions, the description covers scan, register, query, and set_default, but omits the 'set_defaults' action and provides no detail on behavior or edge cases. However, the schema covers parameters thoroughly, and there is no output schema requiring explanation. Adequate but with room for more context.

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?

The input schema covers 100% of the parameters with detailed descriptions, so the baseline is 3. The tool description adds no additional parameter semantics beyond what the schema already provides, but given full schema coverage, this is acceptable.

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 manages brownfield repository registrations, listing specific operations: scanning home directory, registering/querying repos, and setting default context. This distinguishes it from sibling tools which focus on jobs, interviews, and execution, not repository management.

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 for usage: scanning the home directory, registering/querying repos, and setting default context for PM interviews. It does not explicitly mention alternatives or when not to use, but the context is sufficiently clear for an agent to decide.

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

ouroboros_cancel_executionA

Cancel a running or paused Ouroboros execution. Validates that the execution exists and is not already in a terminal state (completed, failed, cancelled) before cancelling.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoReason for cancellationCancelled by user
execution_idYesThe execution/session ID to cancel

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses validation behavior (checks existence and terminal state) but does not explain side effects, such as whether cancellation is irreversible, what state the execution transitions to, or any required permissions.

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 two sentences, front-loaded with the primary purpose, and every phrase adds value without redundancy.

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?

The description is adequate for a simple cancellation tool but lacks important context: no mention of irreversibility, relationship to 'ouroboros_cancel_job', or expected outcome. Without an output schema or annotations, these gaps are notable.

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 coverage is 100%, so the description does not need to explain parameters. The description mentions 'execution exists' which ties to execution_id, but adds no extra meaning beyond the schema. The baseline of 3 applies.

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 action ('Cancel a running or paused Ouroboros execution') with a specific resource and scope. However, it does not differentiate from the sibling tool 'ouroboros_cancel_job', which could be confused with cancellation of a job rather than an execution.

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: use when execution is running or paused, and it implies not to use when in a terminal state. It does not explicitly mention alternatives or exclusions, but the context is sufficient for basic guidance.

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

ouroboros_cancel_jobC

Request cancellation for a background job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID returned by a start tool

TDQS

C2.9/5.0
Behavior2/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. The phrase 'Request cancellation' hints that the operation may be asynchronous, but it does not disclose side effects, idempotency, or how to check the outcome. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single, clear sentence with no fluff, which is appropriately concise for the tool's simplicity. However, it omits important contextual information, so it is not maximally effective as a standalone resource.

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

Completeness2/5

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

Given the tool has no annotations and no output schema, the description is too minimal to be complete. It does not mention that cancellation may be asynchronous, how to verify cancellation, or how it differs from cancel_execution. This leaves significant gaps for an agent attempting to use the tool correctly.

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?

The description itself adds no parameter details, but the schema has 100% coverage for the single parameter (job_id) with a helpful description ('Job ID returned by a start tool'). Since the schema fully documents the parameter, a baseline score of 3 is appropriate.

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 action ('Request cancellation') and the resource ('a background job'), which is specific and unambiguous. However, it does not explicitly distinguish from sibling tools like ouroboros_cancel_execution, so it misses the top score for sibling differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as ouroboros_cancel_execution, or how it relates to job lifecycle tools (job_status, job_wait). The description does not specify preconditions or expected use cases beyond the obvious cancellation context.

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

ouroboros_evaluateA

Evaluate an Ouroboros execution session using the three-stage evaluation pipeline. Stage 1 performs mechanical verification (lint, build, test). Stage 2 performs semantic evaluation of AC compliance and goal alignment. Stage 3 runs multi-model consensus if triggered by uncertainty or manual request.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifactYesThe execution output/artifact to evaluate
session_idYesThe execution session ID to evaluate
working_dirNoProject root used to resolve Stage 1 mechanical verification commands and Stage 2 source-file visibility. Commands are read from .ouroboros/mechanical.toml; when the file is missing, the evaluator makes one AI detect call that inspects manifests (package.json, pyproject.toml, Cargo.toml, Makefile, ...) and authors the toml. Stage 1 skips every check when no toml is produced — it never guesses.
seed_contentNoOriginal seed YAML for goal/constraints extraction
artifact_typeNoType of artifact: code, docs, config. Default: codecode
trigger_consensusNoForce Stage 3 consensus evaluation. Default: False
acceptance_criteriaNoMultiple acceptance criteria for checklist evaluation. When two or more items are provided, each AC is evaluated independently and the results are aggregated into a pass/fail checklist (#366). Overrides acceptance_criterion.
acceptance_criterionNoSpecific acceptance criterion to evaluate against

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It clearly discloses the three-stage process and the consensus trigger, which is meaningful about how the tool behaves. However, it stops short of stating whether the operation is read-only or what side effects or return format to expect, preventing a 5.

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?

Three sentences, front-loaded with the main verb and resource, and each sentence earns its place by explaining one stage of the pipeline. No fluff or redundancy.

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?

The description is thorough about the evaluation process but omits what the tool returns or how to interpret the output. With no output schema present, this is a notable gap. The rich parameter descriptions compensate for some context, but the main description alone is not fully complete.

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 main description adds no parameter-specific meaning beyond the schema, but it does not need to because every parameter is already well documented. The pipeline overview subtly relates to trigger_consensus but adds no new semantics.

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 uses a specific verb ('Evaluate') with a clear resource ('an Ouroboros execution session') and adds a concrete three-stage pipeline. It distinguishes this as the evaluation tool among many ouroboros sibling tools by describing the exact stages, 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.

Usage Guidelines3/5

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

The description implies the tool is for evaluating execution sessions but does not explicitly state when to use it over siblings like ouroboros_start_evaluate or ouroboros_qa. The stage-level detail provides context but no explicit exclusions or alternatives.

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

ouroboros_evolve_rewindA

Rewind an evolutionary lineage to a specific generation. Truncates all generations after the target and emits a lineage.rewound event. The lineage can then continue evolving from the rewind point.

ParametersJSON Schema
NameRequiredDescriptionDefault
lineage_idYesID of the lineage to rewind
to_generationYesGeneration number to rewind to (inclusive)

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly states the destructive action ('Truncates all generations after the target'), the emitted event, and the continuation capability. This is strong for a mutation tool, though it omits any mention of error handling or permissions.

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?

Three sentences, front-loaded with the core purpose. Each sentence adds meaningful behavioral information (truncation, event, continuation) with no filler or unnecessary repetition.

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?

For a two-parameter mutation tool with no output schema, the description covers the key aspects: the action, the destructive scope, the event emitted, and that evolution can resume. Minor gaps like prerequisites or error conditions are not required for basic invocation.

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%, with clear descriptions for lineage_id and to_generation (inclusive). The description adds no parameter-specific details beyond what the schema already provides, so the baseline of 3 applies.

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 uses a specific verb and resource: 'Rewind an evolutionary lineage to a specific generation.' It also explains the effect (truncating generations after the target) and a distinguishing event (emits lineage.rewound), which differentiates it from forward-stepping tools like ouroboros_evolve_step.

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: rewinds to a generation, truncates subsequent ones, and allows the lineage to continue. It does not explicitly discuss alternatives or exclusions, but the behavior is well enough described to infer when to use the tool.

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

ouroboros_evolve_stepA

Run exactly ONE generation of the evolutionary loop. For Gen 1: provide lineage_id and seed_content (YAML). For Gen 2+: provide lineage_id only (state reconstructed from events). Returns generation result, convergence signal, and next action (continue/converged/ontology_stable/stagnated/exhausted/failed). ontology_stable is a non-success handoff; rerun the same lineage with execute=true to perform Execute→Evaluate.

ParametersJSON Schema
NameRequiredDescriptionDefault
executeNoWhether to run seed execution and evaluation. True (default): full pipeline with Execute→Validate→Evaluate. False: ontology-only evolution (fast, no execution).
skip_qaNoSkip post-execution QA evaluation. Default: false
parallelNoWhether to run ACs in parallel. True (default): parallel execution (fast, may cause import conflicts). False: sequential execution (slower, more stable code generation).
lineage_idYesLineage ID to continue or new ID for Gen 1
project_dirNoProject root directory for validation (pytest collection check). If omitted, auto-detected from execution output or CWD.
execution_idNoOptional execution id for checkpoint commit metadata.
seed_contentNoSeed YAML text for Gen 1. Pass a YAML-formatted string (for example, newline-delimited 'goal: ...' fields), not JSON-shaped text or an object literal; some MCP clients may otherwise coerce the value to an object before Ouroboros receives it. Omit for Gen 2+ (seed reconstructed from events).
commit_policyNoOptional checkpoint commit policy for passed ACs.
auto_session_idNoOptional auto session id for checkpoint commit metadata.
benchmark_controlNoRun a deliberate full-graph frugality control. Default: false. Requires execute=true, Gen 2+, an explicit Git project_dir, and a clean baseline; unavailable through plugin delegation.
checkpoint_commitsNoExisting checkpoint commit records for idempotency.
conductor_directiveNoBounded corrective context for this successor generation.
conductor_decision_idNoSelected conductor decision authorizing this successor generation.
recover_expired_claimNoExplicitly recover an expired lineage writer claim after confirming the prior owner process is dead. Default: false
predecessor_execution_idNoExecution or generation that this successor follows.
checkpoint_attempted_ac_idsNoAcceptance criteria already considered for checkpoint commits.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does add useful behavior: it is a single-step operation, state is reconstructed from events in later generations, and ontology_stable is a non-success handoff requiring a rerun with execute=true. It does not explicitly state side effects such as event/checkpoint writes or system modifications, which would make it fully transparent.

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 compact and front-loaded with the primary purpose; every clause adds operational information (generation rule, return values, next-action enum, ontology_stable handoff). No filler or repetition of schema-only content.

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?

For a complex 16-parameter tool with no output schema and no annotations, the description covers the core loop semantics, input requirements, return summary, and next-action vocabulary. It does not provide detailed return shape or failure handling, but the rich schema plus this workflow narrative is reasonably complete.

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

Parameters4/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 adds generation-specific semantics beyond the schema by telling the caller which parameters are relevant for Gen 1 vs Gen 2+ and by explaining that execute=true is used to move past ontology_stable. This enriches the meaning of lineage_id, seed_content, and execute.

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 opens with a specific action: 'Run exactly ONE generation of the evolutionary loop,' which names both the verb and resource. It also segments Gen 1 vs Gen 2+ usage, making the tool's distinct role among evolve/auto siblings clear.

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?

It gives explicit input requirements per generation ('Gen 1: provide lineage_id and seed_content', 'Gen 2+: provide lineage_id only') and how to handle the ontology_stable handoff with execute=true. It does not explicitly contrast with sibling tools like ouroboros_auto or ouroboros_start_evolve_step, so it stops short of full alternatives guidance.

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

ouroboros_execute_seedC

Execute a seed (task specification) in Ouroboros. A seed defines a task to be executed with acceptance criteria. This is the handler for 'ooo run' commands — do NOT run 'ooo' in the shell; call this MCP tool instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory used to resolve relative seed paths.
skip_qaNoSkip post-execution QA evaluation. Default: false
seed_pathNoPath to a seed YAML file. If the path does not exist, the value is treated as inline seed YAML.
model_tierNoModel-tier routing: small/medium/large → frugal/standard/frontier execution tier (trusted decomposed children may run one tier below; retries escalate). Omit to preserve automatic runtime selection; pass medium explicitly to pin standard routing.
session_idNoOptional session ID to resume. If not provided, a new session is created.
auto_evolveNoOverride execution.auto_evolve for the chained evaluation. When true, an explicitly rejected evaluation starts a bounded Ralph continuation loop.
seed_contentNoInline seed YAML content to execute.
auto_evaluateNoOverride execution.auto_evaluate for this call. When true, a completed background execute_seed run enqueues formal 3-stage evaluation as a separate bounded background job.
max_iterationsNoMaximum number of execution iterations. Default: 10
efficiency_modeNoExecution efficiency policy. adaptive may start decomposed ACs on lower-cost tiers and escalate on recovery; quality_first keeps children at the parent starting tier. Default: adaptive.
conductor_directiveNoBounded corrective context copied exactly from the selected conductor decision. Fresh successor executions only.
frugality_assuranceNoFrugality assurance: off, lightweight observe, or explicit strict baseline eligibility. Defaults from efficiency_mode; strict is never enabled implicitly.
conductor_decision_idNoSelected conductor decision receipt authorizing a fresh successor.
predecessor_execution_idNoExecution ID that the new successor follows.

TDQS

C2.8/5.0
Behavior2/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 only states that a seed is executed, but does not mention whether execution is synchronous, whether it creates sessions, triggers QA, or modifies state. It gives no context about side effects, long-running behavior, or error handling, which is especially important for a complex tool with 14 parameters.

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

Conciseness4/5

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

The description is two sentences and directly states the purpose and a key usage warning. It is not bloated and the most important information is front-loaded. However, for a tool this complex, the brevity feels more like under-specification than skillful conciseness, so I would not give a perfect score.

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

Completeness1/5

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

The tool has 14 parameters, no annotations, no output schema, and many sibling tools. The description only provides two sentences of high-level context. It does not explain what the tool returns, whether it blocks, how it relates to start_execute_seed, or any operational caveats. This is severely incomplete for a tool of this 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?

The schema describes all 14 parameters with 100% coverage, so the description does not need to explain each one. The description adds conceptual context for what a seed is, which supports seed_path and seed_content, but beyond that it does not add meaning beyond the schema. Baseline 3 is appropriate.

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 executes a seed (task specification), using a specific verb and resource. It also identifies itself as the handler for 'ooo run' commands. However, it does not differentiate itself from the sibling tool ouroboros_start_execute_seed, which likely runs the same operation asynchronously.

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

Usage Guidelines2/5

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

The only usage guidance is a warning not to run 'ooo' in the shell and to use this MCP tool instead. It provides no guidance on when to choose this over sibling tools like ouroboros_start_execute_seed, ouroboros_auto, or ouroboros_start_auto. No exclusions or alternative selection criteria are given.

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

ouroboros_generate_seedA

Generate an immutable Seed from a completed interview session. The seed contains structured requirements (goal, constraints, acceptance criteria) extracted from the interview conversation. Generation requires ambiguity_score <= 0.2 unless force=true is passed to deliberately bypass the gate.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoBypass the ambiguity-score threshold and generate the seed even when ambiguity_score > 0.2. Mirrors the CLI 'Generate Seed anyway' opt-in: the real score is still recorded in seed metadata for provenance, and the bypass is emitted to the audit log. Defaults to false.
session_idYesInterview session ID to convert to a seed
client_gatesNoClient-side interview gates acknowledged before seed generation. Expected values include seed_ready_acceptance_guard and restate_goal_approved.
ambiguity_scoreNoAmbiguity score for the interview (0.0 = clear, 1.0 = ambiguous). Required if interview didn't calculate it. Generation fails if > 0.2.

TDQS

A4.4/5.0
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. It discloses key behavioral traits: the seed is immutable, generation is gated by ambiguity_score, and force=true bypasses the gate. It does not cover all side effects, but the critical gate behavior and immutability are transparently stated.

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 sentences, each earning its place: purpose, output content, and gating condition. No fluff or repetition; it is concise and front-loaded with the core action.

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 tool's complexity (4 params, no output schema, no annotations), the description explains the essential behavior and gate. It omits potential error cases or return value details, but this is acceptable as the seed generation step is well-contextualized by the completed interview session and sibling tools.

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

Parameters4/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 adds value beyond the schema by explaining the interaction between ambiguity_score and force, i.e., the threshold and bypass mechanism, which is not evident from individual parameter descriptions.

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 purpose: 'Generate an immutable Seed from a completed interview session.' It specifies the action (generate), the resource (Seed), and the source (completed interview), distinguishing it from siblings like execute_seed which consumes seeds.

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 for when to use the tool: after an interview session is complete and when ambiguity is low (<=0.2) or when force=true is passed. It does not explicitly mention alternatives or exclusions, but the context is unmistakable and the condition adds practical guidance.

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

ouroboros_interviewA

Interactive interview for requirement clarification. Start a new interview with initial_context, resume with session_id, or record an answer to the current question. In plugin mode, returns a delegation receipt (status=delegated_to_subagent) and the interview executes in an OpenCode Task pane — the real session_id is returned there.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for brownfield auto-detection. Defaults to the current working directory if not provided.
answerNoResponse to the current interview question
referencesNoBounded user-provided reference cues. Each object requires reference_id, label, and origin; url/excerpt are optional.
session_idNoSession ID to resume an existing interview
interview_idNoOptional caller-supplied id for a brand-new interview. Must match the server format 'interview_<16 lowercase hex>' and must NOT collide with an existing interview file. Only valid for the start action — supplying it together with session_id (resume) or answer is rejected with an error to prevent silent identifier hijacking; do not preserve this argument across turns. Used by the bounded auto driver to pre-allocate the id so a driver-level cancel cannot leave auto state out of sync with the persisted interview file (see Q00/ouroboros#687).
last_questionNoThe question text from the previous child session's response. In plugin mode each dispatch creates a new child session whose questions are not automatically persisted server-side. Pass the child's last question here when submitting an answer so the interview transcript preserves the real question text instead of a placeholder.
confused_termsNoExplicit domain terms the user says they do not understand. Queued on the start turn and applied only after the first answer.
initial_contextNoInitial context to start a new interview session

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses plugin-mode behavior (delegation receipt, OpenCode Task pane, real session_id returned there), which is a valuable trait. It lacks disclosure of normal-mode return values or persistence side effects, preventing a higher score.

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 two focused sentences, front-loaded with the core purpose and then the plugin-mode caveat. Every sentence contributes value, with no filler.

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?

Given 8 parameters and no output schema, the description is not fully complete. It explains plugin-mode returns but not standard-mode responses, error conditions, or the overall interaction loop. The parameter schema helps, but the main description leaves gaps.

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

Parameters4/5

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

Schema description coverage is 100% with rich per-parameter text, so the baseline is 3. The main description adds meaning by mapping parameters to actions (initial_context for start, session_id for resume, answer for recording), which goes beyond the schema.

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 opens with 'Interactive interview for requirement clarification,' providing a specific verb and resource. It clearly distinguishes itself from sibling tools like ouroboros_pm_interview by specifying its focus on requirement clarification.

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?

It explicitly describes three invocation modes—start with initial_context, resume with session_id, or record an answer—giving clear context for usage. However, it does not compare directly to alternative tools or state 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.

ouroboros_job_resultA

Get the final output for a completed background job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID returned by a start tool

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It does not disclose what happens if the job is not complete, whether the result can be retrieved multiple times, or any error behavior. 'Get' suggests read-only, but no explicit safety or side-effect information is provided.

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?

A single, front-loaded sentence that is clear and wastes no words, making it easy for an agent to quickly grasp the core purpose.

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?

The tool is simple (one parameter, no output schema), but the description leaves gaps about return format and behavior for incomplete jobs. Given the many job-related siblings, more differentiation would improve completeness.

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?

The schema fully documents the only parameter (job_id as 'Job ID returned by a start tool'), and the description adds marginal context by linking it to a 'completed background job', but does not provide additional format or usage details beyond the schema.

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 uses a specific verb ('Get') and resource ('final output for a completed background job'), clearly distinguishing it from sibling tools like job_status (status) and job_wait (waiting). The inclusion of 'completed' sets a condition that adds precision.

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 phrase 'for a completed background job' implies the tool should only be used after job completion, but it does not explicitly state when to use it versus alternatives like ouroboros_job_status or ouroboros_job_wait, nor does it mention 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.

ouroboros_job_statusB

Get the latest summary for a background Ouroboros job.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo'full' (default), 'summary', or 'compact'.full
job_idYesJob ID returned by a start tool

TDQS

B3.3/5.0
Behavior3/5

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 adds behavioral context with 'latest' and 'summary' implying a non-blocking, summarized status read, and 'background' clarifies the job type. However, it does not disclose return format, error behavior, or explicitly confirm read-only semantics beyond the verb 'Get'.

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 a single, front-loaded sentence with no filler or redundant information. Every word earns its place.

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?

For a simple two-parameter tool with fully described schema, the description is reasonably complete. However, there is no output schema and the word 'summary' is vague; additionally, the lack of guidance among several job-related sibling tools leaves contextual gaps.

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 coverage is 100%, with descriptions for both job_id and view. The tool description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 applies.

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 uses a clear verb ('Get') and specific resource ('latest summary for a background Ouroboros job'), which makes the purpose understandable. It does not explicitly differentiate from sibling tools like ouroboros_job_result or ouroboros_job_wait, so it stops short of 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as ouroboros_job_result or ouroboros_job_wait. The description only states what the tool does, without any context about polling, final results, or when it should be preferred.

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

ouroboros_job_waitA

Wait briefly for a background job to change state. Useful for conversational polling after a start command.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo'full' (default), 'summary', or 'compact'.full
cursorNoPrevious cursor from job_status or job_wait
job_idYesJob ID returned by a start tool
streamNo'progress' (default) watches job/execution progress; 'linked' also streams linked session, lineage, and subagent events.progress
wait_forNo'raw' (default) returns on any job event, preserving existing behavior; 'ac_change' waits for AC/Sub-AC/phase progress or terminal status; 'attention_or_ac_change' additionally wakes for Synapse delivery status; 'phase_change' waits for phase transitions or terminal status; 'terminal' waits only for terminal status.raw
timeout_secondsNoMaximum seconds to wait for a change. Defaults to 0 so the tool returns an immediate snapshot and never holds the MCP client open unless the caller explicitly asks for long-polling. Values above 5 are capped so clients with MCP tool-call timeouts can poll safely.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden. It mentions 'briefly' and 'wait', but the crucial default behavior (immediate snapshot when timeout_seconds is 0) is only described in the schema parameter documentation, not in the main description. 'Briefly' is vague and arguably misleading without the schema, but the schema does compensate, and there is no direct contradiction.

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 two short, information-dense sentences with no filler. Every word earns its place: 'wait', 'briefly', 'background job', 'change state', 'conversational polling', 'after a start command'.

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?

While the schema is rich, the description alone omits important context such as the default no-wait behavior, what 'change state' covers (e.g., progress, terminal status), and how this relates to job_status/job_result. There is no output schema, so the response format is unstated. The description orients the user but is not complete for a tool with 6 parameters.

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 coverage is 100% with detailed descriptions for all 6 parameters, including defaults like timeout_seconds=0 and options for wait_for and stream. The main description adds no parameter-specific meaning, so the baseline score of 3 applies.

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 opens with a specific verb 'Wait' and a clear resource 'background job to change state', which distinguishes it from sibling status/result tools. The second sentence adds useful context about use after a start command, though it doesn't explicitly name alternatives like job_status or job_result.

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?

It explicitly states when the tool is useful: 'conversational polling after a start command'. This gives clear context, but it doesn't provide exclusions or mention alternative tools, so it stops short of a 5.

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

ouroboros_lateral_thinkA

Generate alternative thinking approaches using lateral thinking personas. Use this tool when stuck on a problem to get fresh perspectives from different thinking modes: hacker (unconventional workarounds), researcher (seeks information), simplifier (reduces complexity), architect (restructures approach), or contrarian (challenges assumptions). Set persona='all' (or pass personas=['hacker','architect',...]) to fan out to MULTIPLE personas in parallel — each runs in its own Task pane with an independent LLM context (no cross-contamination).

ParametersJSON Schema
NameRequiredDescriptionDefault
personaNoSingle persona (hacker, researcher, simplifier, architect, contrarian) OR 'all' to dispatch ALL 5 personas in parallel as separate Task panes.
personasNoExplicit list of personas to dispatch in parallel. Takes precedence over 'persona' arg. Example: ['hacker','contrarian','architect']. Each runs in its own parallel Task pane.
failed_attemptsNoPrevious failed approaches to avoid repeating
problem_contextYesDescription of the stuck situation or problem
current_approachYesWhat has been tried so far that isn't working
stagnation_patternNoDetected stagnation pattern used to suggest a persona when persona is omitted.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full transparency burden. It discloses a critical behavioral trait: fanning out to multiple personas runs them in parallel as separate Task panes with independent LLM contexts and no cross-contamination. This goes beyond the schema and is essential for the agent to understand 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.

Conciseness4/5

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

The description is only two sentences with no filler. The second sentence is dense but packs in essential details about parallel dispatch and independent contexts. It is appropriately sized for the complexity, though a touch run-on.

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?

The tool has six parameters (two required) and no output schema. The description covers the main workflow well, including the persona list and parallel behavior. However, it does not mention the stagnation_pattern parameter's role in auto-suggesting a persona or explicitly describe the return format, leaving minor gaps that the schema alone fills.

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 coverage is 100%, and every parameter already has a clear description. The tool description adds useful context about parallel execution and persona use, but largely restates schema information (e.g., 'personas' precedence is already in the schema). Thus the description adds only marginal semantic value beyond the schema.

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 uses the specific verb 'Generate' with the resource 'alternative thinking approaches' and enumerates five distinct personas (hacker, researcher, simplifier, architect, contrarian). This clearly differentiates the tool from sibling tools that manage jobs, seeds, or sessions.

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

Usage Guidelines5/5

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

Explicitly states 'Use this tool when stuck on a problem to get fresh perspectives'—a clear trigger condition. It also explains how to select a single persona or fan out with 'all' or 'personas', and notes that 'personas' takes precedence, giving actionable guidance.

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

ouroboros_lineage_statusB

Query the current state of an evolutionary lineage. Returns generation count, status, ontology evolution, and convergence progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
lineage_idYesID of the lineage to query

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. The verb 'Query' implies a read-only behavior and the return list clarifies the expected outcome, but there is no explicit statement about side effects, permissions, or error behavior.

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 two sentences: a focused action verb followed by a concise list of return fields. Every word contributes value, and it is perfectly front-loaded.

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?

For a simple tool with a single parameter and no output schema, the description covers the essentials: what it does and what it returns. It doesn't specify error handling or detailed lifecycle context, but it is largely complete for this use case.

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?

The input schema provides 100% coverage for lineage_id with a clear description. The tool description adds little beyond naming the resource as an 'evolutionary lineage', so baseline 3 is appropriate.

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 verb 'Query' and the resource 'evolutionary lineage', and lists specific return values (generation count, status, ontology evolution, convergence progress). It does not explicitly differentiate from sibling status tools, which prevents a top score, but the resource is distinct enough.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus sibling status tools like ouroboros_session_status or ouroboros_project_status. There is no mention of exclusions, prerequisites, or alternative tools.

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

ouroboros_measure_driftA

Measure drift from the original seed goal. Calculates goal deviation score using weighted components: goal drift (50%), constraint drift (30%), ontology drift (20%). Returns drift metrics, analysis, and suggestions if drift exceeds threshold.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe execution session ID to measure drift for
seed_contentYesOriginal seed YAML content for drift calculation
current_outputYesCurrent execution output to measure drift against the seed goal
current_conceptsNoConcepts present in the current output (for ontology drift)
constraint_violationsNoKnown constraint violations (e.g., ['Missing tests', 'Wrong language'])

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the weighted formula (goal drift 50%, constraint drift 30%, ontology drift 20%) and the return behavior (drift metrics, analysis, suggestions conditional on threshold). This is valuable beyond the schema, though it omits side effects and error handling.

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 two concise sentences, front-loaded with the primary purpose and following with formula and output. Every sentence adds value, and there is no redundant or filler content.

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?

The tool has 5 parameters and no output schema. The description explains the return type at a high level (metrics, analysis, suggestions) but lacks detail on output structure and edge cases like threshold definition. It is adequate but incomplete for fully understanding expected results.

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 parameters are well-documented in the schema. The description adds context about the weighting components but does not further explain individual parameters or how they map to the calculation. Baseline 3 is appropriate.

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 measures drift from the original seed goal, with a specific verb and resource. It also describes the calculation components and output, making the purpose clear. However, it does not explicitly differentiate from sibling tools like ouroboros_evaluate or ouroboros_session_signal.

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 description implies usage: when you need to measure drift from a seed goal. It does not provide explicit when-to-use vs. when-not-to-use guidance or mention alternative tools. There are no exclusion criteria or context about prerequisites.

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

ouroboros_pm_interviewA

PM interview for product requirements gathering. Start with initial_context, continue with session_id + answer, or generate PM seed with action='generate'. In plugin mode, returns a delegation receipt (status=delegated_to_subagent) and the PM interview executes in an OpenCode Task pane — the real session_id is returned there.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for PM document output. Defaults to current working directory. Brownfield context is loaded from DB (is_default=true).
actionNoAction to perform. Auto-detected from parameter presence when omitted: initial_context → 'start', session_id + answer → 'resume'. Use 'generate' explicitly to produce PM seed from completed interview.
answerNoPM's response to the current interview question
session_idNoSession ID to resume an existing PM interview
last_questionNoThe question text from the previous child session's response. In plugin mode each dispatch creates a new child session whose questions are not automatically persisted server-side. Pass the child's last question here when submitting an answer so the PM interview transcript preserves the real question text instead of a placeholder.
selected_reposNoList of repository paths selected for brownfield context (2-step start: returned by step 1, sent back in step 2). All repos are assigned role=main. When provided with initial_context, starts the interview with the selected brownfield repos.
initial_contextNoInitial product description to start a new PM interview

TDQS

A4.4/5.0
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 does a good job: it explains plugin-mode execution, the delegation receipt (status=delegated_to_subagent), where the real session_id is returned, and that action can be auto-detected. It also mentions that brownfield context is loaded from DB. These are meaningful behavioral details beyond the schema, though it does not cover every edge case like error handling or persistence 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 packs a wealth of information into two dense sentences. It front-loads the purpose and then logically explains the three usage modes with clear parameter references. Every clause serves a purpose; the plugin-mode caveat is included succinctly. No filler or redundant restatement of the schema.

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?

For a tool with 7 parameters, no output schema, and no annotations, the description plus rich parameter descriptions provide a solid understanding. The description covers the core interaction patterns and the important plugin-mode exception. It lacks explicit details on response formats (beyond the delegation receipt) and failure conditions, but given the complexity, it is reasonably complete for an agent to use correctly.

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

Parameters4/5

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

Schema description coverage is 100% (all 7 parameters are documented), so the baseline is 3. The description adds value by explaining the workflow: initial_context starts, session_id+answer resumes, and action='generate' produces a PM seed. This explicitly ties parameters to usage modes and clarifies auto-detection, going beyond the individual parameter descriptions.

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 opens with 'PM interview for product requirements gathering,' which clearly states a specific verb (interview) and resource (product requirements). It distinguishes this tool from siblings like ouroboros_interview by focusing on PM/product requirements scope and its multi-step workflow. The description also enumerates distinct usage modes, leaving no ambiguity about what the tool accomplishes.

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 gives explicit instructions on how to interact: 'Start with initial_context, continue with session_id + answer, or generate PM seed with action='generate'.' This is clear when-to-use guidance for each parameter combination. It also notes the plugin-mode delegation behavior, which is an important operational context. However, it does not explicitly compare against alternative tools or state when not to use this tool, so it falls short of a 5.

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

ouroboros_project_statusProject statusA
Read-onlyIdempotent

Resolve a project identity and rebuild its complete read-only run status from persisted Ouroboros session events. Identity conflicts, projection failures, and limits below the complete population return no partial record.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoComplete-run safety cap. The query fails instead of truncating when the matching population exceeds this value.
workspaceNoOptional canonical project-relative workspace filter.
project_dirNoProject or workspace directory. Defaults to the MCP server caller directory captured at startup.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runsYes
run_countYes
project_idYes
project_rootYes
schema_versionNo
workspace_pathNo

TDQS

A4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, but the description adds critical failure semantics: identity conflicts, projection failures, and exceed limit returns no partial record. It also clarifies reconstruction from persisted events, which is useful beyond the annotations.

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?

Two sentences, front-loaded with purpose, followed by concise behavioral caveats. Every word earns its place, with no repetition of schema or annotation content.

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?

With an output schema present, annotations covering safety, and 100% parameter documentation, the description sufficiently conveys the tool's core behavior and failure conditions. It lacks usage comparisons, but that gap is covered by the usage_guidelines dimension, not completeness.

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 schema already documents all parameters. The description adds a slight nuance by referencing 'limits below the complete population' which aligns with the limit parameter's documented behavior, but it does not provide extra semantics beyond the schema.

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 names the verb ('resolve', 'rebuild') and resource ('project identity', 'complete read-only run status'), which is specific and self-contained. It distinguishes from sibling status tools by focusing on project run status rebuilt from persisted session events, not lineage, session, or job status.

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

Usage Guidelines2/5

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 the many sibling status tools (e.g., ouroboros_lineage_status, ouroboros_session_status). The description does not mention alternatives or exclusions, leaving the choice to the agent to infer from the name.

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

ouroboros_qaA

General-purpose QA verdict for any artifact type. Evaluates code, API responses, documents, screenshots, or custom artifacts against a quality bar. Returns structured verdict with score, differences, and actionable suggestions. Designed for iterative loop usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifactYesThe artifact content to evaluate (code, text, JSON, etc.)
referenceNoOptional reference artifact for comparison (expected output, target schema, reference description).
quality_barYesNatural language description of what 'pass' means. E.g., 'All public functions must have type hints and docstrings.'
seed_contentNoOptional seed YAML for additional context (goal, constraints).
artifact_typeNoType of artifact: code, api_response, document, screenshot, test_output, custom. Default: codecode
qa_session_idNoQA session ID for multi-iteration tracking. If omitted, a new session is created.
pass_thresholdNoScore threshold for pass verdict (0.0-1.0). Default: 0.80
iteration_historyNoPrevious iteration results for loop context (JSON array).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses the output format ('structured verdict with score, differences, and actionable suggestions') and the intended iterative loop usage. However, it does not mention side effects like session creation when qa_session_id is omitted, which is a behavioral nuance in the schema.

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 sentences long, front-loads the main purpose, then explains the output and usage context. Every sentence adds value with no filler or redundancy.

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?

For a tool with 8 parameters and no output schema, the description adequately summarizes the return shape and intended usage context without needing to describe every parameter. It could offer slightly more detail on threshold/iteration history, but schema covers these, so this is sufficient.

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 adds minimal extra meaning beyond the schema by mentioning artifact types and quality bar, but it does not clarify parameter formats or edge cases beyond what parameter descriptions already state.

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 purpose with a specific verb ('Evaluates') and resource ('any artifact type'), enumerating examples like code, API responses, documents, screenshots, and custom artifacts. It also specifies the output ('structured verdict with score, differences, and actionable suggestions'), distinguishing it from general-purpose helpers.

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 says it is 'General-purpose' and 'Designed for iterative loop usage', giving a clear context for when to use it. It lists supported artifact types but does not explicitly mention alternatives or exclusions, so it misses the top level of guidance by not naming 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.

ouroboros_query_eventsB

Query the event history for an Ouroboros session. Returns a list of events matching the specified criteria.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of events to return. Default: 50
offsetNoNumber of events to skip for pagination. Default: 0
event_typeNoFilter by event type (e.g., 'execution', 'evaluation', 'error')
session_idNoFilter events by session ID. If not provided, returns events across all sessions.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the tool 'Returns a list of events matching the specified criteria,' which is minimal. It does not mention pagination behavior, ordering, potential side effects, or that omitting session_id returns events across all sessions—though the schema hints at that. This is a significant transparency gap.

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 a single, succinct sentence: 'Query the event history for an Ouroboros session. Returns a list of events matching the specified criteria.' It is front-loaded with the main action and contains zero fluff. Every word earns its place.

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

Completeness2/5

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

Given the moderate complexity (4 params, no output schema, no annotations), the description is too thin. It lacks essential context such as the meaning of limit/offset defaults, any explanation of event types, and the fact that session_id is optional (despite implying a session is required). No output schema exists to clarify return values, so the description should have provided more detail.

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 adds no extra parameter semantics beyond the schema; it merely refers to 'specified criteria' without explaining any parameter syntax or additional meaning. The schema already documents limit, offset, event_type, and session_id, so no deduction is needed, but no enhancement is provided either.

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 'Query the event history for an Ouroboros session' and that it 'Returns a list of events matching the specified criteria.' This is a specific verb+resource pair. It does not explicitly distinguish itself from siblings, but its focus on event history makes it distinct from other Ouroboros tools like query_projection or session_status.

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?

Usage is implied: this tool should be used when you need to query event history. However, there are no explicit when-to-use vs alternatives, nor any exclusions or comparisons to sibling tools. The description provides no guidance on when to use this tool over others.

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

ouroboros_query_projectionA

Build a read-only Run/Stage/Step projection from persisted Ouroboros events for a session or execution aggregate.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional safety cap for related events. If the run has more events than this cap, the tool fails instead of returning a partial projection.
seed_idNoOptional seed ID override. If omitted, the handler derives one from events and falls back to the queried ID.
session_idNoOptional orchestrator session ID to project.
execution_idNoOptional execution aggregate ID. When session_id is also provided, this narrows related session-event lookup.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses 'read-only' up front, which is a key behavioral trait. However, it lacks additional context such as failure modes, result format, or prerequisites beyond what the parameter schema already provides. The read-only designation is valuable but not exhaustive.

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 a single, concise sentence that front-loads the core action and scope. Every word contributes meaning, with no redundancy or filler.

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?

The tool is relatively simple with no output schema or annotations, and the description covers the primary purpose. However, it does not describe the shape of the projection, potential failure conditions, or how it relates to the sibling query tool, leaving some gaps for an agent to discover.

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 information; all semantics come from the schema's detailed descriptions of limit, seed_id, session_id, and execution_id. The schema does the heavy lifting, so no credit is lost or gained beyond baseline.

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 verb 'Build' and the specific resource 'read-only Run/Stage/Step projection' from persisted events for a session or execution aggregate. This distinguishes it from sibling tools like ouroboros_query_events, which likely returns raw events rather than a structured projection.

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 description implies usage context ('for a session or execution aggregate') but does not explicitly state when to use this tool over alternatives or when not to use it. No exclusions or alternative tool mentions are provided, leaving the agent to infer when a projection is needed.

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

ouroboros_ralphA

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.

ParametersJSON 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.

TDQS

A3.8/5.0
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.

ouroboros_record_conductor_decisionA

Record an audited Active Conductor decision. Record phase=selected before an action, then completed, failed, or declined after the outcome. Mutating successors require engine_ownership_state=closed.

ParametersJSON Schema
NameRequiredDescriptionDefault
phaseYesDecision phase.
actor_modeNoHost policy mode; required for selected.
decision_idYesStable idempotent decision ID.
root_job_idNoRoot job used for the two-successor budget.
result_receiptNoBounded outcome receipt or failure/decline reason for terminal phases.
selected_actionNoSelected menu action; required for selected.
selected_effectNoAction effect class; required for selected.
action_argumentsNoAction arguments; only a digest and bounded key list are persisted.
attention_event_idNoSource attention relay/event ID; required for selected.
evidence_event_idsNoBounded evidence event IDs; required for selected.
conductor_directiveNoOptional bounded corrective successor directive.
verification_summaryNoShort read-only verifier conclusion; required for selected.
engine_ownership_stateNoAuthoritative ownership state from the attention envelope.
successor_execution_idNoNew execution ID returned by a completed successor action.
user_approval_event_idNoRequired approval receipt for specification changes.
predecessor_execution_idNoExecution that the selected successor will follow.

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the mutating successor ownership requirement and the phase ordering, but omits details like idempotency behavior, whether updates are allowed, or what happens on duplicate decision IDs. It mentions 'audited' but doesn't explain traceability features.

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?

Two sentences, front-loaded with the primary action, followed by essential constraints. Zero filler; every clause adds information.

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 high schema coverage, the tool has 16 parameters and a multi-phase state machine. The description provides only a high-level phase sequence and one precondition, lacking an overview of how the decision record relates to successor execution or the two-successor budget. It is minimally viable but leaves gaps for a complex tool.

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

Parameters4/5

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

All 16 parameters have schema descriptions (100% coverage), so baseline is 3. The description adds lifecycle context for 'phase' and a constraint for 'engine_ownership_state' that goes beyond the schema. It does not discuss the other parameters, but the schema covers them adequately.

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: 'Record an audited Active Conductor decision.' The verb 'record' and resource 'Active Conductor decision' are specific, and the phase lifecycle distinguishes it from related tools like ouroboros_auto or ouroboros_execute_seed.

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?

It explains the temporal usage: record phase=selected before an action, then completed/failed/declined after the outcome. It also states a precondition: 'Mutating successors require engine_ownership_state=closed.' However, it does not explicitly name alternative tools or when not to use this tool.

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

ouroboros_session_signalA

Send one audited Ouroboros Synapse intent signal to an exact active AC session attempt. Shipped runtime adapters currently advertise and apply only inform and after_turn; direct requested modes require the selected exact attempt to advertise that mode. redirect and replace remain reserved, capability-gated advertised/effective modes; no shipped adapter currently advertises or applies either directly. redirect nevertheless remains a valid requested mode on one explicit fallback path: fallback_mode=after_turn must be present and that exact attempt must advertise after_turn, which becomes the effective queued mode. All other unsupported requests fail closed, including redirect without that fallback and replace without its capabilities. Query ouroboros_session_signal_targets for the selected exact attempt's live capabilities before sending. A queued result does not mean the signal was applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesRequested Synapse delivery mode. For the direct path, the exact attempt must advertise the requested mode in ouroboros_session_signal_targets. For the sole fallback path, redirect may be requested while omitted from discovery only when fallback_mode=after_turn is explicit and that attempt advertises after_turn; its effective mode is then after_turn. Shipped adapters currently advertise/effect only inform and after_turn; redirect and replace remain reserved advertised/effective capabilities.
reasonYesShort user-visible rationale.
sourceYesAudited source authority.
messageYesBounded additive implementation intent; no secrets or transcripts.
expires_atNoOptional timezone-aware ISO-8601 expiry.
fallback_modeNoExplicit redirect-only fallback; after_turn is the sole valid value and is used only when the selected attempt advertises after_turn.
contract_effectNoWhether this preserves the approved shared contract or changes the goal, ACs, constraints, or non-goals.additive
idempotency_keyYesStable key for this exact execution/scope/attempt intent.
expected_execution_idYesExecution generation guard.
user_approval_event_idNoRequired approval receipt for replace mode.
target_session_scope_idYesStable logical AC session scope ID.
expected_contract_versionNoOptional shared execution-contract generation guard.
target_session_attempt_idYesExact runtime attempt ID; stale attempts fail closed.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and excels: it discloses that shipped adapters only advertise/apply inform and after_turn, that redirect and replace are reserved, that redirect has one explicit fallback path, that unsupported requests fail closed, and that 'A queued result does not mean the signal was applied.' This is comprehensive behavioral disclosure.

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

Conciseness4/5

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

The description is dense and front-loaded with the core purpose, but it is relatively long and consists of a single block of text. Every sentence contributes valuable constraint information, so length is justified, but it would benefit from clearer structural separation (e.g., bullets).

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?

For a complex 13-parameter tool with no output schema, the description covers the tricky mode logic, fallback, failure behavior, and a prerequisite query. It does not explain the response shape (though it warns about queued results), which is a minor gap given no output schema, but overall it is sufficient for an agent to invoke correctly.

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% with detailed per-parameter descriptions, so the baseline is 3. The tool description reinforces mode/fallback semantics but does not add new parameter-level meaning beyond what is already in the schema; it is contextual rather than parameter-specific.

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 opens with a specific verb+resource: 'Send one audited Ouroboros Synapse intent signal to an exact active AC session attempt.' This clearly distinguishes it from sibling tools like ouroboros_session_signal_targets, which is referenced for querying capabilities, and from other session/execution tools.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use and when-not-to-use guidance: it directs the agent to 'Query ouroboros_session_signal_targets for the selected exact attempt's live capabilities before sending,' details the sole fallback path for redirect (fallback_mode=after_turn and attempt advertising after_turn), and states that 'All other unsupported requests fail closed.' This goes beyond vague context and names a specific alternative tool.

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

ouroboros_session_signal_targetsA

List exact active AC attempts and each attempt's live SessionSignal capabilities for one execution before sending a signal. Advertised modes are valid direct requested modes for that exact attempt. One explicit fallback path is also valid: redirect may be requested while omitted from discovery only with fallback_mode=after_turn when after_turn is advertised, and the effective queued mode is after_turn. Shipped adapters currently do not advertise or effect redirect or replace; other unsupported requests fail closed. Match the user's intent to AC content, and ask only when multiple candidates remain genuinely ambiguous.

ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYesExecution ID returned by run/auto/evolve/ralph start or its job observer.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral transparency burden. It discloses that advertised modes are valid direct requested modes, explains the one allowed fallback path (redirect with fallback_mode=after_turn only when after_turn is advertised), and states that shipped adapters do not support redirect/replace and that other unsupported requests fail closed. This gives an agent a clear understanding of the tool's behavior and constraints.

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

Conciseness4/5

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

The description is dense but each sentence adds essential information: the primary purpose, the validity of advertised modes, the explicit fallback path, and the failure behavior for unsupported requests. It is front-loaded with the main purpose and maintains a logical flow, though it is slightly longer than strictly necessary.

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

Completeness5/5

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

Despite having no output schema, the description fully conveys what the tool returns (a list of active AC attempts with their SessionSignal capabilities), and it goes beyond basic expectations by explaining fallback semantics and unsupported-request behavior. Given the tool's complexity (one parameter, discovery-oriented), the description is adequately complete for an agent to select and invoke it correctly.

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?

The input schema already provides a clear description for the single parameter execution_id ('Execution ID returned by run/auto/evolve/ralph start or its job observer'), and the tool description does not add further parameter-level detail. With schema description coverage at 100%, the description does not need to compensate, and the baseline score of 3 is appropriate.

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 begins with 'List exact active AC attempts and each attempt's live SessionSignal capabilities for one execution before sending a signal,' which clearly states a specific action (List), resource (AC attempts and their SessionSignal capabilities), and scope (for one execution). This explicit verb+resource+scope structure distinguishes it from sibling tools like ouroboros_session_signal (sending signals) and ouroboros_session_status (session status).

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 phrase 'before sending a signal' clearly indicates when to use this tool, and the description provides detailed context around valid fallback paths and unsupported requests, guiding when to ask the user for clarification. However, it does not explicitly name alternative tools or state when not to use this tool, so it just misses the highest bar.

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

ouroboros_session_statusA

Get the status of an Ouroboros session. Returns information about the current phase, progress, and any errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe session ID to query

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that the tool returns information, implying a read-only operation, but does not explicitly state safety guarantees, behavior on invalid session IDs, or any side effects. For a status query, this is minimally acceptable but not rich.

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 two sentences, directly to the point, with no redundant information. Every word adds value, front-loading the main purpose and then elaborating on the return content.

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?

For a tool with a single parameter and no output schema, the description adequately covers the tool's function and return contents (phase, progress, errors). It is complete enough for an agent to understand what to expect, though it omits potential error scenarios or session lifecycle context.

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?

The input schema covers 100% of the parameter (session_id) with a clear description 'The session ID to query'. The tool description adds no additional parameter semantics beyond what the schema provides, so baseline 3 is appropriate.

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 uses the specific verb 'Get' with a clear resource ('status of an Ouroboros session'). It also states what information is returned (phase, progress, errors), which distinguishes it from sibling tools like job status or lineage status.

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

Usage Guidelines2/5

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 this tool versus alternatives like ouroboros_job_status or ouroboros_lineage_status. No exclusions or prerequisites are mentioned.

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

ouroboros_start_autoA

Start ooo auto in the background and return auto_session_id + job_id immediately. Resume with the returned auto_session_id; poll with ouroboros_job_status / ouroboros_job_wait and read final state via ouroboros_job_result.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory
goalNoGoal/task for ooo auto
domainNoOptional domain profile name (for example, coding)
resumeNoAuto session id to resume
skip_runNoStop after A-grade Seed
attach_jobNoAttach an externally verified job id to an unknown run handoff
attach_sourceNoSource label for an attached run handle
commit_policyNoCheckpoint commit policy: ac_checkpoint, final_only, or none
reconcile_runNoTry to reconcile an unknown run handoff without starting a duplicate run
attach_sessionNoAttach an externally verified run session id to an unknown run handoff
efficiency_modeNoExecution efficiency policy: adaptive may use lower-cost child tiers with recovery escalation; quality_first keeps child ACs at the parent starting tier. Default: adaptive.
worktree_policyNoWorktree isolation policy: auto, always, current, or none
attach_executionNoAttach an externally verified execution id to an unknown run handoff
complete_productNoWhen true, chain RUN → RALPH_HANDOFF after a successful run handoff so a single ouroboros_auto invocation iterates Ralph until QA passes, convergence, or a budget bound trips. Defaults to false (opt-in).
reconcile_sourceNoSource label for run handoff reconciliation
user_preferencesNoCaller-supplied user preferences keyed by ledger section name (e.g. runtime_context, constraints, non_goals). The Driver tags matching answers with [from-auto][user_preference] in the ledger. Keys must be valid ledger section names; values must be non-empty strings or non-empty lists of strings/numbers. On resume, null/empty values clear the persisted preference for that section.
max_repair_roundsNoMax repair rounds
frugality_assuranceNoFrugality assurance: off, observe, or explicitly authorized strict. Defaults from efficiency_mode and is immutable on resume.
max_interview_roundsNoMax interview rounds
pipeline_timeout_secondsNoTop-level pipeline deadline in seconds. Defaults to 7200s for new sessions. Range: 60-86400. Cannot be changed on resume; the deadline is preserved across process restarts.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It reveals that execution is asynchronous ('in the background'), non-blocking ('return ... immediately'), resumable, and that the final state must be read via other tools. It does not cover failure modes, cancellation, or resource implications, but the key behavioral traits are communicated.

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?

Two sentences, front-loaded with the core action and return values, and every clause provides essential workflow information. 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?

The description explains the complete high-level flow: start, resume, poll, and read result, which is sufficient for a 20-parameter tool with 0 required params and comprehensive schema descriptions. It does not describe all possible parameter interactions, but the schema already provides field-level detail.

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 coverage is 100%, so every parameter already has a description. The tool description adds no parameter-level semantics beyond noting that a returned auto_session_id can be used for resume, which indirectly supports the resume parameter. Baseline 3 is appropriate since schema does the heavy lifting.

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 a specific action: 'Start ooo auto in the background' and specifies the immediate return values ('auto_session_id + job_id'). This distinguishes it from siblings like ouroboros_auto by emphasizing the background/asynchronous nature.

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 gives clear context for use: launch in the background and get immediate IDs. It also provides a follow-up workflow ('Resume with the returned auto_session_id; poll with ouroboros_job_status / ouroboros_job_wait and read final state via ouroboros_job_result'), though it does not explicitly contrast this tool with ouroboros_auto or list exclusion scenarios.

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

ouroboros_start_evaluateA

Start an evaluation in the background and return a job ID immediately. Use this instead of ouroboros_evaluate when the three-stage pipeline (mechanical + semantic + optional consensus) is expected to exceed the MCP client tool-call timeout. Poll with ouroboros_job_status / ouroboros_job_wait and read the verdict via ouroboros_job_result. In plugin mode with auto_evolve disabled, evaluation is delegated to an OpenCode Task pane and job_id is None. With auto_evolve enabled, the parent keeps evaluation pollable so a rejection can start Ralph.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifactYesThe execution output/artifact to evaluate
session_idYesThe execution session ID to evaluate
auto_evolveNoOverride execution.auto_evolve for this background call. When true, an explicitly rejected formal evaluation starts a bounded Ralph continuation loop.
working_dirNoProject root used to resolve Stage 1 mechanical verification commands and Stage 2 source-file visibility. Commands are read from .ouroboros/mechanical.toml; when the file is missing, the evaluator makes one AI detect call that inspects manifests (package.json, pyproject.toml, Cargo.toml, Makefile, ...) and authors the toml. Stage 1 skips every check when no toml is produced — it never guesses.
seed_contentNoOriginal seed YAML for goal/constraints extraction
artifact_typeNoType of artifact: code, docs, config. Default: codecode
seed_handoff_idNoOpaque parent-owned Seed handle for plugin evaluation
trigger_consensusNoForce Stage 3 consensus evaluation. Default: False
acceptance_criteriaNoMultiple acceptance criteria for checklist evaluation. When two or more items are provided, each AC is evaluated independently and the results are aggregated into a pass/fail checklist (#366). Overrides acceptance_criterion.
acceptance_criterionNoSpecific acceptance criterion to evaluate against

TDQS

A4.7/5.0
Behavior5/5

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 discloses the async job behavior, the None job_id delegation to an OpenCode Task pane in plugin mode without auto_evolve, and how auto_evolve keeps evaluation pollable for Ralph rejection. This goes well beyond the schema's basic parameter descriptions.

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 four sentences of dense, useful content with no filler. It front-loads the core action, then provides alternative selection, polling workflow, and edge-case behavior, earning every sentence.

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

Completeness5/5

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

There is no output schema and no annotations, so the description must explain the return contract, which it does: immediate job ID, None in certain plugin mode, and verdict via ouroboros_job_result. It also covers the key behavioral branches (plugin mode, auto_evolve), making it complete for a 10-parameter tool.

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% with each parameter already having a rich description. The top-level description does not add parameter-specific meaning; it focuses on workflow and alternatives, so the baseline score of 3 is appropriate.

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 opens with a specific verb+resource: 'Start an evaluation in the background and return a job ID immediately.' It explicitly distinguishes from the sibling ouroboros_evaluate by positioning itself as the background variant for long-running pipelines, making its purpose unmistakable.

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

Usage Guidelines5/5

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

It explicitly states when to prefer this over ouroboros_evaluate (when the three-stage pipeline is expected to exceed the MCP timeout) and names the exact sibling tools for polling and result retrieval (ouroboros_job_status, ouroboros_job_wait, ouroboros_job_result). It also covers plugin-mode and auto_evolve-specific usage.

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

ouroboros_start_evolve_stepA

Start one evolve_step generation in the background and return a job ID immediately for later status checks. In plugin mode, evolution is delegated to an OpenCode Task pane and job_id is None — results appear in the Task pane instead of being pollable via job_status/job_result.

ParametersJSON Schema
NameRequiredDescriptionDefault
executeNoWhether to run seed execution and evaluation. True (default): full pipeline with Execute→Validate→Evaluate. False: ontology-only evolution (fast, no execution).
skip_qaNoSkip post-execution QA evaluation. Default: false
parallelNoWhether to run ACs in parallel. True (default): parallel execution (fast, may cause import conflicts). False: sequential execution (slower, more stable code generation).
lineage_idYesLineage ID to continue or new ID for Gen 1
project_dirNoProject root directory for validation (pytest collection check). If omitted, auto-detected from execution output or CWD.
execution_idNoOptional execution id for checkpoint commit metadata.
seed_contentNoSeed YAML text for Gen 1. Pass a YAML-formatted string (for example, newline-delimited 'goal: ...' fields), not JSON-shaped text or an object literal; some MCP clients may otherwise coerce the value to an object before Ouroboros receives it. Omit for Gen 2+ (seed reconstructed from events).
commit_policyNoOptional checkpoint commit policy for passed ACs.
auto_session_idNoOptional auto session id for checkpoint commit metadata.
benchmark_controlNoRun a deliberate full-graph frugality control. Default: false. Requires execute=true, Gen 2+, an explicit Git project_dir, and a clean baseline; unavailable through plugin delegation.
checkpoint_commitsNoExisting checkpoint commit records for idempotency.
conductor_directiveNoBounded corrective context for this successor generation.
conductor_decision_idNoSelected conductor decision authorizing this successor generation.
recover_expired_claimNoExplicitly recover an expired lineage writer claim after confirming the prior owner process is dead. Default: false
predecessor_execution_idNoExecution or generation that this successor follows.
checkpoint_attempted_ac_idsNoAcceptance criteria already considered for checkpoint commits.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses key behaviors: background execution, immediate job ID return, and plugin-mode delegation with job_id=None. Yet it does not cover potential side effects, failure modes, or what happens to lineage state, leaving notable gaps.

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 two sentences, front-loaded with the core action, and contains no filler. Every clause adds useful information about behavior or plugin mode, making it highly concise and well-structured.

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?

For a complex tool with 16 parameters and no output schema, the description provides essential async behavior and plugin caveat but omits other return-value details and broader workflow orientation. It references job_status/job_result for polling but does not explain other possible response fields or prerequisites, leaving moderate gaps.

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?

The input schema has 100% description coverage for all 16 parameters, so the baseline is 3. The description itself adds no parameter-specific meaning beyond what the schema already provides, so it neither improves nor harms.

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 uses a specific verb+resource: 'Start one evolve_step generation in the background and return a job ID immediately'. It clearly distinguishes this background tool from synchronous siblings like ouroboros_evolve_step and from status/result tools by emphasizing immediate return and later polling.

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 implies when to use this tool: when you want background execution and a job ID to poll later, contrasting with plugin mode where results appear in the Task pane instead of being pollable. However, it does not explicitly name alternatives or provide exclusions, so it stops short of full guidance.

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

ouroboros_start_execute_seedA

Start a seed execution in the background and return a job ID immediately. Use ouroboros_ac_tree_hud for live progress snapshots and ouroboros_job_result for terminal output. In plugin mode, execution is delegated to an OpenCode Task pane and job_id is None — results appear in the Task pane instead of being pollable via job_status/job_result. This is the handler for 'ooo run' commands — do NOT run 'ooo' in the shell; call this MCP tool instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory used to resolve relative seed paths.
skip_qaNoSkip post-execution QA evaluation. Default: false
seed_pathNoPath to a seed YAML file. If the path does not exist, the value is treated as inline seed YAML.
model_tierNoModel-tier routing: small/medium/large → frugal/standard/frontier execution tier (trusted decomposed children may run one tier below; retries escalate). Omit to preserve automatic runtime selection; pass medium explicitly to pin standard routing.
session_idNoOptional session ID to resume. If not provided, a new session is created.
auto_evolveNoOverride execution.auto_evolve for the chained evaluation. When true, an explicitly rejected evaluation starts a bounded Ralph continuation loop.
seed_contentNoInline seed YAML content to execute.
auto_evaluateNoOverride execution.auto_evaluate for this call. When true, a completed background execute_seed run enqueues formal 3-stage evaluation as a separate bounded background job.
max_iterationsNoMaximum number of execution iterations. Default: 10
efficiency_modeNoExecution efficiency policy. adaptive may start decomposed ACs on lower-cost tiers and escalate on recovery; quality_first keeps children at the parent starting tier. Default: adaptive.
idempotency_keyNoOptional process-local idempotency key. A second call with the same key returns the same execution metadata and does NOT enqueue a new execution. Map TTL is process lifetime — not persistent across server restarts.
conductor_directiveNoBounded corrective context copied exactly from the selected conductor decision. Fresh successor executions only.
frugality_assuranceNoFrugality assurance: off, lightweight observe, or explicit strict baseline eligibility. Defaults from efficiency_mode; strict is never enabled implicitly.
conductor_decision_idNoSelected conductor decision receipt authorizing a fresh successor.
predecessor_execution_idNoExecution ID that the new successor follows.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral disclosure burden. It does disclose key runtime behavior: the tool runs in the background, returns immediately, and delegates to a Task pane in plugin mode with job_id=None. However, it does not state whether the operation is mutating, what side effects or permissions are required, or how idempotency_key interacts beyond the schema. This is partial disclosure, not comprehensive.

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 four sentences, each serving a distinct purpose: core action, monitoring pointers, plugin exception, and shell alias warning. It is front-loaded with the primary behavior and uses no filler words. This is exemplary economy.

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?

Despite 15 parameters and no output schema, the description covers the most important context: the async job model, where to find progress/output, the plugin-mode behavioral shift, and the relationship to the 'ooo' shell command. It does not explain return value structure, but no output schema exists and the job_id/None behavior is disclosed. It is complete enough for a high-complexity tool.

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 coverage is 100%, with each of the 15 parameters having meaningful descriptions in the input schema. The tool description itself adds no parameter-specific semantics—it stays at the level of execution mode and monitoring. Per rubric, this hits the baseline of 3.

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 opens with 'Start a seed execution in the background and return a job ID immediately,' clearly identifying the verb (start), resource (seed execution), and immediate outcome (job ID). It also notes it is the handler for 'ooo run' commands, which distinguishes it from a shell command but does not explicitly contrast it with sibling tools like ouroboros_execute_seed. This implicit differentiation prevents 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 Guidelines5/5

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

The description explicitly directs users to 'Use ouroboros_ac_tree_hud for live progress snapshots and ouroboros_job_result for terminal output,' providing clear alternatives for post-start actions. It also warns 'do NOT run ''ooo'' in the shell; call this MCP tool instead,' a concrete when-not instruction. The plugin-mode caveat further clarifies when job polling is unavailable.

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

ouroboros_start_ralphA

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.

ParametersJSON 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.

TDQS

A4.1/5.0
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.

ouroboros_submit_fanout_resultsA

Submit correlated results from a subagent fan-out back to Ouroboros. After spawning the advisory/persona/investigation subagents declared by a prior tool's meta (which stamped a fanout_id and a result_correlation_key), call this tool with one {key, content} per child output — key is the value of the correlation field for that child. A child you could not spawn at all is exactly {key, undispatched: true}; never invent output. Missing required keys return status=partial; retry with EVERY lane. A complete submission returns a bounded disposable artifact envelope; fetch its body explicitly with ouroboros artifacts fetch CONTRACT_ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
resultsYesCorrelated child outputs: objects with a 'key' (the correlation value) and a 'content' (the child result), or 'undispatched': true when the child never ran.
fanout_idYesThe fanout_id stamped into the originating tool's meta.
session_idNoInterview/lateral session id the fan-out belongs to.
correlation_keyNoThe result_correlation_key from the originating meta (e.g. 'context.persona' or 'code_facts').

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses the exact input contract (one {key, content} per child, key equals correlation field, undispatched sentinel), the 'never invent output' rule, the `status=partial` error condition for missing keys, and the return artifact envelope with explicit fetch instructions. This is exceptional behavioral disclosure.

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 dense yet efficiently structured, front-loading the purpose and then providing necessary protocol details. Every sentence earns its place: correlation key mapping, undispatched handling, missing-key behavior, and envelope retrieval. There is no filler or repetition.

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

Completeness5/5

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

For a complex tool with no output schema, the description explains the prerequisite (spawned subagents with meta), the exact payload format, partial submission behavior, and how to fetch the result artifact. It leaves little ambiguity about the workflow, making it complete for an agent to invoke correctly.

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

Parameters4/5

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 adds meaningful semantics beyond the schema by explaining how `key` maps to the correlation field, how `results` entries should be structured, and the retry requirement for partial submissions. It doesn't fully compensate for the schema because the schema is already descriptive, but it enhances understanding.

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 opens with 'Submit correlated results from a subagent fan-out back to Ouroboros,' using a specific verb ('submit') and a clear resource (correlated results). It distinguishes itself from sibling tools like ouroboros_auto or ouroboros_session_signal by its unique role in the fan-out submission flow.

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?

It explicitly states when to call: 'After spawning the advisory/persona/investigation subagents declared by a prior tool's meta... call this tool with one {key, content} per child output.' It also provides guidance on handling undispatched children and missing keys. However, it does not explicitly name alternative tools or exclusions, so it falls short of a 5.

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.

  1. 34 tool updatesv0.50.8
    • First observedouroboros_ac_dashboard
    • First observedouroboros_ac_tree_hud
    • First observedouroboros_auto
    • First observedouroboros_brownfield
    • First observedouroboros_cancel_execution
    • First observedouroboros_cancel_job
    • First observedouroboros_evaluate
    • First observedouroboros_evolve_rewind
    • First observedouroboros_evolve_step
    • First observedouroboros_execute_seed
    • First observedouroboros_generate_seed
    • First observedouroboros_interview
    • First observedouroboros_job_result
    • First observedouroboros_job_status
    • First observedouroboros_job_wait
    • First observedouroboros_lateral_think
    • First observedouroboros_lineage_status
    • First observedouroboros_measure_drift
    • First observedouroboros_pm_interview
    • First observedouroboros_project_status
    • First observedouroboros_qa
    • First observedouroboros_query_events
    • First observedouroboros_query_projection
    • First observedouroboros_ralph
    • First observedouroboros_record_conductor_decision
    • First observedouroboros_session_signal
    • First observedouroboros_session_signal_targets
    • First observedouroboros_session_status
    • First observedouroboros_start_auto
    • First observedouroboros_start_evaluate
    • First observedouroboros_start_evolve_step
    • First observedouroboros_start_execute_seed
    • First observedouroboros_start_ralph
    • First observedouroboros_submit_fanout_results

TDQS

B3.3/5.0
Disambiguation2/5

Many tools are near-duplicates, e.g., execute_seed vs start_execute_seed, evaluate vs start_evaluate, ralph vs start_ralph, and auto vs start_auto. The sync/async distinction is subtle, and the auto/ralph naming is opaque, creating high risk of selecting the wrong tool.

Naming Consistency3/5

All tools share the ouroboros_ prefix, but the suffix patterns are inconsistent: some are verb_noun (execute_seed, cancel_job), some are noun_state (job_status, session_status), and proper nouns like ralph lack a verb. The start_* variants are applied selectively, not uniformly.

Tool Count2/5

With 34 tools, the set is oversized for its purpose. Many are paired sync/async versions of the same operation, inflating the count without adding functional diversity. This exceeds the comfortable range and creates cognitive overhead.

Completeness4/5

The tool surface covers the full lifecycle: interview → seed → execute → evaluate → evolve → rewind, plus job management, AC tracking, drift measurement, and lateral thinking. Both synchronous and asynchronous paths are provided, with no obvious gaps for the domain.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

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