Zeus Dev Helper

io.github.koten-aiPublished by GitHub account koten-aiv0.7.12Updated Nov 6, 2026

Coach first Zeus Client app to green (stdio MCP).

VerifiedSTDIODesktop onlyCloud & InfrastructureDeveloper Tools

Overview

AI-generated overview

Stdio MCP server that coaches a coding agent and its user through building a first working Zeus Client app, from prerequisites to smoke tests.

What you can do
  • Run health and environment diagnostics, and store non-secret prerequisites such as Zeus URL, bucket and scope
  • Start or reset a first-app checklist and get the single current blocker with the recommended next tool
  • Check live Zeus readiness, summarize the live chat_request scope, and bind a stamped contract hash
  • Scaffold a Python CLI or FastAPI app, or clone travel, beer catalog or yelp demo samples with a generated .env
  • Recommend the right client surface and verbs, run smoke tests without or with an LLM, and diagnose errors
  • Produce a read-only support pack for a failing gate
When to use it
Use it when you are building a first Zeus Client application and want step-by-step coaching, live readiness checks and smoke tests against a Zeus API. It is aimed at onboarding, not at running data-plane queries or admin work.
Requirements
Local Python 3.11+ process, typically run with uvx from the PyPI package with the agent extra. Needs a Zeus public API base URL on port 8080 via ZEUS_URL, plus optional bucket and scope. Basic auth or bearer credentials (ZEUS_USERNAME, ZEUS_PASSWORD, ZEUS_BEARER_TOKEN) and an LLM key (LLM_API_KEY, XAI_API_KEY or OPENAI_API_KEY) for agent smoke tests. Network access for package installs and sample clones.
Before you install
It asks for Zeus credentials and an LLM API key; keep them in the process environment or a mode-600 file, since set_prereq stores presence flags only. Tools write files: it clones sample repositories, scaffolds apps, and writes or rewrites a .env in the target project. It clones public GitHub samples and downloads a public photo set, and GITHUB_TOKEN is used for private catalogs. It does not run Docker or post data-plane queries.

Installation

In SourceWeft

  1. Open Zeus Dev Helper in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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.

Packagezeus-dev-helper-mcp
Registry nameio.github.koten-ai/zeus-dev-helper
Transportstdio
Python3.11+
MCP SDKmcp (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

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.

bash
pip install "zeus-dev-helper-mcp[agent]"# oruvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp

Run

bash
zeus-dev-helper-mcp# orpython -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.

bash
# Remote Zeus (typical lab / shared engine) — put your host hereexport 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.

bash
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:

bash
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:

toml
[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

json
{  "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):

json
{  "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.

toml
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
toml
[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

text
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 follows the beer creation procedure for public demo_travel_sample. The clone URL stays https://github.com/koten-ai/demo_travel_sample.git. The destination is sample_dir, or parent_dir plus project_name. A blank parent is the directory next to this Helper checkout. A foreign default directory moves to the next open sibling. An explicit foreign sample_dir returns foreign_sample_dir and writes nothing. A recorded checkout that answers GET /api/health stays in place. The entrypoint stays python -m travel_planner on port 5000 unless PORT is set. use_sample writes a mode 600 .env from the non-secret Zeus and LLM names, keeps populated values, and fills empties. A rewrite of an existing .env sets env_change. settings_written names which of ZEUS_AUTH_MODE, ZEUS_USERNAME, LLM_BASE_URL, and LLM_MODEL changed. settings_kept gives the populated values that stayed. ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, and LLM_API_KEY stay presence-only in secret_presence. Restart the app before run_turn when env_change is true. ZEUS_USERNAME defaults to demo_1. The create path does not rewrite the Dockerfile or compose file. Checklist 1.2 stays open until this process has LLM_API_KEY, XAI_API_KEY, or OPENAI_API_KEY, because this page is search and has no Direct list. Checklist 3.2 stays open until that key is in the app .env. set_prereq(has_llm_key=true) does not count. After the app is on disk, checklist 5.1, 5.2, and 6.1 recommend website_green. Travel is one scope: smoke-green does not recommend handoff_to_multi and does not write jobs.host_url.
  • 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. A rewrite of an existing .env sets env_change. settings_written names which of ZEUS_AUTH_MODE, ZEUS_USERNAME, LLM_BASE_URL, and LLM_MODEL changed. settings_kept gives the populated values that stayed. ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, and LLM_API_KEY stay presence-only in secret_presence. Restart the app before run_turn when env_change is true. 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).

ToolJob
doctorHealth. detail=health|env|compat|cache|all (env/compat/cache fold lint-toolset checks)
start_projectInit checklist; sample=travel (UI default), sample=beer (catalog UI, run_turn), sample=demo_yelp (clone demo_yelp), or sample=api
next_stepCurrent item plus recommended tools and resource links
set_prereqStore non-secret prereqs (presence flags only; has_llm_key is not the key)
readiness_checkLive 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_scopeLive 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_appCLI or FastAPI (app_kind=cli|api) ZeusRuntime app; python only
use_sampleTravel 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_contractCopy 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_surfaceIntent → Client surface + do-not list
smoke_test_zeusNo LLM: readiness plus a read-only describe
website_greenInstall, 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_agentOne Client run_turn. Needs [agent] extra and LLM_API_KEY, XAI_API_KEY, or OPENAI_API_KEY in this process
diagnose_errorMap a symptom, hop name, and result keys to a failure class and one generated-file change
sample_support_packRead-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.

VariablePurpose
ZEUS_URLPublic Zeus API base URL (port 8080). Remote host first; localhost only when Zeus is local
ZEUS_BUCKET / ZEUS_SCOPE / ZEUS_COLLECTIONScope for bootstrap and auth probes
ZEUS_MODEDefault catalog mode (analytics)
ZEUS_AUTH_MODEAuth mode (none, basic, bearer)
ZEUS_USERNAME / ZEUS_PASSWORDBasic auth (never logged)
ZEUS_BEARER_TOKENBearer auth (never logged)
LLM_API_KEY / XAI_API_KEY / OPENAI_API_KEYProcess 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_MODELOpenAI-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_DIRLocal directory of min catalog templates; auto-set when list_catalog_modes / fetch_chat_request locate or clone public zeus_chat_request
DEMO_TRAVEL_SAMPLE_DIRLocal sample directory for use_sample / travel_golden_path
DEMO_YELP_SAMPLE_DIRLocal demo_yelp directory for use_sample(sample=demo_yelp)
BUSINESS_IMAGES_BASE_URLOptional 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_IMAGESSet to 1 to skip the yelp photo download during use_sample(sample=demo_yelp)
YELP_IMAGE_FETCH_WORKERSParallel downloads for that photo set. Default 8
ZEUS_DEV_HELPER_STATE_DIRChecklist, 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_TOOLSETSStatic toolsets: core (default), plus catalog,lint,travel,support,handoff or all

Boundaries

This MCPNot this MCP
Onboarding coach to first greenData-plane Explore/Verify tools
Catalog templates plus readiness and smokeInventing or locally computing contract_hash
Verb explain / lint / draft (posted=false)POSTing find / search / get / pipeline
Detective URL templatesHub scrape or Hub admin mutations
Multi / data-plane handoffsMulti-agent job runtime
Local checklist and metricsShipping secrets in evidence or support packs

Dev install

From a local checkout:

bash
python3 -m venv .venv && source .venv/bin/activatepip install -e ".[dev,agent]"export ZEUS_URL=http://localhost:8080
bash
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.

Source: README.md at commit fe60ac3

Tools

17

doctor

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.

Parametersdetail

start_project

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.

Parametersgoalsampleforce_multi

next_step

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.

Takes no parameters.

set_prereq

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.

Parametersmoderolescopebucketzeus_urlauth_modecollectionhas_bearerhas_llm_keyhas_passwordhas_username

load_process_login

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.

Parametersenv_filerequired

readiness_check

Live Zeus platform gates: healthz/readyz/version, auth, bootstrap, chat_request. Never returns secret values. Emits failure_class + next_action on red paths.

Parametersupdate_checklist

explain_scope

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.

Takes no parameters.

scaffold_app

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.

Parametersforceapp_kindtarget_dirrequiredproject_namecoding_language

use_sample

UI sample: travel clone, beer catalog UI, live-stamp page, or yelp demo clone. sample=travel — shallow-clone https://github.com/koten-ai/demo_travel_sample.git when the destination is missing. The destination is sample_dir, or parent_dir plus project_name. A blank parent is the directory next to this Helper checkout. Start with python -m travel_planner on port 5000 unless PORT is set. The create path does not rewrite Docker files. Set DEMO_TRAVEL_SAMPLE_DIR. A mode 600 .env keeps populated values and fills empty Zeus and LLM names. ZEUS_USERNAME defaults to demo_1. A rewrite of an existing .env sets env_change. settings_written names which of ZEUS_AUTH_MODE, ZEUS_USERNAME, LLM_BASE_URL, and LLM_MODEL changed. settings_kept gives the populated values that stayed. ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, and LLM_API_KEY stay presence-only in secret_presence. Restart the app before run_turn when env_change is true. 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. A rewrite of an existing .env sets env_change. settings_written names which of ZEUS_AUTH_MODE, ZEUS_USERNAME, LLM_BASE_URL, and LLM_MODEL changed. settings_kept gives the populated values that stayed. ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, and LLM_API_KEY stay presence-only in secret_presence. Restart the app before run_turn when env_change is true. 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

Parameterssampleparent_dirsample_dirserve_withproject_nameclone_if_missing

inject_business_rules

Write named business rules into the current Zeus app. Omit app_dir and sample to use the current directory when it is a Zeus app, otherwise the checklist sample (the beer app just created). ask_user means ask and wait, then call again. An explicit path that is not a Zeus app returns not_a_zeus_app and does not write. wire_required means the app builds ClientSettings itself. Pass settings.rules into that constructor. This tool writes config.json only.

Parametersrulesremovesampleapp_dirreplace

smoke_test_zeus

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

Parametersupdate_checklist

website_green

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 host_question and does not start Python. Follow host_question and next_action. Docker is not run.

Parametersserve_withtarget_dir

smoke_test_agent

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.

Parametersquestionupdate_checklist

diagnose_error

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.

Parametersbodyreq_idstatuschat_idmessagesymptomturn_idhop_namezeus_urlitem_keysnode_keyserror_code+4 more

sample_support_pack

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.

Parameterssample

recommend_surface

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.

Parametersqpspageintentrequiredneeds_llmurl_countscope_countreport_wait_ssettings_modepage_interactionsource_type_count

bind_contract

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.

Parametersmodepathscopebucketjson_text

Version history

10
  1. v0.7.12LatestNov 6, 2026
  2. v0.7.11Nov 4, 2026
  3. v0.7.10Oct 29, 2026
  4. v0.7.8Oct 15, 2026
  5. v0.7.7Oct 10, 2026
  6. v0.7.6Oct 6, 2026
  7. v0.7.5Sep 25, 2026
  8. v0.7.4Sep 23, 2026
  9. v0.7.3Sep 18, 2026
  10. v0.7.0Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts