code-quorum
code-quorum
독립적인 리뷰는 에이전틱 도구를 사용하는 방식에서 중요한 부분이 되었습니다. 유사한 작업에서 영감을 받아 Code Quorum을 개인 용도로 만들었고, 다른 사람들에게도 유용할 수 있어 공유합니다.
Code Quorum은 Claude Code와 Codex를 위한 macOS 멀티 에이전트 평의회(council)입니다. 활성 호스트는 자신의 리뷰, 평가 또는 계획을 작성하는 동안 외부 시트(seat)들이 병렬로 작업합니다. 구조적 반편향(anti-bias) 게이트는 최종 종합까지 모든 관점의 독립성을 유지합니다.
기존 Claude Code, ChatGPT/Codex, Gemini/Antigravity 구독을 사용할 수 있습니다. OpenCode 시트는 OpenRouter를 사용하며 기본 모델은 DeepSeek V4 Flash입니다. 두 CLI 호스트 모두 지원되며, ChatGPT 데스크톱 앱의 Codex와 Claude 데스크톱 앱의 Code 표면도 지원됩니다.
호스트 | 기본 외부 평의회 |
Claude Code | Codex + Gemini + OpenCode |
Codex | Claude 구독 + Gemini + OpenCode |
호스트는 결코 서브프로세스 시트가 되지 않습니다. 시작/대기 분할은 호스트가 q_await가 동료 출력을 노출하기 전에 자신의 답변을 먼저 구성하도록 요구하며, 모든 평의회 스킬은 시작과 같은 턴에서 차단 완료 알림을 호출합니다.
외부 시트는 읽기 전용이지만, 읽기 전용이 데이터 로컬(data-local)을 의미하지는 않습니다. 비공개 자료에 Code Quorum을 사용하기 전에 보안 및 데이터 경계를 검토하세요.
모든 저장소 읽기 MCP 평의회 시작은 명시적인 절대 프로젝트 cwd를 요구합니다. MCP 도구는 서버의 플러그인 캐시나 런타임 디렉터리로 폴백하는 대신 누락되거나 빈 값을 거부합니다. 호스트 스킬은 일반적인 /q-* 및 $code-quorum:q-* 사용 중에 이 값을 제공합니다. 계획 및 범위 파일도 해당 디렉터리 내에서 해석되어야 하며, 절대 경로, .. 탐색, 심볼릭 링크 이스케이프는 내용을 읽기 전에 거부됩니다.
워크플로우
호스트는 일치하는 평이한 언어 요청에서 워크플로우를 선택할 수 있습니다. 명시적으로 선택하려면 아래 형식을 사용하세요:
워크플로우 | Claude Code | Codex | Shell |
Plan |
|
|
|
Brainstorm |
|
|
|
Skystorm |
|
| 호스트 전용 스킬 |
Validate |
|
|
|
Review |
|
|
|
Research |
|
|
|
Help |
|
| 호스트 전용 스킬 |
uv run quorum --help는 정확한 셸 표면을 나열합니다. 주요 수정자는 다음과 같습니다:
옵션 | 효과 |
| 호스트 브레인스토밍에 추가 발산 라운드를 추가하거나, 검증/리뷰를 입장 회전과 함께 4라운드로 확장합니다. |
| 이후 검증/리뷰 라운드가 합의를 향한 수정 대신 동료 입장을 공격하도록 만듭니다. |
| 전체 코드베이스 리뷰에 대해 허용 범위, 제외 범위, 수용된 위험 영역을 선언합니다. |
| 호스트 리서치가 직접적인 선행 기술 대신 교차 도메인 유추를 찾도록 만듭니다. |
| 모델 사전 지식만으로 브레인스토밍 또는 스카이스톰을 실행합니다. |
리서치 소스 및 자격 증명
q-research는 기본적으로 6개 소스를 모두 쿼리합니다. 실행을 제한하려면 --source <name>을 반복하세요.
소스 | 대상 | 자격 증명 정책 |
arXiv ( | arXiv 검색의 학술 논문 및 프리프린트. | 없음. |
OpenAlex ( | 최근 저작물 및 초록; 탐색 모드는 하위 분야 맵도 생성합니다. | 일반 OpenAlex 사용에는 |
Europe PMC ( | bioRxiv, medRxiv, Research Square 및 유사 소스의 생명과학 프리프린트; arXiv 레코드는 제외됩니다. | 없음. |
Context7 ( | 신뢰도 높은 라이브러리 매칭 및 문서 스니펫. | 익명 요청은 속도 제한이 있을 수 있으므로 |
GitHub ( | 이름, 설명, 토픽으로 매칭된 공개 저장소를 별점 순으로 정렬. | 더 높은 한도를 위해 |
Hugging Face ( | 다운로드 수 순으로 정렬된 공개 모델 ID 및 메타데이터. 용어 폴백 결과에는 | 계정 수준 Hub 한도를 위해 |
Code Quorum은 프로세스 환경에서 자격 증명을 읽고 인증 헤더에만 토큰을 전송합니다. 생성된 Codex 어댑터는 명명된 변수를 전달하지만 플러그인 아티팩트에 값을 저장하지는 않습니다. OpenAlex는 일반 사용에 키가 필요한 유일한 소스이며, 나머지는 신뢰성이나 속도 한도를 개선합니다.
체크아웃에서 Hugging Face 검색을 검증하려면:
uv run quorum research "sentence embedding" --source huggingface --limit 5
uv run pytest tests/test_research_live.py -m live -k huggingface -qCLI 검사는 모델 링크와 0이 아닌 HuggingFace 소스 수를 반환해야 합니다. 라이브 테스트는 직접 검색, 구성된 토큰 인증, 고유 용어 합집합, 전체 research_topic 경로를 다룹니다. 토큰이 없으면 인증 테스트는 건너뛰고 익명 검사는 계속 실행됩니다.
Related MCP server: Moderator MCP Server
요구 사항
Code Quorum은 현재 macOS를 지원하며 Python 3.13+, uv 패키지 관리자, 그리고 사용하려는 시트의 바이너리가 필요합니다. 각 시트는 자체 로그인 또는 키에 의존합니다. Code Quorum은 플러그인 아티팩트에 자격 증명 값을 기록하지 않습니다. 시트 CLI는 SECURITY.md에 설명된 대로 자체 인증 및 런타임 상태를 유지합니다.
시트 | 바이너리 | 인증 | 비용 |
codex | CLI 자체 로그인 ( | ChatGPT 구독 또는 종량제 API 키 | |
gemini |
| Google AI 구독; 종량제 | |
opencode | 환경의 | OpenRouter를 통한 종량제 | |
claude (Codex 호스트 전용) | CLI 자체 claude.ai 로그인 | Claude 구독 전용; API 키 라우팅은 제거됨 |
Gemini 시트는 macOS Seatbelt 샌드박스에 의존하며, Claude는 읽기 도구 허용 목록을 대신 사용합니다. Codex 호스트는 Claude 및 Gemini 시트를 위해 범위가 좁은 LaunchAgent 헬퍼도 필요합니다. Codex와 OpenCode는 Seatbelt 의존성이 없지만 다른 플랫폼에서는 테스트되지 않았습니다.
설치
안정적인 체크아웃을 클론하고 시트를 구성하세요:
git clone https://github.com/sdewell/code-quorum.git
cd code-quorum
uv sync
agy # complete Google OAuth login, then exit
uv run quorum setup-agy # one-time Gemini seat config
uv run quorum setup-models --host claude # use --host codex for Codex
uv run quorum doctor --host claude # or codex / both
uv run quorum auth-check --seat gemini --host claudedoctor는 바이너리, 구성 형태, 샌드박스 준비 상태를 확인합니다. 라이브 자격 증명은 테스트하지 않습니다. auth-check는 시트가 사용하는 것과 동일한 샌드박스 내에서 agy models를 실행하며, 모델 프롬프트를 보내지 않고 유효한 모델 행이 하나 이상 있어야 합니다. 누락되거나 해지된 로그인은 사용자를 대화형 agy로 안내합니다. Code Quorum은 절대 조용히 종량제 API 경로로 전환하지 않습니다.
Codex 호스트에서는 Codex 인증 확인 전에 실제 터미널에서 헬퍼를 설치하고 검증하세요:
uv run quorum install-seat-helper-launchagent # --allowed-root <dir> to widen
uv run quorum seat-helper-status
uv run quorum auth-check --seat gemini --host codex모든 MCP 워크플로우는 기본적으로 ~/Code 및 ~/src 아래의 cwd를 허용합니다. Codex 헬퍼는 Claude 또는 Gemini 요청을 수락하기 전에 동일한 루트를 적용합니다. 다른 프로젝트 루트를 사용하려면 CODE_QUORUM_HELPER_ALLOWED_ROOTS를 설정하거나 반복된 --allowed-root 옵션으로 헬퍼를 설치하세요. Code Quorum 업그레이드 후에는 업데이트된 안정적인 체크아웃에서 헬퍼를 다시 설치하세요. 호환되지 않는 헬퍼 프로토콜은 안전하게 실패하며, Codex의 교체 가능한 플러그인 캐시에서의 설치는 거부됩니다.
읽기 전용 경계
모든 외부 시트는 읽기 전용이며 경계를 적용할 수 없으면 실행을 거부합니다. 시트별로 적용 방식이 다릅니다: Codex는 네이티브 읽기 전용 샌드박스를 사용하고, Claude는 읽기 도구만 노출하며, Gemini는 macOS Seatbelt를 사용하고, OpenCode는 제한된 권한의 격리된 HOME을 사용합니다.
Gemini의 Seatbelt 프로필은 agy 인증 및 런타임 상태에 대한 명시적 예외를 제외하고 다른 홈 디렉터리 읽기를 거부합니다. $HOME 외부의 읽기 가능한 경로는 거부하지 않습니다. Code Quorum은 Claude, Codex, OpenCode에 대한 보편적 경로 펜스를 제공하지 않습니다. 평의회 자료는 사용자가 구성한 제공자 계정을 통해 머신 밖으로 나갈 수 있습니다. 전체 경계 표, 데이터 유출 맵, 엄격한 격리 지침, 자격 증명 처리는 SECURITY.md에 있습니다.
Codex의 데이터 및 승인
Codex는 도구 승인, 파일시스템 격리, 자료를 머신 밖으로 보내는 권한을 별개의 결정으로 취급합니다. main...HEAD와 같은 대상은 준비된 리뷰 diff를 제한할 뿐, 외부 시트의 작업 디렉터리에 대한 읽기 전용 접근을 제한하지 않습니다.
approvals_reviewer = "auto_review"가 활성화되면 평의회 시작 시 페이로드와 수신자를 명명하는 명시적 승인이 필요할 수 있습니다. 무인 접근을 원하는 사용자는 도구별로 옵트인할 수 있지만, Code Quorum은 그러한 승인 항목을 직접 작성하지 않습니다.
SECURITY.md에는 일회성 승인 예시, 6개의 Codex 승인 블록(공유 q_await 도구 포함), 프로젝트 AGENTS.md 지침, 경로 제한 한도, 승인 보존 업데이트 절차가 포함되어 있습니다. 무인 워크플로를 활성화하기 전에 이를 검토하세요.
구성
각 시트(seat)는 하나의 사다리를 통해 모델을 결정하며, 첫 번째로 일치하는 항목이 우선합니다: 실행 플래그 -> 환경 변수 -> quorum setup-models로 기록된 선택 -> 제공된 고정 버전. 기록된 선택은 절대 조용히 변경되지 않습니다. 시트가 이를 이행할 수 없으면 나머지 평의회가 계속 진행되는 동안 명시적으로 실패합니다.
uv run quorum setup-models --host claude
uv run quorum setup-models --seat codex --model gpt-5.6-terra --effort medium변수 | 효과 |
| 기본 호스트 프로필 ( |
| Gemini 시트 모델 ( |
|
|
| OpenCode 시트 모델 |
|
|
| Claude 시트 모델 및 노력 수준 |
| Codex 시트 모델 및 추론 노력 수준 |
OpenCode 구성
OpenCode 시트는 OPENROUTER_API_KEY가 필요하며 개인 OpenCode 구성을 로드하지 않습니다. 격리된 HOME을 사용하고 매 실행 전에 이 생성된 구성을 다시 빌드합니다. 제공된 모델은 openrouter/deepseek/deepseek-v4-flash이며, OpenRouter chunkTimeout은 90000 밀리초입니다.
Code Quorum은 OPENCODE_DISABLE_PROJECT_CONFIG=1 및 OPENCODE_PURE=1을 설정합니다. 생성된 평의회 에이전트는 Read, glob, list만 허용하고, 셸 및 변형 도구를 거부하며, .env 및 .env.*를 차단하고, .env.example을 허용합니다. 실패하거나 빈 실행은 CODE_QUORUM_OPENCODE_DEBUG=0이 설정되지 않은 한 원시 stdout/stderr 캡처를 ~/.cache/code-quorum/opencode-debug에 기록합니다. 디렉터리는 0700, 캡처 파일은 0600, 프롬프트 텍스트는 명령 메타데이터에서 생략되며, 최신 20개 캡처만 유지됩니다. 원시 스트림에는 여전히 검토된 자료가 포함될 수 있습니다. 전체 경계 설계는 ARCHITECTURE.md 및 SECURITY.md를 참조하세요.
시트 비활성화
라이브 프로브가 시트가 없거나 로그아웃되어 실패하면 quorum setup-models가 models.toml에서 이를 disabled로 표시할 수 있습니다. 비활성화된 시트는 기본 명단에서 건너뛰고 doctor가 보고하지만, 명시적 --agent <seat> 요청은 여전히 실행합니다.
플러그인으로 설치
Claude Code:
/plugin marketplace add sdewell/code-quorum
/plugin install code-quorum@code-quorumClaude Code CLI의 경우 호스트를 시작하기 전에 OPENROUTER_API_KEY 및 선택적 연구 키를 로드하세요. 예:
source ~/.zshrc.local
claudeClaude 데스크톱 앱의 경우 앱을 열기 전에 현재 macOS 로그인 세션에서 키를 사용할 수 있게 만드세요:
source ~/.zshrc.local
launchctl setenv OPENROUTER_API_KEY "$OPENROUTER_API_KEY"launchctl 값은 해제되거나 로그아웃되거나 시스템이 재부팅될 때까지 이후에 시작되는 모든 애플리케이션에 상속됩니다. Claude Code를 시작한 다음 로그인 세션 복사본을 제거하세요. 이미 실행 중인 앱은 플러그인 하위 프로세스를 위해 복사본을 유지합니다:
launchctl unsetenv OPENROUTER_API_KEY플러그인을 설치하거나 업그레이드한 후, 또는 키를 변경한 후에는 Claude Code를 완전히 종료하고 새 Claude Code 세션을 시작하세요. 플러그인 리로드는 코드 변경을 반영할 수 있지만 실행 중인 호스트가 상속한 환경은 변경할 수 없습니다.
Claude 플러그인은 uv run --directory ${CLAUDE_PLUGIN_ROOT} quorum-mcp로 MCP 서버를 시작하므로 uv와 Python 3.13+가 PATH에 있어야 합니다.
Codex:
공개 마켓플레이스를 등록하고 플러그인을 설치하세요:
codex plugin marketplace add sdewell/code-quorum --ref main
codex plugin add code-quorum@code-quorum
codex plugin listChatGPT 데스크톱 앱의 경우 마켓플레이스를 등록한 후 앱을 완전히 종료하고 다시 여세요. Plugins를 열고 Personal을 선택한 다음 Code Quorum을 선택하고 Install을 클릭하세요.
Codex 표면 중 하나가 플러그인을 설치한 후 실제 터미널에서 안정적인 체크아웃을 준비하세요:
uv sync
uv run quorum install-seat-helper-launchagent
uv run quorum seat-helper-statusCodex 런처는 해당 체크아웃의 준비된 .venv를 직접 시작합니다. 따라서 MCP 시작은 쓰기 가능한 uv 캐시, 네트워크 다운로드 또는 교체 가능한 플러그인 디렉터리 내부의 환경에 의존하지 않습니다. 이후 업그레이드의 경우 한 명령으로 체크아웃, 플러그인, 환경, 승인 및 헬퍼를 새로 고칩니다:
uv run quorum update-codex그 후 Codex를 완전히 다시 시작하고 새 스레드를 시작하세요. 이전 체크아웃에 update-codex가 아직 없으면 SECURITY.md의 일회성 레거시 시퀀스를 사용하세요.
Codex CLI에서 /hooks를 열어 각 code-quorum 명령 후크를 검토하고 신뢰하세요. Codex는 각 현재 정의 해시가 신뢰될 때까지 플러그인 후크를 건너뜁니다. 변경된 정의는 해당 변경된 정의에 대해 재검토 및 신뢰가 필요합니다.
생성된 런처는 최소 PATH를 가진 데스크톱 앱을 위해 표준 사용자 및 Homebrew 바이너리 디렉터리(~/.local/bin, ~/.opencode/bin, /opt/homebrew/bin, /usr/local/bin)를 복구합니다.
Codex CLI의 경우 Codex를 시작하기 전에 키 환경을 소싱하세요. ChatGPT 데스크톱 앱의 경우 현재 macOS 로그인 세션에서 키를 설정하세요:
source ~/.zshrc.local
launchctl setenv OPENROUTER_API_KEY "$OPENROUTER_API_KEY"값은 제거될 때까지 이후에 시작되는 모든 애플리케이션에 표시됩니다. Codex를 시작한 다음 로그인 세션 복사본을 제거하세요. 실행 중인 앱은 이미 상속한 값을 유지합니다:
launchctl unsetenv OPENROUTER_API_KEY플러그인 업그레이드 또는 키 변경 후 Codex를 완전히 종료하고 다시 열고 완전히 새로운 Codex 스레드를 시작하세요. 다시 시작 전에 생성된 스레드를 재개하지 마세요. 해당 도구 레지스트리가 이전 플러그인 프로세스를 참조할 수 있습니다.
승인 보존 업데이트의 경우 일반 경로로 codex plugin remove를 사용하지 마세요. SECURITY.md의 검증된 시퀀스를 따르세요.
설계
ARCHITECTURE.md는 공유 CLI/MCP 스파인, 시트 어댑터, 라운드 모델, 반편향 메커니즘, 패키징 및 실패 경계를 설명합니다. 간단히 말하면: 1라운드에는 피어 출력이 없고, 이후 라운드는 피어를 입장별로 익명화하며, 호스트는 q_await까지 평의회 매트릭스를 받지 않습니다.
기여
다음 프로젝트가 워크플로 형태에 영감을 주었습니다. 코드, 프롬프트 또는 문서는 복사되지 않았습니다:
SnakeO/claude-co-commands - 피어 출력 전의 독립 호스트 작업.
agentic-box/owlex - 다중 에이전트 평의회 아키텍처 및 인지 역할.
karpathy/llm-council - 모델 정체성보다 내용에 기반한 익명 피어 리뷰.
라이선스
MIT.
Available Tools
6 toolsq_awaitA
Block until the background council run identified by job_id
completes, then return its rounds markdown. One-shot — a job_id
can only be awaited once.
This is the blocking completion notification for every council start. The orchestrating host must not end its turn with a live job outstanding; it calls q_await after its independent work and remains blocked until this tool returns a result or error.
Errors:
job_id not found (expired, already retrieved, or invalid) → ValueError with the reason.
job cancelled by TTL or server shutdown → ValueError.
underlying council error → propagated.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to rely on, the description carries the full burden and does so thoroughly. It discloses that the tool blocks until completion or error, that it is one-shot (a job_id can only be awaited once), and enumerates all error scenarios (job not found, TTL cancellation, server shutdown, underlying council errors). It also conveys the operational expectation that the host must not end its turn with an outstanding job. This goes far beyond a minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly structured: the first sentence delivers the core purpose, the second paragraph provides usage context, and a bulleted list covers errors. Every sentence earns its place; there is no fluff. The information is front-loaded with the most critical fact (blocking behavior) stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers what an agent needs to know to call this tool correctly: it explains the blocking nature, the one-shot constraint, the exact error outcomes, and the return value (rounds markdown). An output schema exists, so detailed return formatting is not required. There is no missing information that would prevent correct invocation or interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter `job_id` has zero schema description, so the description must compensate. It does by explaining that the job_id identifies the background run, and the error section clarifies what happens if the id is invalid (expired, already retrieved, or invalid). It stops short of specifying a format (e.g., UUID), but since a valid id comes from a sibling start tool, this is sufficient for the agent to understand its role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Block'), a clear resource ('background council run identified by job_id'), and an outcome ('return its rounds markdown'). It distinguishes itself from the sibling start tools (q_plan_start, q_brainstorm_start, etc.) as the blocking completion counterpart, so an agent can immediately tell what this tool does and how it differs from its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that this is 'the blocking completion notification for every council start' and gives a clear directive: 'The orchestrating host must not end its turn with a live job outstanding; it calls q_await after its independent work.' It also warns that it is one-shot, leaving no ambiguity about when and how to use it. No alternative tools are mentioned, but the context of siblings being all start tools makes the usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
q_brainstorm_startA
Start a q-brainstorm run in the background. Returns {"job_id":
str} immediately. Each agent contributes 3-5 distinct ideas with
rationale, trade-offs, and the cheapest test that would give signal;
no synthesis. Retrieve results by calling q_await with the
returned job_id.
Between the start and the await, the caller is expected to list its own ideas — this is the structural anti-bias gate.
research, when supplied, seeds round 1 with a q_research digest as
EVIDENCE: agents are told to ground their ideas in it, recombine it, or
extend past it. Pass the raw digest markdown (verbatim from q_research) --
never your own summary of it, and never your own ideas; those stay behind
the anti-bias gate. Distinct from prior_ideas, whose do-not-repeat
framing marks content to diverge AWAY from.
prior_ideas, when supplied, seeds a divergence round: the agents are told
the listed ideas are already on the table and must not be repeated -- used
by the --extended flow to push past round 1. Composes with research
(evidence stays evidence; ideas stay do-not-repeat).
grounding, with prior_ideas, runs a validation-guide pass over the
listed ideas instead of diverging past them -- used by q-skystorm
Stage 2.
Optionally assign a cognitive stance per agent via roles, a list
of 'stance:agent' strings (stances: skeptic, architect, security,
maintainer, analyst, neutral, visionary, pioneer). Unassigned agents
use their default stance.
gemini_model, when supplied, runs the gemini seat on that agy model for
this invocation only (an id exactly as printed by agy models, e.g.
'claude-opus-4-6-thinking').
Expected wall-clock to completion: 30s-4min depending on the agents and topic complexity.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | ||
| host | No | ||
| roles | No | ||
| topic | Yes | ||
| agents | No | ||
| skip_gh | No | ||
| verbose | No | ||
| research | No | ||
| grounding | No | ||
| no_context | No | ||
| prior_ideas | No | ||
| gemini_model | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers comprehensively. It discloses the async nature (runs in background, returns job_id immediately), the output format, the expected timing (30s-4min), and the behavioral constraints (agents contribute 3-5 ideas, no synthesis, anti-bias gate). It also explains the semantic difference between research and prior_ideas. No behavioral aspect is left opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-organized into focused paragraphs. It front-loads the core behavior and return type, then explains each optional parameter and composition. Each paragraph earns its place, but the length is near the upper bound of acceptable. It is structured rather than rambling, so it scores a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (12 params, no schema coverage, no annotations, and an output schema), the description covers the essential workflow and the most impactful parameters. It explains the anti-bias gate, the difference between research and prior_ideas, and the grounding pass. Missing: descriptions of verbose, skip_gh, no_context, host, and a few error-handling details, but those are minor. It is nearly complete for a working understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It does explain the significant ones: research, prior_ideas, grounding, roles, gemini_model. However, it omits explanations for agents, skip_gh, verbose, no_context, host, and even cwd/topic are only implicit. For a tool with 12 parameters, the description adds value but leaves several parameters undocumented, forcing the agent to infer from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Start a q-brainstorm run'), states the async behavior, and names the sibling tools it complements (q_await, q_research). It clearly distinguishes this from q_plan_start, q_validate_start, etc., and explains the composition with q_research and q_await. An agent can immediately understand what this tool does and how it fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Between the start and the await, the caller is expected to list its own ideas — this is the structural anti-bias gate.' It also names alternatives and conditions: 'Distinct from prior_ideas, whose do-not-repeat framing...' and mentions specific flows like '--extended' and 'q-skystorm Stage 2' that select the grounding mode. This is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
q_plan_startA
Start a q-plan run in the background. Returns {"job_id": str}
immediately. The current host's external seats run in parallel from a
structurally bias-free starting point. Retrieve results by
calling q_await with the returned job_id.
Between the start and the await, the caller is expected to form its own plan — this is the structural anti-bias gate.
Optionally assign a cognitive stance per agent via roles, a list
of 'stance:agent' strings (stances: skeptic, architect, security,
maintainer, analyst, neutral, visionary, pioneer). Unassigned agents
use their default stance.
gemini_model, when supplied, runs the gemini seat on that agy model for
this invocation only -- an id exactly as printed by agy models, e.g.
'claude-opus-4-6-thinking' to get a Claude answer from the same AI Pro
plan when Gemini quota is tight or a different perspective is wanted.
Expected wall-clock to completion: 30s-4min depending on the agents and codebase size.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | ||
| host | No | ||
| task | Yes | ||
| roles | No | ||
| agents | No | ||
| skip_gh | No | ||
| verbose | No | ||
| no_context | No | ||
| gemini_model | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses background execution, immediate return, parallel seats, bias-free starting point, the anti-bias gate, optional role assignment, gemini_model substitution, and expected wall-clock time. It does not explicitly state side effects or permissions, but the behavior is largely transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a coherent paragraph with clear sections: execution model, the anti-bias gate, roles, gemini_model, and timing. It is somewhat verbose (e.g., 'structurally bias-free') but every sentence adds useful information and is appropriately front-loaded with the core behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, no annotations, and an output schema, the description covers the high-level workflow and two parameters but omits critical invocation details like the meaning of 'cwd', 'task', 'host', 'agents', 'skip_gh', and 'no_context'. An agent would struggle to invoke it correctly without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains 'roles' (format and defaults) and 'gemini_model' (format and purpose), but ignores the other 7 parameters including required ones like 'task' and 'cwd'. With 0% schema description coverage, the description must compensate, but it covers only about 22% of parameters, leaving most ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a q-plan run in the background, returns a job_id immediately, and explains the anti-bias gate. It is distinct from siblings like q_brainstorm_start or q_validate_start by its explicit focus on structural anti-bias and the background execution model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete workflow guidance: start the run, then call q_await with the job_id, and it emphasizes the anti-bias gate as a reason to use this tool. However, it does not explicitly say when not to use it or contrast with alternative start tools like q_brainstorm_start.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
q_researchA
Fetch prior art for a topic from arXiv + OpenAlex + Europe PMC (papers), Context7 (library docs), GitHub (repos), and HuggingFace (models), and return a markdown digest.
Europe PMC covers the life-sciences preprint tier arXiv does not carry -- bioRxiv, medRxiv, Research Square -- so it is the source that earns its slot on biology/medicine topics and returns 0 on pure-software ones. Its hits are labelled by preprint server ("bioRxiv") and are NOT peer-reviewed; weigh them accordingly.
Not subject to the council's anti-bias gate -- this is external prior art,
not peer output. Call it during the own-work window of a q_brainstorm
or q-skystorm run to ground the synthesis. sources defaults to all
six; pass a subset like ["arxiv", "openalex"] to restrict it.
Query shaping matters: pass a query that is SHORT and distinctive --
short is not the same as generic. Anchor it in 2+ domain-specific terms (the
field PLUS the specific method/concept), never a bare common word ('data',
'model', 'network') or a token that doubles as an author surname -- those
keyword-match unrelated work (author names, generic surveys, stray docs) and
return non-zero but OFF-TOPIC noise -- sanity-check that returned titles
belong to your domain, and if they are off-topic the query was too generic:
re-anchor with more domain context and call q_research again rather than
leaning on them. (This same-domain check assumes you want grounding in
your own field -- if you are deliberately hunting cross-domain structural
analogies instead, judge a hit by structural kinship to the problem, not
literal subject-matter overlap; an off-domain hit is then the find, not
noise.) Not a full paragraph either. Per source: arXiv parses
topic as a boolean field -- a long/diffuse query loose-matches to
famous-but-irrelevant papers, and boolean punctuation (parens, AND/OR,
quotes) triggers a 400; OpenAlex tolerates prose but length dilutes
relevance to generic surveys; Context7 wants a library/topic name and will
keyword-match off-topic repos; GitHub/HuggingFace are popularity-ranked
artifact searches that whiff on non-software/non-ML topics. The digest's
per-source count footer shows which sources whiffed -- rework and retry
those, unless the 0 is domain-legitimate (GitHub/HuggingFace on a
non-software topic, Europe PMC on a non-biology one, Context7 on a topic
with no matching library), which is a real answer, not a gap to close.
Treat every other digest result as provisional until it earns trust: a 0 that is NOT one of the domain-legitimate cases above is not automatically "no prior art" either (it may just be a bad query), and non-zero hits that read scattered or off-topic are not evidence -- both are a signal to reframe (sharper domain anchor, fewer/different terms) and retry, not something to build a conclusion on.
Failed sources are reported inline under 'Sources unavailable' rather than failing the call -- each with a retry hint, and the right move differs by error. An errored source is almost never a dead backend: an arXiv error (400) means YOUR query is too long or has boolean punctuation, so shorten it to a few keywords, strip operators, and call q_research again; a 401/403 or an OpenAlex 503 is a CONFIG case, not a flake -- the key was rejected, or OpenAlex is load-shedding anonymous search, so a bare retry just loops (set the source's key -- OPENALEX_API_KEY is free -- or lean on the other sources and say so); only a plain timeout/flake is transient and worth retrying as-is. Do NOT report a source unavailable, and do NOT fall back on your own knowledge, until a reworked retry has ALSO failed -- treating the first error as terminal is the failure to avoid. Bounded by per-request timeouts (~10-15s each); the GitHub and HuggingFace backends fan out one request per distinctive query term (up to 4), run sequentially, so those two sources' wall-clock can reach a few times that.
The digest OPENS with a deterministic Research status: line -- OK,
RETRY-RECOMMENDED (USUALLY with a server-suggested shorter query to resubmit
verbatim, shown as · try: "..."; when it is ABSENT the detail text says what
to do, and the two absent cases differ -- a backend/infrastructure failure
says RETRY THE SAME query, while an un-shortenable query says RE-ANCHOR with
different domain terms), CONFIG (a key/anonymous-access problem no retry
fixes), or (in exploratory mode) LOW-OVERLAP. Act on it before anything else:
on RETRY-RECOMMENDED, resubmit the suggested query if one is given, else
follow the detail (retry the same query on an infrastructure failure, or
re-anchor with different domain-specific terms if it cannot be shortened) --
before concluding "no prior art". Mechanically-fixable failures (arXiv 400, a
transient flake) are already retried inside the tool -- a repaired source
shows a ↻ note, so a first-attempt error you never see was handled, not
hidden.
mode is 'grounded' (default; brainstorm -- home-domain grounding, where a
low-overlap result is a defect the verdict flags RETRY-RECOMMENDED) or
'exploratory' (skystorm -- a deliberate cross-domain method pivot, where low
overlap is expected and reported as LOW-OVERLAP without forcing a retry).
Exploratory mode also adds a ### Field map section (the OpenAlex
subfield distribution for the query) showing which fields the method
actually spans -- the skystorm topology readout. Query discipline is
identical in both modes; only the low-overlap interpretation differs.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | grounded | |
| limit | No | ||
| topic | Yes | ||
| sources | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it excels. It discloses internal retries ('Mechanically-fixable failures ... are already retried inside the tool'), error handling ('Failed sources are reported inline under 'Sources unavailable' rather than failing the call'), response format (markdown digest with a 'Research status:' line), per-source behaviors, and the distinction between domain-legitimate zero results and gaps. This level of transparency exceeds typical tool descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very long but well-organized, front-loading the core purpose and then progressing into usage, error handling, and modes. Each paragraph serves a distinct function, yet some sections (e.g., the extended discussion of same-domain vs cross-domain checks) are arguably more detailed than necessary for an agent to invoke the tool. It is concise relative to its complexity but could be tightened without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers every aspect an agent needs: what it returns (markdown digest, status line), how to interpret results (RETRY-RECOMMENDED, CONFIG, LOW-OVERLAP), error handling with specific retry guidance, per-source whiffing logic, mode differences, and query-shaping best practices. Even with an output schema (not shown), this description is entirely self-sufficient given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description explains the `topic` (query shaping), `sources` (defaults, subset pass), and `mode` (grounded vs exploratory) parameters in depth. However, the `limit` parameter is never mentioned – its purpose and effect on output are not explained. Since the schema provides no help, this is a noticeable gap, though the description compensates well for the other three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: 'Fetch prior art for a topic from arXiv + OpenAlex + Europe PMC (papers), Context7 (library docs), GitHub (repos), and HuggingFace (models), and return a markdown digest.' This clearly distinguishes the tool from its siblings (planning, brainstorming, validation, review, await) by focusing on external prior-art retrieval. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use instructions: 'Call it during the own-work window of a `q_brainstorm` or `q-skystorm` run to ground the synthesis.' It also provides query-shaping rules, mode interpretation ('grounded' vs 'exploratory'), error-handling strategies, and when not to trust results. Since there are no sibling research tools, it doesn't contrast with alternatives, but it provides rich contextual guidance on exactly when and how 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.
q_review_startA
Start a q-review run in the background. Returns {"job_id": str}
immediately. Each agent independently reviews real code changes, then
converges across rounds. Round 1 is structurally bias-free; later rounds
embed each agent's own prior plus peers' priors so sustained agreement
becomes visible. Retrieve results by calling q_await with the returned
job_id.
Between the start and the await, the caller is expected to form its own code review of the diff — this is the structural anti-bias gate.
target selects what to review (default: branch vs main, committed +
uncommitted). 'working' = uncommitted tracked changes only; 'pr:N' or a
github PR URL = an open PR (title/body orient the review); 'A..B'/'A...B'
= an explicit range; 'all' = the whole codebase (agents read cwd — pair
with scope_path). An empty diff (other than 'all') short-circuits: the
job returns a 'nothing to review' message without running the council.
scope_path, when supplied, points at a scope doc declaring what is
in/out-of-scope and which risks are accepted; it is embedded verbatim so
the council does not converge on out-of-bounds findings.
extended runs 4 rounds with a stance rotation at round 3 (agents swap
stances and re-examine all priors); the default is 2 rounds with no
rotation. mode is 'revise' (agents soften/strengthen in light of peers)
or 'critique' (agents attack peer points).
verbose defaults to false: the council writes terse output (no padding,
path:line over pasted code, and later rounds collapse each still-held
finding to one HELD line while preserving the agreement count). Set true
only when you want the full unabridged deliberation — a much larger matrix.
Optionally assign stances per agent via roles, a list of 'stance:agent'
strings (stances: skeptic, architect, security, maintainer, analyst,
neutral, visionary, pioneer).
gemini_model, when supplied, runs the gemini seat on that agy model for
this invocation only (an id exactly as printed by agy models, e.g.
'claude-opus-4-6-thinking').
Expected wall-clock to completion: 1-8min default; 4-15min when extended=true. Pick extended deliberately.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | ||
| host | No | ||
| mode | No | revise | |
| roles | No | ||
| agents | No | ||
| target | No | ||
| skip_gh | No | ||
| verbose | No | ||
| extended | No | ||
| no_context | No | ||
| scope_path | No | ||
| gemini_model | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and it delivers richly. It discloses that the call returns immediately instead of blocking (async job), gives expected wall-clock timing (1-8min default, 4-15min extended), spells out the empty-diff short-circuit that returns a 'nothing to review' message without running the council, details verbose output behavior (HELD lines, agreement counts), and explains the stance rotation at round 3 for extended mode. This far exceeds baseline 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every paragraph earns its place for a 12-parameter async background tool. It is front-loaded with purpose and the return contract, then flows logically through the anti-bias gate, target values, scope, execution modes, output verbosity, and timing. The final timing note is a genuine value-add. It could be tightened slightly, but the length is justified by complexity rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool of this complexity — 12 params, async behavior, background execution, no annotations, 0% schema coverage — the description is remarkably complete, covering the workflow, the caller's required participation (anti-bias gate), short-circuit behavior, per-parameter semantics, and timing expectations. The output schema exists so return values need no further explanation, and job_id is already surfaced. The only completeness gap is the five undocumented parameters (agents, skip_gh, no_context, host, cwd) that the description leaves to the schema, which is empty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does for the majority. target gets a detailed breakdown of every value ('working', 'pr:N'/URL, 'A..B'/'A...B', 'all', default branch-vs-main), and scope_path, extended, mode, verbose, roles, and gemini_model are each explained. However, five of the twelve parameters (cwd, host, agents, skip_gh, no_context) are not touched in the description and, with zero schema descriptions, remain entirely undocumented — a real gap for a tool where agents and skip_gh likely matter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource — "Start a q-review run in the background. Returns {"job_id": str} immediately" — and explains the mechanism (independent agent review then convergence across rounds). This clearly distinguishes a review tool from its siblings q_plan_start, q_brainstorm_start, and q_validate_start, which by naming convention cover different activities. No ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong usage context: it is for reviewing real code changes, and it explicitly routes retrieval to a sibling — "Retrieve results by calling `q_await` with the returned job_id" — which orients the agent within the family of q_* tools. It also defines the structural anti-bias gate the caller must pass between start and await. However, it never explicitly states when NOT to use this tool versus q_validate_start or the other review siblings; exclusions are 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.
q_validate_startA
Start a q-validate run in the background. Returns {"job_id":
str} immediately. Each agent independently reviews the plan file,
then deliberates across rounds. Round 1 is structurally bias-free;
later rounds embed each agent's own prior plus peers' priors.
Retrieve results by calling q_await with the returned job_id.
Between the start and the await, the caller is expected to form its own review — this is the structural anti-bias gate.
extended runs 4 rounds with a stance rotation at round 3 (agents
swap stances and re-examine all priors); the default is 2 rounds
with no rotation. mode is 'revise' (agents soften/strengthen in
light of peers) or 'critique' (agents attack peer points).
verbose defaults to false: the council writes terse output (no padding,
path:line over pasted code, later rounds omit restating unchanged points).
Set true only for the full unabridged deliberation — a much larger matrix.
Optionally assign stances per agent via roles, a list of
'stance:agent' strings (stances: skeptic, architect, security,
maintainer, analyst, neutral, visionary, pioneer).
gemini_model, when supplied, runs the gemini seat on that agy model for
this invocation only (an id exactly as printed by agy models, e.g.
'claude-opus-4-6-thinking').
Expected wall-clock to completion: 1-8min default; 4-15min when extended=true. Pick extended deliberately.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | ||
| host | No | ||
| mode | No | revise | |
| roles | No | ||
| agents | No | ||
| skip_gh | No | ||
| verbose | No | ||
| extended | No | ||
| plan_path | Yes | ||
| no_context | No | ||
| gemini_model | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It comprehensively explains the background execution, immediate return of job_id, the bias-free first round and later rounds embedding priors, the extended mode's 4 rounds and stance rotation, the verbose output toggle, and the gemini_model override for this invocation. It also discloses expected wall-clock times and the anti-bias gate expectation, making the tool's behavior highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but well-structured, front-loading the core behavior and return value before diving into options. It uses clear paragraphs and imperative sentences that earn their place. While somewhat long, the length is justified by the tool's complexity, and it could be slightly more concise without losing essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, no schema descriptions), the description covers the main workflow and several key parameters, and provides expected wall-clock times. However, it omits explanations for critical parameters like plan_path and cwd, and does not clarify the exact output format beyond job_id (though q_await likely handles results). The description is strong on purpose and behavior but incomplete in parameter coverage, so it is not fully complete for an agent to confidently invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter documentation. It explains extended, mode, verbose, roles, and gemini_model in detail, but leaves essential parameters like plan_path, cwd, host, agents, skip_gh, and no_context unexplained. The required plan_path is only referred to generically as 'plan file', which is insufficient for an agent to know exactly what to provide. The description only partially covers the 11 parameters, making parameter semantics incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it starts a q-validate run in the background and returns a job_id immediately. It describes the process of agents reviewing the plan file and deliberating, which distinguishes it from sibling tools like q_plan_start, q_brainstorm_start, and q_review_start. The tool's purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on retrieving results via q_await with the returned job_id and explains the structural anti-bias gate that the caller should form its own review between start and await. It also advises when to use extended mode ('Pick extended deliberately') and explains the default vs extended rounds. However, it does not explicitly contrast this tool with sibling start tools, relying on tool names for differentiation.
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.
6 tool updates
v0.0.63- First observed
q_await - First observed
q_brainstorm_start - First observed
q_plan_start - First observed
q_research - First observed
q_review_start - First observed
q_validate_start
TDQS
Scored across 6 tools
Each tool has a clearly distinct function: planning, brainstorming, validation, code review, research, and result retrieval. There is no overlap in purpose; descriptions reinforce the boundaries.
All tools follow a uniform 'q_' prefix with an action verb (plan_start, brainstorm_start, validate_start, review_start, research, await). The two non-start tools still share the prefix and verb style, making the pattern predictable.
Six tools is well-scoped for a code-quality council suite: four distinct run types plus research and a blocking retrieval. Each tool earns its place without redundancy or bloat.
The core lifecycle (start runs, retrieve results) is fully covered, and research supports the workflow. Minor gaps exist—no job-listing or cancellation tool—but agents can work around them by awaiting each job, so the surface remains practical.
Maintenance
Related MCP Connectors
- ParleyOAuthdev.weldra
Coordination hub for AI coding agents: message teammates, ask humans, audit every event.
Multi-LLM council: 25+ frontier models in parallel, consensus scoring, verdict-first code review.
Shared control plane for AI coding agents — tasks, memory, decisions, file locks. 12 tools.
AI work orchestration for plans, tasks, teams, and coding-agent dispatch.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to read each other's conversation history read-only and sanitized, so you can continue work across different tools without re-explaining context.MIT
- FlicenseNot gradedqualityDmaintenanceAllows users to manage multiple remote AI coding agents from a single Claude Code session, with a controlled execution model where operations require moderator approval.-
- AlicenseNot gradedqualityAmaintenanceEnables multi-model LLM council reviews and parallel sidecar conversations within Claude, allowing Claude to orchestrate structured reviews from various AI models and fold their responses back into the session.449 npm2MIT
- FlicenseAqualityAmaintenanceEnables coding agents to perform workspace-confined file operations, read-only Git inspection, and structured shell commands, while requiring out-of-band human approval for mutations and external executions and maintaining an audit trail.143-