Skip to main content
Glama
io.github.koten-ai/zeus-dev-helper

io.github.koten-ai/zeus-dev-helper

Official
by koten-ai

Zeus Dev Helper MCP

Stdio MCP server that coaches a coding agent and a human to a first successful Zeus Client app turn.

This is not a data-plane MCP. It does not run Explore/Verify verbs on your behalf, invent contract hashes, or perform Hub admin mutations. After the first-green smokes pass, data-plane and multi-agent work are handoffs only.

Package

zeus-dev-helper-mcp

Registry name

io.github.koten-ai/zeus-dev-helper

Transport

stdio

Python

3.11+

MCP SDK

mcp (FastMCP on 1.x / MCPServer on 2.x)

What it does

The server walks a first-app checklist: prereqs, live readiness on the public Zeus API, catalog templates, contract bind (copy a stamped hash only), surface/verb coaching, config lint, and smoke tests. Prefer a live Zeus stamp for catalogs. fetch_chat_request is always template only.

Hard constraints the tools enforce:

  • Public Zeus API on port 8080 only (never Hub 9091 from the app path)

  • Never invent contract_hash

  • No secrets in tool results, checklist evidence, or support packs

  • Semantic cache stays off

Related MCP server: platform-mcp-stub

Install

verify_local_setup and smoke_test_agent import zeus_client in this Helper process. Install the agent extra into that environment. The app .venv does not satisfy the check.

pip install "zeus-dev-helper-mcp[agent]"
# or
uvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp

Run

zeus-dev-helper-mcp
# or
python -m zeus_dev_helper_mcp

Prefer the published console script (uvx / pip install) so hosts do not need a source checkout.

Host install

Set ZEUS_URL to your Zeus public API on port 8080 (never Hub :9091). Prefer the remote host you actually use. Use http://localhost:8080 only when Zeus runs on the same machine as the MCP host.

# Remote Zeus (typical lab / shared engine) — put your host here
export ZEUS_URL=http://192.168.0.219:8080
# or: http://<zeus-host>:8080
#
# Same-machine Zeus only:
# export ZEUS_URL=http://localhost:8080

If the user names a URL or sample in chat, call set_prereq with that zeus_url / bucket / scope (do not keep a stale localhost default). doctor reports stored vs effective URL routing (see ZDM-3).

Grok Build

grok mcp add treats flags like -m as its own unless they come after --. The uvx argument is the PyPI package zeus-dev-helper-mcp, not the MCP server id zeus-dev-helper.

grok mcp add zeus-dev-helper \
  -e ZEUS_URL=http://192.168.0.219:8080 \
  -- uvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp

From a local checkout after pip install -e ".[dev,agent]", point command at this tree’s venv so the host can start the server even when it was launched without the venv activated:

grok mcp add zeus-dev-helper \
  -e ZEUS_URL=http://192.168.0.219:8080 \
  -- "$(pwd)/.venv/bin/python" -m zeus_dev_helper_mcp

Equivalent config:

[mcp_servers.zeus-dev-helper]
command = "uvx"
args = ["--from", "zeus-dev-helper-mcp[agent]", "zeus-dev-helper-mcp"]
env = { ZEUS_URL = "http://192.168.0.219:8080" }
enabled = true

Then refresh MCP servers, or grok mcp doctor zeus-dev-helper.

Common failures:

  • unexpected argument '-m' — missing -- before the python command

  • uvx zeus-dev-helper / No solution found — wrong package name; use uvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp

  • No module named 'zeus_client' — this Helper process has no agent extra. Installing kotenai-zeus-client into the app .venv leaves the check red. Restart the MCP server after installing the extra into the Helper environment.

  • No module named 'zeus_dev_helper_mcp' / python: No such file or directory — the host did not inherit the venv; use the .venv/bin/python path above

  • No module named 'mcp.server.fastmcp' — mcp 2.x renamed FastMCP; use Helper 0.6.0+ (mcp>=1.8.0,<3)

Claude Code / Claude Desktop

{
  "mcpServers": {
    "zeus-dev-helper": {
      "command": "uvx",
      "args": ["--from", "zeus-dev-helper-mcp[agent]", "zeus-dev-helper-mcp"],
      "env": {
        "ZEUS_URL": "http://192.168.0.219:8080"
      }
    }
  }
}

Cursor

Add (or merge) .cursor/mcp.json in the project (or use Cursor’s global MCP settings):

{
  "mcpServers": {
    "zeus-dev-helper": {
      "command": "uvx",
      "args": ["--from", "zeus-dev-helper-mcp[agent]", "zeus-dev-helper-mcp"],
      "env": {
        "ZEUS_URL": "http://192.168.0.219:8080"
      }
    }
  }
}

Codex

The permission profile :workspace does not enable network. With sandbox_approval false, Codex does not ask to enable it. Pip then reports [Errno -2] Name or service not known. That is EAI_NONAME from the closed network. A package host that answers outside the sandbox can still look like a DNS failure inside it.

Set a top-level profile that extends :workspace and enables network. Do not also set sandbox_mode or [sandbox_workspace_write]. Start a new Codex thread after the change. Leave the network proxy off unless localhost is allowlisted, because sandboxed commands still need local Zeus.

default_permissions = "workspace-net"

[permissions.workspace-net]
description = "Workspace writes plus outbound network so sandboxed commands can resolve package hosts."
extends = ":workspace"

[permissions.workspace-net.network]
enabled = true
[mcp_servers.zeus-dev-helper]
command = "uvx"
args = ["--from", "zeus-dev-helper-mcp[agent]", "zeus-dev-helper-mcp"]

Install the app requirements.txt from a process that already has network. That install does not put zeus_client on the Helper interpreter. Restart the MCP server after the Helper environment gains the agent extra.

Other stdio hosts

Point the host’s MCP stdio entry at uvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp (or python -m zeus_dev_helper_mcp from a venv that has the agent extra) with the same env vars. Replace the sample IP with your Zeus host.

Day-one coach path

doctor → (if user named URL/sample) set_prereq → start_project → next_step
  → readiness_check
  → use_sample | scaffold_app → bind_contract → recommend_surface
  → smoke_test_zeus → smoke_test_agent → diagnose_error

Prefer next_step over dumping the full checklist. Two first-green paths (TravelPlan is not the only path):

  • Travel + LLM (UI default): start_project(sample=travel) → use_sample, which clones public demo_travel_sample when missing (optional project_name for the directory) and sets DEMO_TRAVEL_SAMPLE_DIR. Checklist 1.2 stays open until this process has LLM_API_KEY, XAI_API_KEY, or OPENAI_API_KEY. smoke_test_agent reads that variable. Standalone clones pin kotenai-zeus-client>=2.4.0,<2.5 so run_turn can recover a fenced pipeline inside the SDK.

  • Beer catalog UI: start_project(sample=beer) → use_sample(sample=beer) clones public demo_beer_sample when missing and sets DEMO_BEER_SAMPLE_DIR. That checkout is the app. Start it with Python 3.11 or newer. The use_sample run string uses python3 -m venv only when python3 is 3.11 or newer. Then pip install -r requirements.txt and python main.py (binds 127.0.0.1:8090). When that checkout has both a Dockerfile and a compose file, use_sample asks the agent to let the user choose Python or Docker before either command starts. website_green(serve_with=python|docker) records the choice. The helper does not run Docker. That requirements file installs kotenai-zeus-client>=2.5.3,<2.6 from PyPI. use_sample writes mode 600 .env from .env.example, keeps populated values, and adds missing template keys. It resolves LLM_API_KEY, LLM_BASE_URL, and LLM_MODEL together, and copies OPENAI_API_KEY or XAI_API_KEY only when the base URL and model match that provider. The clone keeps LLM_MODEL=grok-4.5-latest. run and next_action do not say to copy .env.example over that file. website_green does not run pip when the app .venv is older than 3.11. Lists are Direct and need no LLM key. Pour matches travel: rt.agent.run_turn with chat_request omitted so catalog.load_for_turn merges the live SCOPE BRIEF and MINI-SCHEMA. A helper-written catalog page uses max_rounds 4. Pour stays off until LLM_API_KEY, XAI_API_KEY, or OPENAI_API_KEY is in the app .env, including when has_llm_key=false. Leave config.json llm.api_key_env as that variable name. verify_local_setup keeps checklist 3.2 open until that file check passes. The BFF does not build a pipeline body. Do not clone demo_travel_sample. Do not write a job for this one-scope page.

  • Yelp demo UI: start_project(sample=demo_yelp) → use_sample(sample=demo_yelp) clones the LocalAI template demo_yelp when missing (utterances yelp-demo / demo_yelp) and sets DEMO_YELP_SAMPLE_DIR. When parent_dir is set, the clone is created in that directory. That checkout is the app: run it, and do not write a replacement or copy the beer sample. use_sample also downloads the public business photo set into frontend/public/business-images/<id>/{1,2,3}.png (no biz: prefix, no API key). Search POSTs /api/search and sends the live chat request for yelp-demo / _default as the session body. Search cards unwrap a hybrid {node, score} hit and a nested pipeline row. The business page GETs /api/business/{id} when the id is not in the bundled catalog. Review text is the source document, not a rev: doc key. set_prereq bucket is yelp-demo, scope _default. Do not clone demo_travel_sample. Bare sample=yelp stays the multi-agent handoff.

  • API-only: user asks for an API/REST app → start_project(sample=api) → scaffold_app(app_kind=api, coding_language=python) (FastAPI POST /turn on kotenai-zeus-client). Other languages not scaffolded yet.

  • Credentials from chat → process env / gitignored .env; set_prereq presence flags only. has_llm_key=true does not count as the key. Pass the user’s Zeus URL into set_prereq(zeus_url=…). Do not paste the secret into llm.api_key_env.

  • Integrating into an arbitrary existing repo is out of scope.

Read zeus-helper:// resources for glossary, verbs, policies, and catalog modes. Hosts can pick prompts first_green, smoke_question, and support_pack.

Default tools (core)

Live tools/list is the call contract. Default surface is the core toolset (ZEUS_DEV_HELPER_TOOLSETS=core).

Tool

Job

doctor

Health. detail=health|env|compat|cache|all (env/compat/cache fold lint-toolset checks)

start_project

Init checklist; sample=travel (UI default), sample=beer (catalog UI, run_turn), sample=demo_yelp (clone demo_yelp), or sample=api

next_step

Current item plus recommended tools and resource links

set_prereq

Store non-secret prereqs (presence flags only; has_llm_key is not the key)

readiness_check

Live gates: healthz / readyz / version, auth, bootstrap. Marks 1.2 done only when the URL is set and, on a run_turn path, the process has an LLM key

explain_scope

Live public :8080 chat_request.json summary: entity types, display fields, text-search fields, FK fields, and list/detail/search verbs. When that body has no ## MINI-SCHEMA heading, parse bootstrap.chat_request. A failed stamp leaves entity types empty. fetch_chat_request stays template only

scaffold_app

CLI or FastAPI (app_kind=cli|api) ZeusRuntime app; python only

use_sample

Travel UI clone, beer catalog clone (demo_beer_sample, python main.py, Direct lists, Pour run_turn with chat_request omitted), sample=catalog from explain_scope, or yelp demo clone (sample=demo_yelp, sets DEMO_YELP_SAMPLE_DIR; downloads public photos into frontend/public/business-images/<id>/, no API key; live search and business page, review text from the source document)

bind_contract

Copy a stamped contract.hash only. With no path, the source is the live bootstrap chat_request. A directory pointer is not a catalog. Refuses empty / local compute

recommend_surface

Intent → Client surface + do-not list

smoke_test_zeus

No LLM: readiness plus a read-only describe

website_green

Install, start, and check the catalog page (named list card, page ids, search when Pour is on). A title-cased doc_key is not a search card. A describe 200 is not this check

smoke_test_agent

One Client run_turn. Needs [agent] extra and LLM_API_KEY, XAI_API_KEY, or OPENAI_API_KEY in this process

diagnose_error

Map a symptom, hop name, and result keys to a failure class and one generated-file change

sample_support_pack

Read-only paste for a beer, travel, or yelp-demo gate failure. Writes nothing and calls no Zeus API. Session ids stay in support_pack_from_turn

Opt-in toolsets (static, comma-separated): catalog, lint, travel, support, handoff. all enables every set. Full when/args/side-effects map: docs/TOOLS.md.

Resources (always on): zeus-helper://checklist, zeus-helper://glossary/{topic}, zeus-helper://verbs/{name}, zeus-helper://policy/hash-boundary, zeus-helper://policy/req-id, zeus-helper://catalog/modes.

Environment

Secrets stay in the process environment. set_prereq stores presence flags only. Tool results redact secret values.

Variable

Purpose

ZEUS_URL

Public Zeus API base URL (port 8080). Remote host first; localhost only when Zeus is local

ZEUS_BUCKET / ZEUS_SCOPE / ZEUS_COLLECTION

Scope for bootstrap and auth probes

ZEUS_MODE

Default catalog mode (analytics)

ZEUS_AUTH_MODE

Auth mode (none, basic, bearer)

ZEUS_USERNAME / ZEUS_PASSWORD

Basic auth (never logged)

ZEUS_BEARER_TOKEN

Bearer auth (never logged)

LLM_API_KEY / XAI_API_KEY / OPENAI_API_KEY

Process key for checklist 1.2, validate_env, and smoke_test_agent. The app .env needs the same name for Pour / uvicorn. config.json llm.api_key_env stays the name. A stored has_llm_key flag does not count

LLM_BASE_URL / LLM_MODEL

OpenAI-compatible endpoint and model. Offered defaults: Grok https://api.x.ai/v1 / grok-4.5-latest, OpenAI https://api.openai.com/v1 / gpt-5.6-sol, Anthropic https://api.anthropic.com/v1 / claude-opus-5-5, Gemini https://generativelanguage.googleapis.com/v1beta/openai/ / gemini-3.8-flash, or a base URL the user types. load_process_login reads both names from a mode-600 file

ZEUS_CHAT_REQUEST_DIR

Local directory of min catalog templates; auto-set when list_catalog_modes / fetch_chat_request locate or clone public zeus_chat_request

DEMO_TRAVEL_SAMPLE_DIR

Local sample directory for use_sample / travel_golden_path

DEMO_YELP_SAMPLE_DIR

Local demo_yelp directory for use_sample(sample=demo_yelp)

BUSINESS_IMAGES_BASE_URL

Optional CDN prefix for the yelp photo download (no trailing slash). Default is the public koten-yelp-demo-photos Space. No API key

ZEUS_DEV_HELPER_SKIP_YELP_IMAGES

Set to 1 to skip the yelp photo download during use_sample(sample=demo_yelp)

YELP_IMAGE_FETCH_WORKERS

Parallel downloads for that photo set. Default 8

ZEUS_DEV_HELPER_STATE_DIR

Checklist, prereqs, local metrics, the write-once sample creation logs (beer-sample-build.md, travel-sample-build.md, yelp-demo-build.md), and the support journals (beer-sample-support.md, travel-sample-support.md, yelp-demo-support.md). Default ~/.config/zeus_dev_helper

ZEUS_DEV_HELPER_TOOLSETS

Static toolsets: core (default), plus catalog,lint,travel,support,handoff or all

Boundaries

This MCP

Not this MCP

Onboarding coach to first green

Data-plane Explore/Verify tools

Catalog templates plus readiness and smoke

Inventing or locally computing contract_hash

Verb explain / lint / draft (posted=false)

POSTing find / search / get / pipeline

Detective URL templates

Hub scrape or Hub admin mutations

Multi / data-plane handoffs

Multi-agent job runtime

Local checklist and metrics

Shipping secrets in evidence or support packs

Dev install

From a local checkout:

python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,agent]"
export ZEUS_URL=http://localhost:8080
pytest -q

MCP Registry

Official registry name: io.github.koten-ai/zeus-dev-helper. The registry hosts metadata only; the install artifact is the PyPI package zeus-dev-helper-mcp.

License

BSD-3-Clause — see LICENSE.

Available Tools

16 tools
bind_contractC
Read-onlyIdempotent

Extract stamped contract.hash only. Refuse placeholders / compute_local (ZDH-22).

With no path, copy the hash from the live bootstrap chat_request. A helper chat_request.json directory pointer is not an unstamped catalog.

NameRequiredDescriptionDefault
modeNo
pathNo
scopeNo
bucketNo
json_textNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare this a safe, idempotent, closed read, and an output schema covers returns. The description adds genuine behavioral facts beyond that: it refuses placeholder values, refuses compute_local, and has a documented no-path fallback. That value is real but the delivery is opaque, and it never says what 'Extract' does on failure or how the hash is validated.

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

Conciseness4/5

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

Three short sentences, front-loaded with the core action and constraint. Tightly sized, though 'ZDH-22' and 'unstamped catalog' are space that does not inform an agent.

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?

Five zero-documented parameters, four of which (mode, scope, bucket, json_text) are never mentioned, is a serious hole for a tool whose whole job is binding a contract. The output schema relieves the return-value burden, but an agent still cannot tell how to pass mode, scope, bucket, or json_text.

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% across 5 parameters, so the description carries the full burden and largely drops it. Only 'path' is given meaning (the empty-path fallback); mode, scope, bucket, and json_text are completely unexplained in both schema and description.

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

Purpose3/5

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

The verb+resource ('Extract stamped contract.hash') is identifiable, but the key nouns ('stamped', 'unstamped catalog', 'ZDH-22') are internal jargon an outside agent cannot resolve. It does not name any of the listed siblings, so the agent cannot place it relative to doctor, readiness_check, or start_project.

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?

It does give a conditional usage rule — 'With no path, copy the hash from the live bootstrap chat_request' — and an exclusion ('Refuse placeholders / compute_local'). However, compute_local is not a listed sibling and no real alternative is named, so the routing guidance only partly helps.

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

diagnose_errorB
Read-onlyIdempotent

Map a symptom to failure_class + one generated-file change.

Accepts symptom text, optional req_id, hop name, HTTP status, and the top-level keys of the hop result. Does not accept document bodies. Does not echo a password, session id, or document body. Includes Detective URL templates when req_id/chat_id are present. Does not scrape Hub.

NameRequiredDescriptionDefault
bodyNo
req_idNo
statusNo
chat_idNo
messageNo
symptomNo
turn_idNo
hop_nameNo
zeus_urlNo
item_keysNo
node_keysNo
error_codeNo
hop_bucketNo
session_idNo
error_classNo
result_keysNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real context the annotations don't: redaction guarantees (no password, session id, or document body echoed) and conditional behavior (Detective URL templates appear when req_id/chat_id are present).

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

Conciseness4/5

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

Short and front-loaded: the core purpose leads, then accepted/non-accepted inputs, then side-effect caveats. The terse 'Does not scrape Hub.' sentence is a stray fragment but the overall shape is efficient.

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?

Because an output schema exists, return values needn't be explained, and the redaction/URL-template notes are useful. But for a 16-parameter tool with zero schema coverage, leaving the majority of inputs undocumented is a real completeness gap.

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% across 16 parameters, so the description must compensate and largely doesn't. It names only about five inputs (symptom, req_id, hop name, HTTP status, result keys) and leaves chat_id, zeus_url, error_code, error_class, hop_bucket, session_id, turn_id, item_keys, node_keys, and body entirely unexplained in both schema and description.

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?

States a specific verb+resource: 'Map a symptom to failure_class + one generated-file change.' An agent knows the input (symptom text) and the output shape (a failure class plus a single file change). It isn't differentiated from the many siblings, but none of them are close enough to require that.

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?

It gives input-scoping rules ('Does not accept document bodies', 'Does not scrape Hub'), which imply usage boundaries, but never says when to reach for this tool versus doctor, readiness_check, or smoke_test_zeus. Usage is implied rather than directed.

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

doctorA
Read-onlyIdempotent

Health / doctor. detail: health | env | compat | cache | all.

health checks that python3 is 3.11 or newer and marks checklist 1.1. The app .venv is checked by verify_local_setup and website_green.

env/compat/cache fold validate_env, compat_check, and semantic_cache_status (those names stay on the lint toolset).

If the user already gave a Zeus URL or sample name, next call set_prereq with those values (not Helper localhost defaults), then start_project / next_step. Do not grep the Zeus engine tree for first green.

NameRequiredDescriptionDefault
detailNohealth

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already establish that this is read-only, idempotent, non-destructive, and closed-world. The description adds useful behavioral context by specifying that health mode checks Python >= 3.11 and marks checklist 1.1, that .venv is handled elsewhere, and what the recommended follow-up calls are. It does not describe the return shape, but an output schema exists.

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

Conciseness4/5

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

The description is front-loaded with the health/doctor purpose and detail modes, then follows with operational guidance. It is reasonably sized and avoids unnecessary repetition, though the internal-tool references and next-step instructions make it slightly denser than a purely purpose-focused definition would be.

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 annotations, output schema, and single optional parameter, the description provides enough context to invoke the tool and understand its main checks. It covers the health mode, the folded env/compat/cache checks, and recommended follow-up actions. Its main gap is not clearly differentiating doctor from readiness_check or diagnose_error in the sibling toolset.

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 carry the semantic load for the single detail parameter. It lists the accepted values health, env, compat, cache, and all, and explains that env/compat/cache fold validate_env, compat_check, and semantic_cache_status. It does not fully explain the all mode or each mode's exact output, but it adds substantial meaning beyond the bare string schema.

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 identifies this as a health/doctor diagnostic tool and names the detail modes: health, env, compat, cache, and all. It specifies that the health mode checks Python 3.11+ and marks checklist 1.1, and clarifies that .venv validation belongs to verify_local_setup and website_green, which helps distinguish it from a sibling. The only weakness is that the core purpose is stated somewhat indirectly through mode descriptions rather than a single direct verb+resource sentence.

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 gives post-doctor guidance about calling set_prereq when a Zeus URL or sample name is already known, followed by start_project or next_step. It also warns against grepping the Zeus engine tree. However, it does not explicitly state when to use doctor versus readiness_check, diagnose_error, or website_green, nor when to choose each detail mode.

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

explain_scopeA
Read-onlyIdempotent

Summarize the live chat_request stamp on public :8080.

Entity types, display fields, text-search fields, foreign-key fields, and the verb for list (find), detail (get), and search. No prompt text, document bodies, or secrets. fetch_chat_request stays template only. When GET /v1/ai/chat_request.json has no ## MINI-SCHEMA heading, the summary is parsed from bootstrap.chat_request. missing_mini_schema remains when that message also has no heading. A failed stamp sets failure_class and does not invent entity types.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the annotations, the description discloses important behavior: no prompt text, document bodies, or secrets are exposed; fetch_chat_request remains template-only; missing_mini_schema is preserved; and a failed stamp sets failure_class rather than inventing entity types. This adds useful operational context, though it does not cover auth or rate-limit constraints.

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

Conciseness3/5

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

The description is front-loaded with the core purpose and the details are relevant, but it is dense with implementation-specific terms and several conditional clauses. It would benefit from clearer separation between what the tool returns and fallback behavior.

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

Completeness4/5

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

The tool is parameterless, has rich annotations, and has an output schema, so the description does not need to explain return format. It still covers key edge cases around missing mini-schema headings and failed stamps. The main gap is the lack of explicit usage context relative to sibling diagnostic tools.

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

Parameters4/5

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

The tool has zero parameters, so parameter semantics are not a meaningful differentiator. The baseline for zero parameters is 4, and the description does not introduce any confusing parameter expectations.

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 specific action and resource: summarize the live chat_request stamp, including entity types, display/text-search/foreign-key fields, and verbs. It is not a tautology. However, it does not differentiate this tool from any of its siblings, and the term 'stamp' remains domain jargon rather than plain language.

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

Usage Guidelines2/5

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

The description gives no guidance on when an agent should call explain_scope versus alternatives such as doctor, readiness_check, or diagnose_error. Its conditional details are about fallback parsing behavior, not about tool selection or prerequisites.

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

load_process_loginA
Idempotent

Load Zeus login from a mode-600 env file into this process.

Write ZEUS_USERNAME and ZEUS_PASSWORD to a file outside the repo or gitignored, chmod 600, then pass that path. The password is not an argument. The same file may set ZEUS_AUTH_MODE (none, basic, or bearer), LLM_BASE_URL, LLM_MODEL, and LLM_API_KEY. set_prereq stores presence flags only. The result lists loaded names and never values. Then readiness_check.

NameRequiredDescriptionDefault
env_fileYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare idempotent/non-destructive/non-readonly, but the description adds genuinely non-obvious behavior: the result lists loaded names and never values, and set_prereq stores presence flags only. That is real security-relevant context beyond the annotations. It stops short of describing failure modes (e.g. malformed or overly permissive file).

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

Conciseness4/5

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

Front-loaded with the action and the key precondition; every sentence carries information. The telegraphic fragments ("Then readiness_check.", "set_prereq stores presence flags only.") are slightly clipped but not padded.

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

Completeness4/5

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

With an output schema present and only one parameter, the description supplies the missing prerequisites, secret-handling contract, and follow-up step. The tangential enumeration of LLM_* variables is relevant but slightly dilutes focus; overall it is sufficient to invoke correctly.

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

Parameters4/5

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

Schema coverage is 0% ("env_file: string" with no description), so the description must carry the semantics and largely does: it defines file permissions (mode-600, chmod 600), location constraints, and which keys the file may contain (ZEUS_USERNAME, ZEUS_PASSWORD, ZEUS_AUTH_MODE, LLM_*). It does not state path format (absolute vs relative) or what errors an unreadable file produces.

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 first sentence states a specific verb and resource ("Load Zeus login ... into this process") plus the required input form (a mode-600 env file). Nothing else in the sibling list does credential loading, so an agent can select it without ambiguity.

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 a concrete precondition (write ZEUS_USERNAME/ZEUS_PASSWORD outside the repo or gitignored, chmod 600, then pass that path) and a sequencing instruction ("Then readiness_check"). It also rules out an approach ("The password is not an argument"). No explicit when-not-to-use case is offered, so not a 5.

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

next_stepA
Read-onlyIdempotent

Return the single current checklist blocker + recommended Helper tools (coach).

Call only the recommended tool next. If the user named a URL/bucket and prereqs are unset, recommend set_prereq first. Prefer zeus-helper:// + readiness_check / smoke_test_zeus over hand-rolled curl.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a behavioral contract beyond the annotations: the instruction to call only the recommended tool next and the conditional recommendation logic. It does not add side-effect details because none exist, but it does add operational behavior that is not in the structured fields.

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

Conciseness5/5

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

The description is two short paragraphs with no filler. The first sentence front-loads the purpose, and the second paragraph delivers precise usage rules. Every sentence earns its place, and the structure is easy to scan.

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?

Given the tool has zero parameters, an output schema exists, and annotations cover safety, the description is complete. It states what the tool does, when to use it, how to sequence calls, and which sibling alternatives to prefer. There are no missing pieces that an agent would need to invoke it correctly.

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

Parameters4/5

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

This tool has zero parameters and the input schema is empty, so there is nothing to explain. The baseline for 0 params is 4, and the description does not need to compensate for any schema gaps. It mentions external context (URL/bucket, prereqs) but that is not parameter input, so no further semantic detail is required.

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 ('Return') and resource ('single current checklist blocker + recommended Helper tools'), and it distinguishes itself from siblings by framing itself as a coach that recommends the next step. It clearly tells the agent what the tool produces without needing to open 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 Guidelines5/5

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

The description gives explicit when-to-use guidance: 'Call only the recommended tool next', a conditional rule for set_prereq when URL/bucket is named and prereqs are unset, and a preference for zeus-helper:// + readiness_check / smoke_test_zeus over hand-rolled curl. This is rich, actionable guidance that selects among siblings (set_prereq, readiness_check, smoke_test_zeus).

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

readiness_checkB
Idempotent

Live Zeus platform gates: healthz/readyz/version, auth, bootstrap, chat_request.

Never returns secret values. Emits failure_class + next_action on red paths.

NameRequiredDescriptionDefault
update_checklistNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already provide idempotentHint and destructiveHint, and the description adds useful behavioral context: 'Never returns secret values' and 'Emits failure_class + next_action on red paths.' This goes beyond the annotations. However, it does not disclose any side effects associated with the update_checklist parameter, despite readOnlyHint being false.

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 tightly written sentences: the first names the core scope, and the second adds safety and failure-output behavior. There is no filler, and the main purpose is front-loaded.

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 output schema covers return structure, and annotations cover idempotency and destructiveness. Still, the definition omits usage guidance relative to several similar siblings and leaves the update_checklist parameter semantically ambiguous, so the overall context is not fully 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 mention update_checklist at all. The name and default true imply some update behavior, but the meaning of 'checklist' and the effect of setting it to false remain unexplained. With low schema coverage, the description needed to compensate and did not.

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 names specific resources and scopes: 'healthz/readyz/version, auth, bootstrap, chat_request.' This clearly identifies what the tool checks. However, it does not explicitly differentiate readiness_check from siblings like smoke_test_zeus or diagnose_error, so it stops short of full sibling distinction.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use readiness_check versus the many sibling tools such as smoke_test_zeus, doctor, or diagnose_error. There are no conditions, exclusions, or alternative recommendations, leaving the agent to guess based on the name alone.

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

recommend_surfaceC
Read-onlyIdempotent

Name each website input. One box still returns one surface. Does not call Zeus.

A website (intent=nl_question) returns inputs: Direct list, chips, typeahead, paging, and detail, plus a One chat question box. url_count, scope_count, or report_wait_s of 20 seconds or more is a Job hint. The tool does not write jobs.host_url. Zero counts mean one URL and one scope.

NameRequiredDescriptionDefault
qpsNo
pageNo
intentYes
needs_llmNo
url_countNo
scope_countNo
report_wait_sNo
settings_modeNo
page_interactionNo
source_type_countNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior3/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive tool. The description adds useful behavioral boundaries, notably "Does not call Zeus" and "does not write jobs.host_url," plus hints about Job-like thresholds, though the disclosure remains terse and partly opaque.

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

Conciseness3/5

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

The text is short and has no obvious padding, but it is fragmented and poorly front-loaded. The opening sentences are confusing rather than efficiently orienting the agent.

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?

The tool has 10 parameters, no schema descriptions, and an output schema, but the description only covers a few parameters and a couple of behavioral constraints. An agent would still lack enough information to confidently supply most inputs or understand the recommendation logic.

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%, so the description must explain all 10 parameters. It only clarifies intent=nl_question and gives partial meaning for url_count, scope_count, report_wait_s, and zero-count defaults, leaving qps, page, needs_llm, settings_mode, page_interaction, and source_type_count unexplained.

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

Purpose2/5

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

The description never clearly states that the tool recommends a UI surface. Phrases like "Name each website input" and "One box still returns one surface" are cryptic, and the purpose must be inferred from mentions of returned inputs such as Direct list, chips, and typeahead.

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?

It mentions a website intent=nl_question case but gives no clear when-to-use guidance relative to alternatives. There is no explicit exclusion or routing advice involving sibling tools such as next_step, explain_scope, or website_green.

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

sample_support_packA
Read-onlyIdempotent

Read-only paste for a beer, travel, or yelp-demo support request.

Writes nothing and calls no Zeus API. Returns one Markdown paste: sample kind, bound directory, creation log, prereqs, open checklist rows in phases 1–5, the last website_green class, local setup, recent tool names, and the support-journal tail. Session ids stay in support_pack_from_turn. sample=api and bare sample=yelp are refused.

NameRequiredDescriptionDefault
sampleNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, and the description usefully reinforces this with 'writes nothing and calls no Zeus API', plus discloses refusal behavior for invalid inputs. The enumerated return contents largely restate what the output schema already provides, so the genuinely additive context is the no-write/no-Zeus guarantee and the refusal rules.

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

Conciseness4/5

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

Front-loaded with the purpose and safety guarantee, then behavior and rejection rules. The return-content sentence is a long comma list that could be trimmed against the output schema, but overall there is little wasted text.

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

Completeness4/5

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

With an output schema present and annotations covering the safety profile, the description only needs to add scope, refusals, and the session-id routing note — all of which it does. Minor gaps around whether the paste is written anywhere vs returned remain, but the core is complete.

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

Parameters4/5

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

Schema coverage is 0% for the single 'sample' parameter, so the description must compensate — and it does, naming valid values (beer, travel, yelp), noting a bare-yelp edge case, and stating that sample=api is rejected. This meaningfully exceeds what the bare schema string conveys.

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?

States a specific operation (produce a read-only Markdown support paste) scoped to three named demo samples (beer, travel, yelp-demo). The verb+resource is clear, though it does not explicitly contrast itself against the many similarly themed siblings (use_sample, recommend_surface), leaving some differentiation to inference.

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 applicability (beer/travel/yelp-demo support requests) and explicit exclusions (sample=api and bare sample=yelp are refused), plus a pointer that session-id-keyed lookups belong in sample_pack_from_turn. It stops short of naming a preferred alternative tool for the refused cases.

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

scaffold_appA
Destructive

Write a ZeusRuntime middle-man.

app_kind=cli (default) or api (FastAPI POST /turn). coding_language=python only today. UI demos use use_sample / demo_travel_sample, not this tool. When no Zeus URL is stored, the MCP call asks before writing files. Do not pass a password.

NameRequiredDescriptionDefault
forceNo
app_kindNocli
target_dirYes
project_nameNozeus_first_app
coding_languageNopython

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, and the description adds useful behavior beyond that: writing files, asking before writing when no Zeus URL is stored, and a security warning not to pass a password. It does not explain force/overwrite behavior, but it provides meaningful context beyond the annotations.

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

Conciseness5/5

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

The description is short, scannable, and every line adds actionable information: purpose, variants, language restriction, UI-demo exclusion, confirmation behavior, and a security warning. There is no filler or repetition of schema defaults.

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

Completeness3/5

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

The tool has 5 parameters, a required target_dir, and no enum constraints, and the description covers the main variants and caveats. However, it leaves gaps: force behavior is not explained, target_dir expectations are not stated, and there is no mention of how the generated scaffolding interacts with the Zeus URL state beyond asking before writing. An output schema exists, so return values are less of a concern, but the missing parameter semantics prevent a higher score.

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 add meaning for parameters. It does explain app_kind values and restricts coding_language, which helps. However, it does not describe the required target_dir parameter, project_name, or force. The names are somewhat self-explanatory, but force in particular lacks semantic guidance.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Write a ZeusRuntime middle-man.' It then clarifies the supported variants (cli or api) and explicitly separates itself from UI demo tooling ('UI demos use use_sample / demo_travel_sample, not this tool'), which distinguishes it from a relevant sibling. This gives an agent a clear idea of the tool's job.

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 direct usage constraints: app_kind can be cli or api, coding_language is python-only today, and UI demos should use other tools. It also flags that confirmation may be required when no Zeus URL is stored. It does not explicitly contrast against start_project or other siblings, but the guidance is clear enough for typical selection.

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

set_prereqA
Idempotent

Store non-secret prereqs for readiness (does not store password/token values).

Put real secrets in environment variables (ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, LLM_API_KEY). When the user named a Zeus URL or sample in chat, pass that zeus_url / bucket / scope here (not Helper localhost defaults). If the user did not name a URL, leave zeus_url empty and wait for the form. Do not copy the host ZEUS_URL. Persisted values override MCP host ZEUS_* env defaults so readiness/doctor hit the user's cluster (ZDM-3). Presence flags only for credentials and LLM key.

NameRequiredDescriptionDefault
modeNo
roleNo
scopeNo
bucketNo
zeus_urlNo
auth_modeNo
collectionNo
has_bearerNo
has_llm_keyNo
has_passwordNo
has_usernameNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide idempotentHint=true and destructiveHint=false, so the safety profile is already declared. The description adds genuinely useful behavior beyond that: values are persisted ('Persisted values override MCP host ZEUS_* env defaults'), the tool explicitly excludes secrets, and presence flags only apply to credentials/LLM key. No contradiction with annotations.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by dense, purposeful guidance on secrets, URL handling, and persistence. Every sentence earns its place and there is no fluff, though six sentences make it slightly long; it could be tightened without losing information.

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

Completeness3/5

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

For an 11-parameter tool with zero schema description coverage, the description covers the core flow well: secrets handling, URL-passing rules, persistence override, and presence-flag semantics. Output schema exists so return values need no explanation. But mode, role, auth_mode, and collection remain undefined, leaving meaningful gaps for such a complex, poorly-schematized tool.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it does for the most important parameters: zeus_url, bucket, scope (URL/sample passing rules) and the has_* presence flags ('Presence flags only for credentials and LLM key'). However, mode, role, auth_mode, and collection are never mentioned across 11 total parameters, leaving roughly a third of the surface unexplained.

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+resource: 'Store non-secret prereqs for readiness' and immediately negates what it does not do ('does not store password/token values'). This distinguishes it from the secret-handling context and from siblings like readiness_check and doctor, giving an agent a precise mental model of the tool's scope.

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?

Provides exceptionally explicit when/when-not conditions: pass zeus_url/bucket/scope when the user named a URL or sample in chat, leave zeus_url empty and wait for the form otherwise, and 'Do not copy the host ZEUS_URL.' The secret-vs-env-var routing ('Put real secrets in environment variables') tells the agent what must not go through this tool. No sibling is named, but the conditional guidance is detailed enough to drive correct invocation.

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

smoke_test_agentC

One ZeusRuntime run_turn (requires kotenai-zeus-client>=2.3.0 + LLM key).

If the client is missing and demo_travel_sample documents Docker install, returns guide-only docker compose next_action instead of only pip install.

NameRequiredDescriptionDefault
questionNoIn one short sentence, what data is available in this scope?
update_checklistNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds some behavioral context: it requires a specific client version and LLM key, and it may return a guide-only docker compose next_action. However, it does not explain side effects, failure modes, or what 'run_turn' entails. No contradiction with annotations.

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

Conciseness3/5

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

The description is short and front-loaded with the core dependency, but the second sentence is dense and somewhat cryptic. It earns its place by adding conditional behavior, but the phrasing is awkward and could be clearer. Not overly verbose, but not well-structured.

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

Completeness2/5

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

Given there is an output schema, the description needn't explain return values, but it still lacks essential context: what the tool actually does, when to use it, and what the parameters mean. The dependency and conditional behavior are useful but incomplete. An agent would struggle to invoke this correctly without more information.

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%, so the description must compensate. It does not explain the 'question' parameter or 'update_checklist' parameter at all. The description's mention of 'run_turn' and 'next_action' hints at behavior but not parameter meaning. With 0% coverage and no param explanation, this is a significant gap.

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

Purpose2/5

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

The description says 'One ZeusRuntime run_turn' but does not clearly state what the tool does. It mentions a dependency and a conditional behavior about docker compose, but the core action is vague. It does not distinguish itself from siblings like smoke_test_zeus or diagnose_error.

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

Usage Guidelines2/5

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

The description implies a conditional behavior (if client missing, return guide-only docker compose next_action) but does not explicitly state when to use this tool versus alternatives. No clear context for when an agent should invoke smoke_test_agent over smoke_test_zeus or diagnose_error.

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

smoke_test_zeusB

Smoke Zeus without LLM: readiness + POST /v2/{bucket}/{scope}/describe.

NameRequiredDescriptionDefault
update_checklistNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, which is a mixed safety profile. The description adds 'without LLM' to clarify that no language model is invoked, but doesn't disclose what happens during the smoke test (e.g., whether it creates or modifies resources), or what the readiness check entails. There is no contradiction, but the description is thin on behavioral details.

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

Conciseness4/5

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

The description is a single sentence with essential information: it identifies the tool's purpose and the endpoint. It is front-loaded with the key action 'Smoke Zeus without LLM' and includes a specific HTTP endpoint, which is efficient. No fluff or repetition.

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

Completeness3/5

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

The tool has a simple signature (1 optional param), annotations provide some safety context, and an output schema exists, so the description does not need to detail return values. However, given the existence of a sibling 'smoke_test_agent', the description should clarify the difference, and it doesn't explain what 'readiness' means in this context or what 'smoke' entails beyond an HTTP call. It is adequate but with gaps.

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

Parameters4/5

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

The schema has one optional parameter 'update_checklist' with 0% description coverage in the schema itself. The description does not explain it either, but with only one parameter and no required params, the burden is low. The parameter name is self-explanatory, and the description's focus on 'readiness' and 'describe' implies the checklist is updated, but explicit clarification would be better.

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

Purpose3/5

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

The description states the tool performs a 'smoke test' on Zeus and mentions a specific endpoint (POST /v2/{bucket}/{scope}/describe), which is specific. However, it does not differentiate from sibling tools like 'smoke_test_agent' – the name 'smoke_test_zeus' is a tautology, and the description doesn't clarify what makes it distinct from the agent variant.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose smoke_test_zeus over smoke_test_agent or other diagnostic tools. The context signals show no explicit usage context, so an agent would have to infer from the name.

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

start_projectB
Destructive

Start or reset first-app coaching checklist (single-agent default).

sample:

  • travel (default) — UI path via demo_travel_sample / use_sample

  • beer — beer-sample catalog UI; search is run_turn + MINI-SCHEMA (use_sample sample=beer)

  • demo_yelp — yelp-demo UI; use_sample clones the LocalAI template https://github.com/koten-ai/demo_yelp (aliases yelp-demo, demo-yelp)

  • api — API-only FastAPI scaffold (scaffold_app app_kind=api)

  • yelp / multi — gated until single-agent smokes green unless force_multi. Not the yelp demo. Utterances yelp-demo / demo_yelp use sample=demo_yelp.

Multi-agent goals (goal=multi or sample=yelp) are gated until single-agent smokes are green, unless force_multi=true (ZDH-11).

When no Zeus URL is stored, the MCP call asks for the public :8080 URL before the checklist starts. Leave zeus_url empty when the user did not name one. Do not copy the host ZEUS_URL. Do not pass a password.

NameRequiredDescriptionDefault
goalNosingle-agent
sampleNotravel
force_multiNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds useful behavior: 'reset' semantics, the interactive prompt for the public :8080 URL when no Zeus URL is stored, and the gating rule — but it also instructs about a zeus_url parameter that does not exist in the schema, muddying the picture.

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

Conciseness2/5

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

The core purpose is front-loaded in one line, but it then sprawls into sample routing, alias disambiguation, gating notes, and URL guidance. The yelp/demo_yelp disambiguation is stated twice ('Not the yelp demo. Utterances yelp-demo / demo_yelp use sample=demo_yelp') and concerns are interleaved, so several sentences do not earn their 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?

An output schema exists, so return values need no explanation, and the description does cover sample routing and multi-agent gating. Gaps remain: the three schema parameters have no descriptions, and the description references zeus_url (including a password warning) that the schema does not expose, leaving an agent unclear on what it can actually pass.

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

Parameters3/5

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

Schema coverage is 0% across all 3 parameters, so the description must carry the load. It does enumerate meaningful sample values (travel, beer, demo_yelp, api, yelp/multi) and explains goal=multi and force_multi, which is genuine added meaning. It still leaves the `goal` values under-specified and references a nonexistent zeus_url field, so it only partially compensates.

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 opening sentence gives a clear verb+resource: it starts or resets a first-app coaching checklist, with the single-agent default stated. However, sibling differentiation is muddled rather than clean — use_sample is described as an internal routing mechanism here rather than a distinct tool, and the yelp/demo_yelp distinction is repeated without clearly separating this tool's purpose from the sample-selection concern.

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 gives real conditions (multi-agent goals gated until single-agent smokes pass unless force_multi=true, and sample routing guidance). But this is guidance for parameter selection inside the tool, not when to choose start_project over siblings like next_step, explain_scope, or scaffold_app, so routing rivals remains implied.

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

use_sampleA
Idempotent

UI sample: travel clone, beer catalog UI, live-stamp page, or yelp demo clone.

sample=travel — locate/clone demo_travel_sample; set DEMO_TRAVEL_SAMPLE_DIR. sample=beer — shallow-clone https://github.com/koten-ai/demo_beer_sample when missing; set DEMO_BEER_SAMPLE_DIR. Start with python main.py after a Python 3.11+ virtualenv (python3 -m venv only when python3 is 3.11 or newer) and pip install -r requirements.txt. use_sample writes mode 600 .env from .env.example, keeps populated values, and adds missing template keys. LLM_API_KEY, LLM_BASE_URL, and LLM_MODEL are resolved together. The clone keeps LLM_MODEL=grok-4.5-latest. Do not copy .env.example over a .env that already has values. Lists are Direct and need no LLM key. Pour is rt.agent.run_turn with chat_request omitted (catalog.load_for_turn merges MINI-SCHEMA) and max_rounds 4. Pour stays off until an LLM key is in the app .env. No pipeline body. Do not write a job for this one-scope page. Clone success is not website_green. When the checkout has both a Dockerfile and a compose file, serve_choice_required is true, serve_options lists Python and Docker, and run is empty until serve_with is python or docker. Ask the user and wait. The helper does not run Docker. Pass serve_with on a later use_sample or website_green call. An already-serving checkout does not ask. sample=catalog — write demo_catalog_sample from explain_scope. A beer-sample bucket, or entity types that are exactly Beer and Brewery, still writes the beer UI. sample=demo_yelp — locate or clone the LocalAI template https://github.com/koten-ai/demo_yelp (aliases yelp-demo, demo-yelp); set DEMO_YELP_SAMPLE_DIR. When parent_dir is set, clone into that directory. The checkout is the app: pip install -e . && python -m local_guide on http://127.0.0.1:5000, and cd frontend && npm install && npm run dev on http://localhost:5173 (the SPA proxies /api to port 5000). Writes gitignored mode-600 config.json from this process. llm.api_key_env stays the name LLM_API_KEY. Search POSTs /api/search and sends the live chat_request.json for yelp-demo/_default mode analytics as the session body. A 401 stays red. Search cards get latitude and longitude from biz:yelp: when the project step omits them, including a cached business page. The business page GETs /api/business/{id} when the id is not in the bundled catalog. Review text is the source document, not the rev: doc key. Also downloads the public business photo set into frontend/public/business-images//{1,2,3}.png (no biz: prefix, no API key). Do not write a replacement or copy demo_beer_sample. Bare sample=yelp stays the multi-agent handoff. project_name = directory name (defaults: demo_travel_sample / demo_beer_sample / demo_catalog_sample / demo_yelp). Extra travel-only phases stay on travel_golden_path (travel toolset). When no Zeus URL is stored, the MCP call asks before writing or cloning. Do not pass a password.

NameRequiredDescriptionDefault
sampleNotravel
parent_dirNo
sample_dirNo
serve_withNo
project_nameNo
clone_if_missingNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior5/5

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

Beyond the annotations (openWorldHint, idempotent, non-destructive, non-read-only) it discloses that the tool clones from GitHub, writes a mode-600 .env from .env.example while preserving existing values, sets DEMO_*_SAMPLE_DIR, downloads business photos into frontend/public, surfaces 401 as red, and refuses to run Docker. These are exactly the side effects an agent needs before invoking a write-capable setup tool, and they do not contradict the annotations.

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

Conciseness2/5

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

A single dense block mixing sample selection, environment setup, agent-runtime internals (rt.agent.run_turn, catalog.load_for_turn, MINI-SCHEMA, max_rounds 4), and edge cases, with no paragraph breaks or front-loading. Several sentences ('No pipeline body. Do not write a job for this one-scope page.') are cryptic and only meaningful to a reader already deep in the system.

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 output schema is present, so return values need not be explained, and many edge cases (serve choice, missing Zeus URL, catalog bucket detection) are covered. However, for a 6-parameter multi-mode tool the description still leaves sample_dir and clone_if_missing undefined and lacks a coherent overview, so an agent must assemble the contract from scattered fragments.

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% across 6 parameters, so the description must carry the load. It does explain the `sample` values in depth, plus `parent_dir`, `project_name` defaults, and `serve_with` (python/docker), but `sample_dir` and `clone_if_missing` are only obliquely implied, leaving two parameters materially undocumented.

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 body makes clear that this tool locates/clones demo sample checkouts and configures them, keyed by the `sample` value (travel, beer, catalog, demo_yelp), with concrete actions per mode. The opening line is a fragment ('UI sample: travel clone, beer catalog UI...') rather than a clean verb+resource statement, and it never says how it differs from sibling setup tools like scaffold_app or start_project.

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 real conditional guidance: ask the user and wait when serve_choice_required is true, pass serve_with on a later call, do not copy .env.example over a populated .env, do not write a replacement/copy demo_beer_sample, and route travel-only phases to travel_golden_path. It lacks an explicit 'use this instead of X when Y' comparison against scaffold_app/start_project, but the do/don't guidance is substantial.

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

website_greenA

Install, start, and check the catalog page.

Separate from smoke_test_zeus. Mints the scope session when auth is basic, then checks list cards and, when Pour is on, one search. A title-cased doc_key or src_keys entry is not a search card. A describe 200 is not this check. Does not call smoke_test_agent. No secrets in the result. serve_with is python or docker. When the checkout has both a Dockerfile and a compose file and serve_with is empty, this returns serve_choice_required and does not start Python. Docker is not run.

NameRequiredDescriptionDefault
serve_withNo
target_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Adds substantial behavior beyond annotations: it mints the scope session under basic auth, returns serve_choice_required (rather than starting Python) when both a Dockerfile and compose file exist with empty serve_with, never runs Docker, and guarantees no secrets in the result. The write/side-effect nature is consistent with readOnlyHint=false. It doesn't cover error/retry behavior, keeping it below a 5.

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

Conciseness3/5

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

Front-loaded with the core action, and the serve_choice_required sentence earns its place. But the middle section is a pile of defensive negations ("is not a search card", "is not this check", "Does not call...") that could be tightened.

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

Completeness4/5

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

The tool performs multi-step orchestration, and the description covers the key decision point and failure mode plus the auth and secrets constraints. Output schema exists, so return-value explanation is not required; only target_dir semantics remain unaddressed.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It documents valid values for serve_with ("python or docker") and its empty-string fallback semantics, but target_dir is never described. Partial compensation warrants a 3.

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

Purpose4/5

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

States specific verbs and a resource ("Install, start, and check the catalog page") and explicitly separates itself from smoke_test_zeus and smoke_test_agent, so an agent can distinguish it from siblings. However, jargon like "Pour" and "list cards" is unexplained, leaving the exact scope somewhat opaque.

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 explicit exclusions ("A describe 200 is not this check", "Does not call smoke_test_agent") that route the agent away from wrong tools, plus the concrete condition that triggers serve_choice_required. It stops short of a positive "use this when X" statement, but the exclusions carry strong guidance.

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. 3 tool updatesv0.7.10
    • Changedrecommend_surface7 fields changed
      • addedInput schema / properties / page
        Added value: +{
        +  "default": "",
        +  "title": "Page",
        +  "type": "string"
        +}
      • addedInput schema / properties / page_interaction
        Added value: +{
        +  "default": false,
        +  "title": "Page Interaction",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / report_wait_s
        Added value: +{
        +  "default": 0,
        +  "title": "Report Wait S",
        +  "type": "number"
        +}
      • addedInput schema / properties / scope_count
        Added value: +{
        +  "default": 0,
        +  "title": "Scope Count",
        +  "type": "integer"
        +}
      • addedInput schema / properties / settings_mode
        Added value: +{
        +  "default": "",
        +  "title": "Settings Mode",
        +  "type": "string"
        +}
      • addedInput schema / properties / source_type_count
        Added value: +{
        +  "default": 0,
        +  "title": "Source Type Count",
        +  "type": "integer"
        +}
      • addedInput schema / properties / url_count
        Added value: +{
        +  "default": 0,
        +  "title": "Url Count",
        +  "type": "integer"
        +}
    • Changeduse_sample1 field changed
      • addedInput schema / properties / serve_with
        Added value: +{
        +  "default": "",
        +  "title": "Serve With",
        +  "type": "string"
        +}
    • Changedwebsite_green1 field changed
      • addedInput schema / properties / serve_with
        Added value: +{
        +  "default": "",
        +  "title": "Serve With",
        +  "type": "string"
        +}
  2. 5 tool updatesv0.7.8
    • Changeddiagnose_error6 fields changed
      • addedInput schema / properties / hop_bucket
        Added value: +{
        +  "default": "",
        +  "title": "Hop Bucket",
        +  "type": "string"
        +}
      • addedInput schema / properties / hop_name
        Added value: +{
        +  "default": "",
        +  "title": "Hop Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / item_keys
        Added value: +{
        +  "default": "",
        +  "title": "Item Keys",
        +  "type": "string"
        +}
      • addedInput schema / properties / node_keys
        Added value: +{
        +  "default": "",
        +  "title": "Node Keys",
        +  "type": "string"
        +}
      • addedInput schema / properties / result_keys
        Added value: +{
        +  "default": "",
        +  "title": "Result Keys",
        +  "type": "string"
        +}
      • addedInput schema / properties / symptom
        Added value: +{
        +  "default": "",
        +  "title": "Symptom",
        +  "type": "string"
        +}
    • Addedexplain_scope
    • Addedload_process_login
    • Addedsample_support_pack
    • Addedwebsite_green
  3. 12 tool updatesv0.7.3
    • First observedbind_contract
    • First observeddiagnose_error
    • First observeddoctor
    • First observednext_step
    • First observedreadiness_check
    • First observedrecommend_surface
    • First observedscaffold_app
    • First observedset_prereq
    • First observedsmoke_test_agent
    • First observedsmoke_test_zeus
    • First observedstart_project
    • First observeduse_sample

TDQS

B3.1/5.0

Scored across 16 tools

Disambiguation3/5

Several tools overlap in purpose: doctor, readiness_check, and smoke_test_zeus all perform health/readiness checks; start_project, scaffold_app, and use_sample all bootstrap a project. The detailed descriptions do help disambiguate (e.g. doctor is local env, readiness_check is live platform, smoke_test_zeus is no-LLM describe), but the boundaries require careful reading rather than being obvious from names alone.

Naming Consistency3/5

All names use snake_case, which is consistent, but the verb/noun convention varies: some are clear verb_noun (set_prereq, use_sample, scaffold_app, bind_contract), while others are bare nouns or adjectives (doctor, next_step, website_green, explain_scope). It's readable but not a predictable single pattern.

Tool Count3/5

16 tools is borderline heavy for a dev-onboarding helper. Each roughly maps to a distinct workflow step (prereqs, checks, scaffolding, samples, diagnostics, coaching), but the surface feels large enough that some consolidation (e.g. merging the check tools) could improve clarity.

Completeness4/5

The surface covers the full onboarding lifecycle: environment health (doctor), live readiness (readiness_check), smoke tests, sample scaffolds, project scaffolding, prereq storage, login loading, error diagnosis, scope explanation, and coaching (next_step). Only minor gaps remain, such as no explicit teardown/reset or contract-validation beyond bind_contract.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Local-first Agent OS that wraps Claude Code, Codex CLI, and other coding agents in a replayable Seed → Ledger → Runtime contract, driven by an interview → seed → execute → evaluate → evolve workflow loop.
    34
    18,180 PyPI
    6,303
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding agents to run a specification-first workflow with Socratic interviews, immutable seed specs, staged evaluation gates, and persistent evolutionary loops across multiple runtimes.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding agents to conduct Socratic interviews, crystallize answers into immutable specifications, execute staged development, and run automated evaluation and evolutionary loops until convergence.
    MIT