Skip to main content
Glama

manifestation-mcp

코딩 에이전트가 **설계 우선(design-first)**으로 동작하게 만드는 MCP 서버입니다. 무언가를 만들고 싶은 순간, 코드로 바로 뛰어들지 않고 한 걸음 물러서서 인터뷰를 하며, 스펙을 끌어내 **소화하기 쉬운 덩어리(chunk)**로 다시 보여줍니다. 그리고 사용자의 승인을 한 입 크기의 레드/그린 TDD 계획으로 바꾼 뒤, 서브에이전트 기반 개발 루프(구현자 → 검토자 → 품질 게이트)를 실행해 그 계획을 스스로 끝까지 진행하게 합니다.

이식 가능한 Python MCP 서버입니다. 서버가 두뇌(5단계 상태 머신 + 스펙/계획 + 스킬 라이브러리) 역할을 하고, Claude Agent SDK를 통해 자체 서브에이전트를 내부에서 실행합니다. 따라서 run 호출 하나만으로도 계획에서 벗어나지 않고 오랜 시간 자율적으로 작업할 수 있습니다.

다섯 가지 단계

DISCOVERY  → interview you; do NOT write code
SPEC       → draft a spec; sign off chunk-by-chunk
PLAN       → bite-sized red/green TDD task list (YAGNI, DRY)
EXECUTE    → per task: implementer subagent → reviewer subagent → gate
DONE       → artifacts left under .manifestation/ in your repo

상태는 대상 저장소에서 검사 가능한 파일로 존재합니다: <repo>/.manifestation/<project-id>/{state.json, spec.md, plan.md}.

Related MCP server: Spec Guard

요구 사항

  • Python 3.10+

  • uv (brew install uv)

  • 라이브 실행(run)에는 PATH에 Claude Code CLI가 있어야 하며 Claude 자격 증명(ANTHROPIC_API_KEY 또는 기존 Claude Code 로그인)이 필요합니다. Agent SDK가 이를 통해 구현자/검토자 서브에이전트를 실행합니다.

  • 대상 저장소에 git — TDD 게이트가 git worktree를 사용해 실제로 실패하는 테스트가 구현보다 먼저 존재했는지 검증합니다.

설정

cd manifestation-mcp
uv sync
uv run pytest        # 96 tests, no network required (1 live smoke skipped)

실행

권장 로컬 런처(uv의 editable-install 문제점에 견고함):

uv run python run_server.py

Claude Code에 등록합니다:

claude mcp add manifestation -- uv run --project /ABS/PATH/TO/manifestation-mcp python /ABS/PATH/TO/manifestation-mcp/run_server.py

(uvx/pipx로 패키지 설치를 한 경우 manifestation-mcp 콘솔 스크립트를 직접 사용할 수 있습니다.)

자동 트리거 (선택)

skill-shim/SKILL.md를 Claude Code 스킬(예: ~/.claude/skills/manifestation/SKILL.md)로 복사하세요. 이 설명은 "build / implement / add a feature" 같은 요청이 있을 때 발동되어 워크플로우가 스스로 시작됩니다. 따로 호출할 필요가 없습니다. 이 스킬이 없다면 /manifestation 프롬프트를 사용하거나 start_project 도구를 호출해 수동으로 시작하면 됩니다.

도구

도구

하는 일

start_project(brief, repo_path)

프로젝트를 생성하고(저장소 경로 검증), 인터뷰 질문을 반환합니다.

submit_answers(project_id, answers)

답변을 받아 추가 질문을 하거나 SPEC 단계로 진행합니다.

next_spec_chunk(project_id)

검토할 다음 스펙 청크(크기 제한)를 반환합니다.

review_spec_chunk(project_id, decision, feedback?)

청크에 대해 approve / revise 결정을 내립니다.

make_plan(project_id)

저장소를 고려한 TDD 계획을 생성하고 전체 작업 내용을 반환합니다. 실행은 시작하지 않습니다.

approve_plan(project_id)

사용자 승인을 기록하고 EXECUTE 단계로 진행합니다.

run(project_id, until?, max_agent_calls?, max_budget_usd?)

서버가 검증하는 TDD 게이트가 포함된 서브에이전트 루프입니다. 각 단계마다 체크포인트를 남기고 진행 상황을 스트리밍하며 agent_calls/cost_usd를 보고합니다.

reset_task(project_id, task_id)

BLOCKED 작업을 해제해 run이 다시 시도할 수 있게 합니다.

status(project_id) / list_projects()

진행 상황(작업별 시도 횟수, 발견 사항, 승인 상태)을 확인합니다.

프롬프트: /manifestation <brief>. 리소스: skills://all, skill://<name>.

모델 선택

날짜가 있는 특정 모델에 하드코딩된 것은 없습니다. 기본적으로 서버는 Claude Code CLI에 설정된 모델을 상속합니다. 전역적으로는 MANIFESTATION_MODEL 환경 변수(예: MANIFESTATION_MODEL=claude-opus-5)로 덮어쓰고, 코드에서는 AgentSDKClient(model=...)로 호출 단위로 다르게 지정할 수 있습니다.

안전 모델 (run 사용 전에 읽으세요)

run은 저장소에서 실제 서브에이전트를 실행하므로 신뢰 경계를 이해하세요:

  • **구현자(implementer)**는 쓰기 권한과 Bash를 갖습니다. 이것은 대상 저장소에서 의도적으로 임의 코드를 실행하는 것이므로, 신뢰할 수 있는 저장소에서만 실행하고 신뢰할 수 없는 작업에는 컨테이너/VM을 사용하세요. 샌드박스는 없습니다.

  • **검토자(reviewer)**와 **플래너(planner)**는 다음 두 가지 방식으로 읽기 전용입니다. SDK의 변형 도구가 disallowed_tools에 들어 있고, 또한 can_use_tool 권한 콜백이 허용 목록에 없는 모든 도구 — 우리가 열거하지 않은 도구(WebFetch, Task, MCP 도구)까지 포함 — 를 거부합니다.

  • TDD는 텍스트로 신뢰하는 것이 아니라 서버 측에서 확인됩니다. 구현자가 실행된 후, 서버는 작업이 명시한 테스트 명령을 직접 실행합니다. 이 명령은 HEAD에서 성공해야 하며(실제 GREEN), 구현자의 테스트 전용 커밋(HEAD~1)을 대상으로 재실행하면 반드시 실패해야 합니다(실제 RED). 조작하거나 순서를 바꾼 증거는 잡아내며, git/테스트가 확인할 수 없을 때는 실패 처리합니다.

  • 후속 발견 사항이 남은 채 PASS 판정이 나면 모순으로 처리되어 작업이 실패합니다.

  • run은 승인된 플랜이 필요하고 각 단계마다 체크포인트를 남기며, 크래시 난 시도는 처음부터 다시 실행하지 않고 검토 단계부터 이어서 구현자 실행을 다시 하지 않으므로 편집이 중복되지 않습니다. 또한 **감사 추적(audit trail)**을 유지하며 항상 한도가 정해져 있습니다 — max_agent_calls / max_budget_usd(둘 다 MCP로 지정 가능) 또는 기본 내장 한도를 사용합니다.

  • 변이(mutating) 도구 호출은 프로젝트별로 프로세스 내부 잠금과 프로세스 간 파일 잠금으로 직렬화됩니다.

  • brief/답변/spec을 통한 프롬프트 주입은 여전히 서브에이전트 프롬프트로 흘러 들어갈 수 있습니다. 프로젝트 입력은 신뢰할 수 없는 것으로 취급하세요.

그것이 정직함을 지키는 방법(그리고 테스트 가능하게 하는 법)

모든 LLM 상호작용은 하나의 주입 가능한 접점(LLMClient)을 거쳐 갑니다. 단위 테스트에서는 FakeLLMClient를 주입하므로 상태 머신 전체 — 발견, 양식 작성, 계획 생성, 재시도와 검토 게이트가 있는 실행 루프까지 — 를 네트워크 호출 없이 검증합니다. 실제 AgentSDKClient는 그 접점 뒤에 있으며 기능을 선택한 라이브 스모크 테스트에서만 실행됩니다.

아키텍처

src/manifestation_mcp/
  server.py     # MCP tools/prompts/resources (thin wiring)
  state.py      # Project/Phase/Task model + file persistence + registry
  llm.py        # LLMClient seam: FakeLLMClient (tests) + AgentSDKClient (real)
  agents.py     # implementer / reviewer / planner subagent presets
  runner.py     # CommandRunner seam: SubprocessRunner (real) + FakeCommandRunner
  phases/       # discovery, spec, plan, execute, verify (server-side TDD check)
  skills/       # bundled Markdown skills, injected into subagent prompts
run_server.py   # bulletproof local launcher
skill-shim/     # optional Claude Code auto-trigger skill

Available Tools

11 tools
approve_planA

Record the user's approval of the generated plan and advance to EXECUTE.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

TDQS

A3.8/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 reveals that this is not read-only (records approval and advances state), but it does not disclose side effects on the plan, reversibility, permissions required, or failure conditions. For a simple state transition, this is minimal but 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 a single, compact sentence that front-loads the core action and outcome. It contains no redundant wording, filler, or unnecessary detail.

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 the tool is simple (1 param, no output schema, no annotations), the description provides the essential purpose and progression but omits parameter semantics and preconditions (e.g., that a plan must already exist). An agent might call it without full context, so it is only minimally complete.

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

Parameters2/5

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

The schema has 0% description coverage, and the description does not explain the project_id parameter at all. The name is self-explanatory, but the description gives no context about how project_id relates to the plan or the approval process. This forces the agent to rely on schema type alone, which is insufficient.

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 states a specific action (record user's approval) and resource (generated plan), plus the outcome (advance to EXECUTE). It clearly distinguishes from siblings like make_plan (create plan) and run (execute), even without naming them, by specifying the transition trigger.

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 clearly implies when to use it: when the user approves the generated plan. The phrase 'advance to EXECUTE' signals it is the step before execution. However, it does not explicitly mention alternatives or exclusions, so the agent must infer the context from sibling names.

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

healthA

Liveness check. Returns the server name and version.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 full burden. It discloses the return value (server name and version), which is the main behavioral output, but it does not explicitly state that the operation is read-only, has no side effects, or requires no authentication. For a liveness check this is a minor gap, but still leaves the safety profile implicit.

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 states the purpose and the return value with zero waste. Every word earns its place, and there is no superfluous content.

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 zero-parameter, no-output-schema tool, the description is completely sufficient. It tells the agent what the tool does, what it returns, and there are no missing elements required for correct invocation. The simplicity of the tool justifies the brevity.

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?

With zero parameters, the schema adequately covers everything, and the baseline is 4. The description adds no parameter details, but none are needed. It correctly avoids content that would be redundant.

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 verb ('Liveness check') and resource (the server), and specifies the return value (server name and version). It is unambiguous and distinct from sibling tools like 'status', which implies overall state rather than a dedicated liveness probe.

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 purpose implies usage—call it to verify the server is alive—but there is no explicit guidance on when to use it versus alternatives, nor exclusions. For a zero-parameter health check, the implied usage is sufficient, but it falls short of the explicitness seen in top-tier definitions.

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

list_projectsA

List all known Manifestation projects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/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 of behavioral disclosure. It clearly implies a read-only listing operation, but does not mention any potential side effects, limitations, or response specifics such as pagination or return format. For a simple zero-parameter list, this is adequate, though 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 a single, clear sentence with no unnecessary words. It is front-loaded and concise, exactly meeting the standard for conciseness.

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 zero-parameter complexity and lack of annotations or output schema, the description is almost complete. It clearly states the operation and the resource. However, it does not describe the return structure (e.g., fields of a project), which might be relevant for an agent to know how to parse the response. This is a minor gap given the simplicity.

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 tool has zero parameters and the schema description coverage is effectively 100% (empty properties). According to the rubric, with 0 parameters the baseline is 4. The description adds no parameter-related information, but there are none to explain, so this baseline 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 states a specific verb 'List' and a clear resource 'all known Manifestation projects'. It is unambiguous and does not overlap with any sibling tool, which include actions like start_project, run, or health, none of which list projects. This fully clarifies the tool's purpose.

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. The description simply states what it does without any context about when it is appropriate or whether other tools might be better suited for certain scenarios. An agent is left to infer its usage solely from the name and description.

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

make_planA

Generate the bite-sized red/green TDD plan (repo-aware). Returns the full task bodies for the user to review. Does NOT start execution — call approve_plan after the user signs off.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

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 full burden. It discloses that the tool does not execute, returns full task bodies for review, and is repo-aware. It doesn't mention side effects like storage or persistence, but the lack of execution implies a read-only behavior. Overall, key behavioral traits are clearly 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 a compact two-sentence structure that leads with the primary action and return value, then provides a critical behavioral note and a pointer to the follow-up tool. Every word earns its place, and there is no 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 covers the core purpose, return type, and follow-up step, but lacks details on the exact format of the 'full task bodies' or any prerequisites like having started the project first. Given siblings like start_project and approve_plan, the tool's place in the workflow is partly implied but not fully specified. The agent could call it in the wrong order if the description mentioned prerequisites.

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

Parameters2/5

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

The schema has zero description coverage, so the description must compensate. While the sole parameter 'project_id' is named clearly, the description does not explicitly link it to the plan generation or the repo context. The parenthetical 'repo-aware' hints at the connection but does not clarify the role of the ID. The agent must infer that project_id selects the project, which could lead to confusion.

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 generates a bite-sized red/green TDD plan and is repo-aware. It explicitly mentions returning full task bodies for review, and the verb 'Generate' is specific. It distinguishes itself from sibling approve_plan by stating it does not start execution.

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 tells the agent not to start execution and instructs to call approve_plan after user sign-off. This clearly identifies when to use this tool versus its main sibling, leaving no ambiguity about the workflow.

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

next_spec_chunkA

Get the next spec chunk to show the user for sign-off (drafts the spec on first call).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are present, so the description carries the behavioral burden. It explicitly discloses a side effect: 'drafts the spec on first call', which alerts the agent that this is not a pure read operation. It does not fully describe all state changes or return behavior, but this is meaningful disclosure for a short description.

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, tightly written sentence with the main action front-loaded and the side effect contained in a parenthetical. Every word earns its place, and there is no redundant filler.

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 one-parameter tool, the description covers the action, the purpose, and an important first-call side effect. It could additionally clarify how chunks are delivered or what the agent should do after receiving them, but given the low complexity and the sibling workflow, it is mostly complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain how 'project_id' should be used or where it comes from. The parameter name is fairly self-explanatory, but the description adds no semantic value beyond the schema's 'Project Id' title, so it fails to compensate for the lack of schema 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 uses a specific verb ('Get') and specific resource ('next spec chunk') and clearly states the purpose: 'to show the user for sign-off'. The parenthetical 'drafts the spec on first call' adds an important distinguishing behavioral detail, setting it apart from related tools like review_spec_chunk.

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 when to use the tool: when the next spec chunk needs to be presented to the user for sign-off. It does not provide explicit exclusions or name alternatives, but the 'next chunk' phrasing implies the workflow position without ambiguity.

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

reset_taskA

Reset a BLOCKED (or any) task back to pending so run can retry it.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
project_idYes

TDQS

A4/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 disclosing behavior. It explicitly states that the tool changes task state to pending, applies to ANY task (not just BLOCKED ones), and exists to support run retries. This is honest and useful, though it omits details like reversibility or side effects on the run.

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?

It is a single, efficiently front-loaded sentence. Every phrase earns its place: the state transition, the scope, and the purpose. 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?

For a simple mutation tool with no output schema, the description captures the core action and intent. It is incomplete only in that it does not explain how to source project_id or when it would be inappropriate to reset a task. The gaps are not severe, but they keep it from being fully self-sufficient.

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

Parameters2/5

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

The schema has 0% description coverage, so the description needed to compensate. It does not mention task_id or project_id at all, leaving the agent to infer their meaning solely from the property names and titles. This is minimal but not zero, since task_id is self-explanatory given the tool name.

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 ('Reset') with a clear resource ('task') and a precise state transition ('BLOCKED (or any) task back to pending'). It also states the intent ('so run can retry it'), making the tool's role clear and distinguishable from siblings like health, status, or run.

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 provides clear context: use this tool to move a task to pending so the run can retry it. It does not explicitly list exclusions or alternatives, but no sibling appears to compete directly with this action, so the context is sufficient.

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

review_spec_chunkA

Approve or revise the current spec chunk. 'approve' advances; 'revise' redrafts with feedback.

ParametersJSON Schema
NameRequiredDescriptionDefault
decisionYes
feedbackNo
project_idYes

TDQS

A3.6/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 burden of behavioral disclosure and does reveal key behaviors: 'approve' advances the state, 'revise' redrafts with feedback. It does not state prerequisites, side effects on surrounding data, or error conditions, which are clear gaps. It also implies feedback is needed for revision, but the schema marks it optional, adding some ambiguity.

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 with no wasted words. It front-loads the core action and then clarifies the decision semantics. Every sentence 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?

The description is adequate for a simple tool with three parameters and no output schema, but it omits details about prerequisites, what constitutes the 'current spec chunk', and what happens after approval or revision. It also does not address potential errors or edge cases like submitting 'revise' without feedback. Given no annotations, this is a minimum-viable level of completeness.

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 schema has 0% description coverage, so the description must add meaning. It interprets the 'decision' parameter by naming two specific values ('approve' and 'revise') and explains their effects. It also clarifies that feedback is used during revision. It does not elaborate on project_id, but that parameter is self-explanatory from its title.

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 states a clear action ('Approve or revise') on a specific resource ('current spec chunk') and distinguishes the two modes with their effects. It does not explicitly contrast with sibling tools like next_spec_chunk or approve_plan, but the resource and action are specific enough to differentiate from most tools.

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 explains when to use the tool implicitly by describing the action and the effects of the decision parameter. It does not provide explicit exclusions or compare against sibling tools such as next_spec_chunk, which may also advance, leaving some ambiguity about which tool to pick. However, the two decision modes are clearly mapped to their outcomes.

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

runA

Run the subagent-driven execution loop: implementer -> server-verified TDD gate -> reviewer, per task. 'until' stops after N tasks; 'max_agent_calls' and 'max_budget_usd' cap spend. Requires an approved plan. Long-running; streams progress; checkpoints per step.

ParametersJSON Schema
NameRequiredDescriptionDefault
untilNo
project_idYes
max_budget_usdNo
max_agent_callsNo

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, and it delivers: it flags the plan prerequisite, that the call is long-running, that it streams progress, and that it checkpoints per step. It does not contradict any structured data. Minor gaps remain around failure modes and post-run return behavior, but for a mutation/execution tool with zero annotation coverage this is strong 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?

Two sentences with zero wasted words. The first is front-loaded with the core purpose and pipeline, and the second efficiently packs the parameter semantics plus the three key behavioral notes. Every clause earns its place.

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?

Complete for an execution-loop tool: purpose, all cap parameters, the plan prerequisite, and runtime behaviors (long-running, streaming, checkpoints) are all covered. Missing only a note on what the agent receives on completion or on failure/rollback behavior, which matter given there is no output schema to fall back on. Minor gap, not a blocking one.

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 0%, so the description must compensate, and it does for 3 of 4 parameters: it explains that 'until' stops after N tasks and that 'max_agent_calls' and 'max_budget_usd' cap spend. Only project_id is left implicit, which is reasonable given the plan prerequisite. This adds genuine meaning beyond the bare type names in 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?

States a specific verb ('Run') and a concrete resource: the subagent-driven execution loop, spelled out as 'implementer -> server-verified TDD gate -> reviewer, per task'. This pipeline description cleanly differentiates the tool from siblings like make_plan, approve_plan, status, and health, so an agent can select it correctly without opening the schema.

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?

Gives clear context on prerequisite state: 'Requires an approved plan', which implicitly routes the agent to call this only after approve_plan. It also explains the purpose of the cap parameters. However, it does not explicitly name alternatives or list when-not-to-use conditions, so the guidance is contextual rather than exclusionary.

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

start_projectA

Begin a design-first project. Creates state and returns the first interview questions. Ask the user these; do NOT write code yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefYes
repo_pathYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description must carry the burden of behavioral disclosure. It does disclose that the tool mutates state ('Creates state'), returns interview questions, and that code should not be written yet. However, it does not explain persistence, failure modes, idempotency, or what happens if the project already exists, so the transparency is only partial.

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 short, front-loaded with the primary purpose, and every sentence adds value. It states what happens, what to do next, and what not to do, all in three concise sentences 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?

For a simple two-parameter tool with no output schema or annotations, the description covers the core workflow reasonably well. However, the absence of parameter explanations and the lack of guidance about when this tool should be called relative to siblings like submit_answers leaves notable gaps for an agent making a fully informed call.

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

Parameters1/5

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

The schema has 0% description coverage, and the tool description does not explain what 'brief' or 'repo_path' should contain. The parameter names are suggestive, but the description adds no meaning beyond the schema, leaving the agent to guess the required format and 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 clearly states a specific action and resource: 'Begin a design-first project,' and it concretely says the tool 'creates state and returns the first interview questions.' This distinguishes it from siblings like make_plan, run, and approve_plan, which are later workflow steps.

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 clear context: this is the first step of a design-first project and returns interview questions for the user. It also instructs the agent to ask the user these questions and explicitly says 'do NOT write code yet,' which helps with when-not behavior. It does not name alternatives like submit_answers, but the workflow context is clear.

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

statusC

Report a project's current phase and task progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

TDQS

C2.7/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 states what information is reported (phase and task progress) but does not clarify whether the operation is read-only, whether it has side effects, or what the output format looks like. This is a minimal disclosure, insufficient for a clear behavioral understanding.

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 with no redundant words, front-loading the core purpose. It earns top marks for efficiency and structure.

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?

With no output schema, no annotations, and zero parameter documentation, the description must provide a complete mental model. It only mentions what is reported, not how to call it, what to expect in return, or any prerequisites. For a simple one-param tool it is minimal but not fully adequate, warranting a 2.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain the project_id parameter beyond what the property name implies. The agent gets no guidance on the format, requirements, or how to obtain a valid project_id, so the description fails to compensate for the schema gap.

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 'report' and the resource 'a project's current phase and task progress', making the tool's purpose distinct from siblings like health or start_project. It does not confuse with other tools, so a 4 is appropriate rather than a 5 because it lacks an explicit comparison to siblings.

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 given on when to use this tool versus alternatives such as list_projects or health. The context of when to invoke status vs. others is left entirely to the agent's inference, so this dimension scores low.

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

submit_answersA

Submit the user's answers to the current discovery questions. Returns either more questions or advances the project to the SPEC phase.

ParametersJSON Schema
NameRequiredDescriptionDefault
answersYes
project_idYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations available, the description carries the full burden of behavioral disclosure. It does reveal that the tool can change project state (advance to SPEC) and explains the return behavior. However, it omits details such as whether answers are validated, how the order of answers maps to questions, and whether the action is idempotent.

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, well-structured sentence that front-loads the action and includes the key outcome. It contains no filler or redundant phrasing, and every clause contributes to the agent's understanding.

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, the description covers the core workflow adequately. However, the absence of an output schema and annotations means the agent is left without details on how the returned 'more questions' are structured or how answers should be formatted, which could require additional inference during 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 0%, so the description must compensate. It adds meaning to 'answers' by clarifying they are the user's responses to current discovery questions, but it does not explain formatting, ordering, or required count. 'project_id' is left completely to the schema, relying on the parameter name alone.

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 ('Submit') and a clear resource ('the user's answers to the current discovery questions'), and further clarifies the two possible outcomes: more questions or advancing to the SPEC phase. This distinguishes it from the listed sibling tools, which concern planning, approval, and project lifecycle actions.

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 clearly situates the tool in the discovery question flow: after questions are presented, this tool submits the user's answers. It does not explicitly name when not to use it or list alternatives, but the intended context is unambiguous enough for an agent to select it over siblings.

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.

  1. 11 tool updatesv0.1.0
    • First observedapprove_plan
    • First observedhealth
    • First observedlist_projects
    • First observedmake_plan
    • First observednext_spec_chunk
    • First observedreset_task
    • First observedreview_spec_chunk
    • First observedrun
    • First observedstart_project
    • First observedstatus
    • First observedsubmit_answers

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool maps to a distinct phase or concern: liveness, discovery Q&A, spec chunk retrieval/review, plan generation/approval, execution, task reset, status, and project listing. Pairings like make_plan/approve_plan and next_spec_chunk/review_spec_chunk are sequential rather than overlapping, and the descriptions reinforce their roles.

Naming Consistency4/5

Most tools follow a verb_noun pattern (start_project, submit_answers, approve_plan, reset_task, list_projects), but health, status, run, and next_spec_chunk deviate by using bare nouns, a bare verb, or a noun-phrase without an action verb. The overall style is still readable and mostly predictable.

Tool Count5/5

11 tools fit the server's staged workflow—discovery, spec, plan, execute, and observe—and each serves a clear purpose. There is no obvious bloat; even the health and list_projects tools are reasonable utility surfaces.

Completeness4/5

The core lifecycle is well covered: start_project, submit_answers, next_spec_chunk, review_spec_chunk, make_plan, approve_plan, run, reset_task, and status form a coherent path with no dead ends. Minor gaps exist, such as no explicit cancel/stop for a running execution or a revision path for an already-approved plan/spec, but these can likely be worked around.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Autonomous TDD coding agent that converts specifications into feature lists and implements them using test-driven development with pause/resume capabilities, live progress monitoring, and automatic git commits.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A methodology and MCP server for agent-driven software development where humans write specs and agents implement code, enforced by six mechanical gates to ensure spec validity, contracts, tests, and review.
    4 npm
    MIT