io.github.koten-ai/zeus-dev-helper
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZEUS_URL | Yes | Public Zeus API base URL (port 8080). Remote host first; localhost only when Zeus is local. | |
| ZEUS_MODE | No | Default catalog mode | analytics |
| ZEUS_SCOPE | No | Scope for bootstrap and auth probes | |
| LLM_API_KEY | No | Presence checked by validate_env; required for smoke_test_agent | |
| ZEUS_BUCKET | No | Scope for bootstrap and auth probes | |
| ZEUS_PASSWORD | No | Basic auth (never logged) | |
| ZEUS_USERNAME | No | Basic auth (never logged) | |
| OPENAI_API_KEY | No | Presence checked by validate_env; required for smoke_test_agent | |
| ZEUS_AUTH_MODE | No | Auth mode (none, basic, bearer) | |
| ZEUS_COLLECTION | No | Scope for bootstrap and auth probes | |
| ZEUS_BEARER_TOKEN | No | Bearer auth (never logged) | |
| ZEUS_CHAT_REQUEST_DIR | No | 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 | No | Local sample directory for use_sample / travel_golden_path | |
| ZEUS_DEV_HELPER_TOOLSETS | No | Static toolsets: core (default), plus catalog,lint,travel,support,handoff or all | core |
| ZEUS_DEV_HELPER_STATE_DIR | No | Checklist, prereqs, and local metrics | ~/.config/zeus_dev_helper |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| doctorB | Health / doctor. detail: health | env | compat | cache | all. 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. |
| start_projectB | Start or reset first-app coaching checklist (single-agent default). sample:
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. |
| next_stepA | 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. |
| set_prereqA | 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. |
| load_process_loginA | 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. set_prereq stores presence flags only. The result lists loaded names and never values. Then readiness_check. |
| readiness_checkB | Live Zeus platform gates: healthz/readyz/version, auth, bootstrap, chat_request. Never returns secret values. Emits failure_class + next_action on red paths. |
| explain_scopeB | 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. A failed stamp sets failure_class and does not invent entity types. |
| scaffold_appA | 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. |
| use_sampleA | 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 — write demo_beer_sample catalog UI. Search is rt.agent.run_turn with chat_request omitted (catalog.load_for_turn merges MINI-SCHEMA). LLM key required. No pipeline body. 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. |
| smoke_test_zeusB | Smoke Zeus without LLM: readiness + POST /v2/{bucket}/{scope}/describe. |
| website_greenB | 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. |
| 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. |
| diagnose_errorB | 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. |
| sample_support_packA | 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. |
| recommend_surfaceC | Pick Direct vs agent surface + Trace-Class (ZDH-18). Does not call Zeus. |
| bind_contractA | Extract stamped contract.hash only. Refuse placeholders / compute_local (ZDH-22). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| first_green | Day-one path to a first green ZeusRuntime turn. |
| smoke_question | Advice-shaped question for smoke_test_agent. |
| support_pack | Redacted support pack from a failed turn. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| checklist | First-app coaching checklist JSON |
| glossary | Glossary topic index (read zeus-helper://glossary/{topic} for a page) |
| verbs | V2 verb index (read zeus-helper://verbs/{name} for a page) |
| hash_boundary | What is excluded from contract_hash (MINI-SCHEMA / brief) |
| req_id_policy | One UUID per hop; never composite hop ids; never Rewind /turn |
| catalog_modes | V2 min chat_request modes from zeus_chat_request (TEMPLATE ONLY) |
TDQS
Scored across 16 tools
Several tools overlap in verification/prereq/diagnostic space (readiness_check, smoke_test_zeus, smoke_test_agent, website_green, doctor, diagnose_error), and setup tools (set_prereq, load_process_login) can be confused. Descriptions explicitly clarify separations and non-goals, but the agent still needs careful reading to avoid misselection.
Most names are snake_case, but the set mixes verb_noun patterns (start_project, use_sample, bind_contract) with noun phrases (readiness_check, sample_support_pack) and a single bare noun (doctor). It remains readable but not predictably patterned.
With 16 tools, the set sits at the heavy end for a dev-helper server. Many tools earn their place across the lifecycle, but the count feels borderline and contributes to overlap among readiness, smoke, website, and diagnostic operations.
The surface covers prereq setup, login loading, sample creation, scaffolding, readiness, smoke tests, website checks, diagnostics, support, next-step coaching, surface recommendation, and contract binding. Minor gaps exist around cleanup/reset beyond start_project and explicit secret management, but core workflows are covered.