dsh-zcode-bridge
The dsh-zcode-bridge MCP server lets a dsh master agent delegate bounded coding tasks to the local ZCode Agent, then monitor, steer, and collect results for independent review.
Submit work —
zcode_taskstarts one asynchronous ZCode coding task with a required task ID, workspace, objective, requirements, allowed/forbidden paths, acceptance criteria, and test commands, plus optional context,worktree_path,timeout_ms, and per-taskmodel.Watch progress —
zcode_eventsstreams persisted execution events withafter_seq/wait_ms(up to 25s) andraworsummaryviews, informing you of the project path, effective execution path, session, runtime-reported model/reasoning level, and execution mode.Check status —
zcode_statusreads execution-only status (queued, running, completed, failed, cancelled, waiting_for_master) with attempt, timestamps, worker pid, and exit code; it never contains a PASS/FAIL judgment.Answer requests —
zcode_interaction_replyresponds to ZCode permission or user-input requests surfaced by events (allow/deny/accept/decline, with answers keyed by the full question text).Read results —
zcode_resultreturns the terminal TaskResult: summary, files changed, tests, issues, decisions needed, and raw ZCode output — all subordinate claims that must be verified independently.Iterate or stop —
zcode_continuesends master feedback to a finished task (incrementing the attempt) andzcode_cancelhalts a queued or running task once process-tree termination is confirmed.Manage models —
zcode_model_cataloglists available providers, models, context windows, and reasoning levels (24-hour cache);zcode_default_model,zcode_set_default_model, andzcode_clear_default_modelread, set, or clear the default used when a task omitsmodel.Diagnose setup —
zcode_doctorruns read-only checks of prerequisites, ZCode runtime/provider configuration, execution mode, task storage, and Desktop task-index availability without starting a session.Experimental —
zcode_progress_probeis a temporary read-only tool that emits MCP progress notifications to test host display (disabled by default per the project README).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dsh-zcode-bridgeadd pagination to the users endpoint and show me the diff"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
dsh-zcode-bridge
Use ZCode as a coding worker inside DeepSeek Harness (dsh).
Delegate coding tasks from your dsh agent to the local ZCode Agent. The dsh agent assigns tasks, monitors progress, reviews the resulting changes, and decides whether to accept the work or send it back for another iteration.
dsh delegates. ZCode codes. dsh reviews.
Forked from codex-zcode-bridge (a Codex plugin); the shared Bridge core is pinned as a dependency and delivered as a DeepSeek Harness bundle. See Fork notes.
How it works
You
│ "Implement this feature."
▼
dsh agent ── delegates task ──▶ dsh-zcode-bridge ── starts / monitors ──▶ ZCode Agent
▲ │
└────────── reviews diff, verifies, accepts or continues ◀── reports ──────┘The dsh agent remains responsible for task definition, architecture, review, and acceptance. ZCode handles bounded implementation work in the local development environment. The bundle connects them through an MCP server (registered via the shipped @deepseek-ai/dsh-mcp-client) and ZCode's local runtime.
MCP tools appear as mcp__zcode_bridge__zcode_task, mcp__zcode_bridge__zcode_events, mcp__zcode_bridge__zcode_result, and the other zcode_* tools. The server also publishes MCP instructions describing the delegation flow and review discipline.
Related MCP server: dsh-mcp-server
Features
Submit, follow, continue, and cancel ZCode tasks from dsh.
Run tasks across multiple projects concurrently; tasks sharing an execution directory are queued.
Read the live ZCode model catalog and reasoning levels, select a provider/model per task, and get/set/clear a Bridge default model.
At startup, report the project directory, execution directory, ZCode session, runtime-reported model and reasoning level, and execution mode.
Group ZCode Desktop tasks under the delegating project directory; index sync failures do not stop task execution.
Install
Requires Node.js 22.18+, Git, ZCode installed and signed in, and DeepSeek Harness. Real ZCode E2E has only been completed on Windows; macOS and Linux have not been verified.
Install the bundle
Get the bundle directory
plugins/dsh-zcode-bridgeonto the machine running dsh (clone this repository, or download a release archive).In a dsh session, call the
plugin_managertool withaction: install_bundleand the absolute bundle directory astarget(Creator mode can do this from a plain instruction such as "install the bundle at ").After
application: applied, verify the connection by callingmcp__zcode_bridge__zcode_doctor.
install_bundle copies the bundle into the profile's node_modules. The patch computes the server path from DSH_PROFILE_DIR, which every profile-launched Harness provides; if activation fails with "DSH_PROFILE_DIR is not set", launch dsh with a profile, or edit cordis.patch.yml to hard-code the absolute path to server/bridge.mjs. Tools appear to the model only after the MCP connection succeeds (failOnStartupError: true rejects activation on failure).
Configuration
Task data lives in %USERPROFILE%\.dsh\zcode-bridge\ (macOS/Linux: ~/.dsh/zcode-bridge/). Optional settings go in runtime-config.json inside that directory (create it manually if needed). Keep the discovered path fields and change only the values you need:
ZCODE_BRIDGE_NODE: absolute path to Node.js (only needed whennodeis not on PATH).ZCODE_BRIDGE_ZCODE_CJS: absolute path to the ZCode runtime.ZCODE_BUILTIN_PROVIDER_CONFIG_FILEandZCODE_PERSONAL_PROVIDER_CONFIG_FILE: absolute paths to the builtin and personal provider config files.ZCODE_HOME: absolute path to the actual.zcodedata directory.ZCODE_BRIDGE_DATA_DIR: absolute path to the Bridge task data directory.ZCODE_BRIDGE_DEFAULT_PROVIDER_IDandZCODE_BRIDGE_DEFAULT_MODEL_ID: default provider and model IDs; set both.ZCODE_BRIDGE_MODE: initial execution mode:plan,build,edit, oryolo; defaults toyolo.yoloallows ordinary tool operations with the current operating-system account's permissions. Set it tobuildto use ZCode's approval rules.ZCODE_BRIDGE_TIMEOUT_MS: default wall-clock limit for one task attempt whentimeout_msis omitted; 60,000–14,400,000 milliseconds, default 3,600,000 (60 minutes).ZCODE_BRIDGE_MAX_CONCURRENT_WORKERS: parallel task limit, 1–8, default 8.
ZCODE_HOME must point to the .zcode directory, and the personal provider config must be at v2/provider_config.json inside it. Copy provider/model IDs from your ZCode configuration, and do not edit ZCode's provider files.
Use
Describe the development task and its acceptance criteria. The dsh agent decides whether to prepare a worktree, then delegates the task to ZCode. ZCode runs in that worktree when provided, or directly in the project directory otherwise. ZCode does not automatically receive the full conversation, so the delegating agent must include any required project decisions and constraints with the task.
After execution, review the actual diff and run acceptance checks independently. completed means ZCode reported the task finished; it does not mean the changes are approved. If an unresolved decision could materially affect behavior, ZCode asks for direction before proceeding on that point.
In ZCode Desktop, find tasks in the Workspace view under the delegating project directory.
For installation or startup problems, call mcp__zcode_bridge__zcode_doctor for read-only setup diagnostics. Use zcode_model_catalog to read model IDs and reasoning levels, pass provider_id/model_id in zcode_task.model for one task, and manage the default with zcode_set_default_model / zcode_default_model / zcode_clear_default_model.
For richer delegation discipline (polling patterns, interaction replies, model-selection rules), see docs/BRIDGE_WORKFLOW.zh-CN.md; you can adapt it into your AGENTS.md.
Known issues
The ZCode Desktop sidebar may not immediately show a new session. The Bridge best-effort syncs the local task index; Desktop controls when the list refreshes.
ZCode Start Plan is currently unavailable through the Bridge.
A worker gets a 10-second cold-start grace window (
workerStartGraceMs): within it, a missing or just-exited pid does not immediately finalizeworker_lost; later reconcile ticks re-check. If a worker exits before writingstarted.json(it never ran the task), the Bridge respawns it once on the same attempt (a claim marker in the attempt directory prevents the Bridge processes sharing a data root from double-spawning); a worker that did start is never auto-respawned — the master decides whether to continue. Scheduling is serialized across Bridge processes sharing one data root. Separate data roots do not coordinate conflicting workspace writes.
Security and limitations
The default execution mode is
yolo. It allows ordinary tool operations with the current operating-system account's permissions; a worktree is not a sandbox. SetZCODE_BRIDGE_MODEtobuildto use ZCode's approval rules. The Bridge has protocol tests for permission forwarding, but a real ZCode permission-approval roundtrip has not been verified.A Git worktree isolates the working directory; it is not an operating-system sandbox.
allowed_pathsandforbidden_pathsdescribe task constraints but cannot prevent the process from accessing other files or running commands.The dsh agent decides whether to create a worktree. The Bridge uses the supplied project directory and optional worktree path; it does not create or remove worktrees.
Parallel tasks use more local resources and provider capacity.
The dsh-mcp-client scrubs credential-shaped ambient variables (
KEY|PASSWORD|SECRET|TOKEN) andDSH_*names before spawning the Bridge; the Bridge needs none of them (ZCode reads its own provider config files). The Bridge stores prompts, status, logs, visible model output, events, and results locally in~/.dsh/zcode-bridge/. Do not include data in tasks or workspaces if it should not be sent to the selected model service or persisted locally.The Bridge uses the local ZCode app-server. Interactions and available events depend on the installed ZCode version. For AskUserQuestion replies, key
answersby each fullquestions[].questiontext and use the selected or explicit answer as its value; do not use the header or option label as the key. Only allow permission requests when the user explicitly authorizes the action.
Build from source
The repository includes TypeScript source for review and self-builds. With Node.js 22.18+:
npm ci
npm run build
npm run validate:bundleThe build writes the self-contained MCP server and worker into plugins/dsh-zcode-bridge/{server,worker}; both artifacts are committed so the bundle is installable without a build step.
Shared core provenance, host boundaries, configuration migration and upgrade steps are documented in docs/SHARED_CORE.md. The default tool set contains 12 stable tools; the experimental progress probe is disabled.
Fork notes
Forked from
codex-zcode-bridgeat v1.0.0 and ported from a Codex marketplace plugin to a dsh bundle.Codex plugin surfaces (
.codex-plugin,plugin.json,mcp.json,hooks/,skills/) were removed; dsh has no hook or skill channel, so first-run setup guidance moved tozcode_doctor, tool descriptions, and MCP server instructions.Bridge data moved from
~/.codex/codex-zcode-bridge/to~/.dsh/zcode-bridge/; no data is migrated between them.The MCP server name is
dsh-zcode-bridge; the dsh MCP server namespace iszcode_bridge.
Acknowledgements and license
Process handling is adapted in part from cc-plugin-codex; ZCode Desktop task-index integration is adapted in part from zcode-acp. Thanks to the MCP TypeScript SDK, Zod, the ZCode project, and the DeepSeek Harness team. See NOTICE for source and copyright details.
This project is licensed under Apache License 2.0. Third-party components remain subject to their respective licenses.
Available Tools
13 toolszcode_cancelCancel a queued or running ZCode taskA
Cancel a queued or running task. Running cancellation returns only after the worker process tree termination is confirmed. Results describe Bridge/ZCode execution only: status 'completed' means the invocation and report normalization finished, NOT that the master agent accepted the work. The master agent must independently review the workspace diff and checks before deciding PASS.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| status | Yes | |
| attempt | Yes | |
| task_id | Yes | |
| exit_code | Yes | |
| created_at | Yes | |
| error_code | No | |
| started_at | Yes | |
| updated_at | Yes | |
| worker_pid | Yes | |
| finished_at | Yes | |
| zcode_session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does unusually well: it discloses that running cancellation blocks until worker process tree termination is confirmed (a non-obvious synchronous behavior) and clarifies that a 'completed' status reflects only invocation/report normalization, not master-agent acceptance. Idempotency, behavior on already-terminal tasks, and permission requirements remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and scope are front-loaded in the first sentence, and the subsequent sentences about blocking behavior and result semantics each carry real information. The master-agent 'PASS' caveat is slightly tangential to invoking this specific tool but is not wasted given the result ambiguity it resolves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description goes further and disambiguates the 'completed' status, which is the main interpretive hazard for this tool. Combined with the blocking-termination disclosure, it is nearly complete; prerequisites and failure modes are the only notable omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter task_id is never mentioned in the description, so no meaning is added beyond the property name. The name is largely self-explanatory, which keeps this at baseline rather than below it, but the description does not say where the id comes from or its expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (cancel) and resource (task) plus the scope ('queued or running'), and no sibling tool offers cancellation, so an agent can route to it unambiguously. This is a clean verb+resource+state statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope qualifier ('queued or running'), which tells the agent the tool is valid for tasks in either state, but there is no explicit when-to-use guidance, no statement about what happens if the task is already finished, and no reference to alternatives such as zcode_status or zcode_continue for inspecting tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_clear_default_modelClear the Bridge default modelA
Remove the Bridge default model so future tasks without zcode_task.model use the ZCode session default.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| model | Yes | |
| configured | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the downstream effect on future tasks, but says nothing about whether the change is reversible, whether it errors when no Bridge default is set, or what permissions it requires for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and then the effect, with no filler or redundancy. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the zero-param schema is fully described. The only shortfall is the absent behavioral detail around the mutation itself, which leaves a minor gap for an agent about to clear state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline for a parameterless tool applies. No parameter-related gap exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove), the exact resource (Bridge default model), and the concrete consequence of the operation. It is trivially distinguishable from zcode_set_default_model and zcode_default_model, which set or read the model rather than clearing it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the condition under which clearing is useful: future tasks lacking an explicit zcode_task.model will fall back to the ZCode session default. It gives clear usage context but names no alternative (e.g., zcode_set_default_model) nor any when-not-to-use caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_continueContinue a ZCode task with master feedbackA
Continue a finished task with master feedback: reuses the task ID and workspace, increments the attempt, and preserves prior evidence. Allowed from completed, failed, or waiting_for_master. A decision flagged by ZCode is never auto-approved; the master agent must provide the follow-up instruction. Results describe Bridge/ZCode execution only: status 'completed' means the invocation and report normalization finished, NOT that the master agent accepted the work. The master agent must independently review the workspace diff and checks before deciding PASS.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| feedback | Yes | ||
| additional_requirements | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| task_id | Yes | |
| created_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so admirably: it discloses side effects (attempt increment, evidence preservation), an authority rule (a ZCode-flagged decision is never auto-approved and requires a master follow-up instruction), and critically redefines status 'completed' as invocation/report completion rather than work acceptance. It also instructs independent review of the diff and checks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded, leading with the core action and mechanics before the caveats. Every sentence carries a distinct obligation (mechanics, preconditions, auto-approval rule, status semantics), though the status-semantics passage is on the longer side.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be documented, and the description still adds the essential status-semantics caveat that the schema cannot express. Preconditions and authority handling are covered; only the third parameter remains unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all 3 parameters, so the description must compensate. It conveys that task_id is the reused identifier and feedback is the master's follow-up instruction, but additional_requirements is neither described nor hinted at, leaving one parameter fully undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('continue a finished task') and enumerates the concrete mechanics that define this operation: reuse of task ID and workspace, attempt increment, and evidence preservation. This clearly distinguishes it from zcode_task (starting new work) without needing to name the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the precise precondition set — allowed from completed, failed, or waiting_for_master — which tells the agent exactly when invocation is legal. It stops short of naming an alternative tool for the disallowed cases (e.g., what to call when a task is still running), so it is strong context without full when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_default_modelRead the Bridge default modelA
Read the provider, model, and optional reasoning level used when zcode_task has no model override.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| model | Yes | |
| configured | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden, but for a zero-parameter read operation the safety surface is small. It states what is returned but does not say what happens when no default has been set or whether any permission is needed, leaving modest gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the returned fields and the condition under which they apply. Every clause earns its place, with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and with no parameters the call surface is trivial. The only minor omission is the edge case of no default model being configured (null vs. error), which an agent might want to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document; the baseline for a no-param tool is 4. The description correctly frames the call as requiring no input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Read the provider, model, and optional reasoning level' for the bridge default model. It even scopes the resource semantically ('used when zcode_task has no model override'), which distinguishes it from siblings like zcode_set_default_model, zcode_clear_default_model, and zcode_model_catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'used when zcode_task has no model override' implies the context of use (inspecting the fallback model), but the description never states explicitly when an agent should call this versus sibling read tools such as zcode_model_catalog or zcode_status, nor any preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_doctorCheck ZCode Bridge setupA
Run read-only checks for Bridge prerequisites, ZCode runtime/provider configuration, execution mode, task storage, and Desktop task-index availability. It does not start a ZCode session. App-server model availability and real permission approval are reported as unverified until a task runs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| checks | Yes | |
| checked_at | Yes | |
| execution_mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it declares the read-only nature, explicitly states it does not start a ZCode session, and discloses that app-server model availability and real permission approval remain unverified until a task runs. It omits any note on permissions or runtime cost, but the core behavioral profile is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the check scope, followed by the scope exclusion and the verification caveat. Each sentence adds distinct information with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a no-param read-only diagnostic, the description covers what is checked, what is deliberately not done, and the limits of the results. Only the tie-break against similar diagnostic siblings like zcode_status is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline applies; there is nothing parameter-level for the description to add. The 100% schema coverage is trivially satisfied by an empty object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (run read-only checks) plus a concrete resource scope: Bridge prerequisites, ZCode runtime/provider config, execution mode, task storage, and Desktop task-index availability. It explicitly negates the adjacent session-starting behavior, distinguishing it from siblings like zcode_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies pre-flight/diagnostic usage by enumerating prerequisite checks and excluding session start, but never names an alternative (e.g., when to prefer zcode_status) or states the conditions under which this tool should be chosen. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_eventsRead live ZCode execution eventsA
Read persisted progress events for a task. Set view to summary to merge adjacent model text chunks; raw is the default. next_seq advances across all scanned events, including merged chunks. Immediately after submission, report the project path, effective execution path (and worktree path when supplied), and queued/running state from the first events. Keep polling until turn_started or startup failure; before longer monitoring, report the ZCode session, runtime-reported selected model, runtime-reported reasoning level when present, and execution mode. Set after_seq to the last next_seq returned and wait_ms up to 25000. Hidden reasoning is excluded. interaction_requested events include bounded tool/request details needed for a deliberate permission or input decision.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | ||
| limit | No | ||
| task_id | Yes | ||
| wait_ms | No | ||
| after_seq | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | Yes | |
| status | Yes | |
| task_id | Yes | |
| has_more | Yes | |
| next_seq | Yes | |
| omitted_events | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that raw is the default view, that summary merges adjacent model-text chunks, that next_seq advances across all scanned events, that hidden reasoning is excluded, and that interaction_requested events include bounded detail. It does not state read-only nature, error behavior, or what limit does under the hood.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the middle is dense and mixes tool semantics with agent workflow instructions ('report the project path... report the ZCode session...'). It is information-rich but longer than needed and not tightly scoped to describing the tool itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and the description focuses on how to page and poll. Given the 5-param, no-annotation surface, it gives the agent enough to call and drive the tool correctly, aside from the undocumented limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: view (summary merges chunks; raw default), after_seq (last next_seq), and wait_ms (up to 25000) are all explained. limit is never mentioned, and task_id is left to the pattern in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb+resource: 'Read persisted progress events for a task.' That is unambiguous. However, it does not distinguish itself from close siblings like zcode_progress_probe, zcode_status, or zcode_result, leaving the agent to infer which read path to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong operational guidance: set after_seq to the last next_seq, keep polling until turn_started or startup failure, wait_ms up to 25000. This tells the agent how to drive the polling loop. It does not, however, name an alternative sibling or state when NOT to use this tool in favor of zcode_progress_probe/zcode_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_interaction_replyReply to a ZCode permission or input requestA
Reply to a pending ZCode permission or user-input request surfaced by zcode_events. For permission requests, use allow only when the user explicitly authorized the requested action; otherwise deny or ask the user. Do not infer permission from task instructions, worktree use, or ZCode mode. For user-input requests, answer only from known facts or the user's explicit direction. This tool does not approve the task result.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| answers | No | ||
| task_id | Yes | ||
| decision | Yes | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose key policy behavior (what authorizes an allow, what must not be treated as authorization, and that this does not approve the task result). It stops short of describing the effect of replying (does the task resume, is the decision final/irreversible) or any auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the trail back to zcode_events, then layered policy constraints in short declarative sentences. No filler and no repetition of the title or name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description needn't explain returns, but for a 5-parameter tool with 0% schema coverage it leaves request_id/task_id sourcing and the reason/answers fields entirely unexplained. The decision-policy side is well covered; the mechanical side is not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It implicitly maps the decision enum to request types (allow/deny for permission requests, answer for input requests), which is genuinely useful, but it never addresses task_id, request_id, reason, or how the nested answers object is keyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reply) and resource (a pending ZCode permission or user-input request) and ties the request back to the sibling tool that surfaces it, zcode_events. It also draws a boundary against another sibling by noting it 'does not approve the task result.' An agent can distinguish this from zcode_result or zcode_continue without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when/when-not rules: use allow only when the user explicitly authorized the action, otherwise deny or ask; do not infer permission from task instructions, worktree use, or ZCode mode; for input requests, answer only from known facts or explicit user direction. These are directly actionable decision constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_model_catalogRead available ZCode modelsA
Read models and reasoning levels for this workspace. The Bridge caches the catalog for 24 hours, refreshes when provider settings change or the cache expires, and re-reads provider config before retrying a failed refresh. A cache response has current_model=null; use provider_id/model_id from models in zcode_task.model.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| models | Yes | |
| warning | No | |
| cached_at | No | |
| workspace | Yes | |
| cache_status | No | |
| current_model | Yes | |
| account_provider_sync | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden well: it discloses the 24-hour cache lifetime, refresh triggers (provider settings change or cache expiry), the retry behavior (re-reads provider config), and a specific response-shape quirk (current_model=null on cache responses). These are non-obvious operational details that meaningfully help correct invocation. It stops short of stating rate limits or full error semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then layers in cache/refresh behavior and a response hint. Three sentences, each carrying distinct operational information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single-parameter read tool with an output schema, the description covers cache semantics, refresh triggers, retry behavior, and a response-shape edge case (current_model=null). This is substantial for a tool of this complexity; only explicit when-to-use guidance is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single `workspace` parameter, but the description implies the catalog is workspace-scoped ("for this workspace"). The description provides contextual meaning for the parameter even though it does not document its format or constraints; baseline 3 is appropriate given the minimal parameter surface.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Read") and resource ("models and reasoning levels") for the workspace, which clearly distinguishes it from state-mutating siblings like zcode_set_default_model or zcode_clear_default_model. It could better differentiate from zcode_default_model, which likely returns the current default, but the catalog scope is reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided, nor are any sibling tools named as alternatives. The agent must infer that this is called to discover available models before, e.g., selecting one via zcode_set_default_model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_progress_probe[Experiment] Check MCP progress displayA
Temporary read-only experiment. Sends three MCP progress notifications over three seconds to test whether the host displays server progress while this tool runs. Does not start or modify a ZCode task.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it declares itself read-only, states the runtime (three seconds), the number of notifications emitted, and that it does not start or modify a ZCode task. It does not describe the return payload, but for a disposable probe this is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero padding, and the read-only/experimental nature is front-loaded so an agent immediately knows the safety profile.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A zero-parameter, no-output-schema diagnostic whose full behavior and scope are captured in the description. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter-level gaps exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (sends three MCP progress notifications over three seconds) and its purpose (test whether the host displays server progress). It explicitly distinguishes itself from siblings that start or modify ZCode tasks, so an agent can tell it apart from zcode_task or zcode_continue without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys context (a temporary experiment to probe host progress rendering) and an explicit exclusion: it does not start or modify a task. It does not state when-not to use it relative to named alternatives, but there is effectively no competing sibling for this diagnostic role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_resultRead the terminal ZCode task resultA
Read the persisted TaskResult for a finished task. Returns TASK_NOT_FINISHED before a terminal state. 'completed' is not a master-accepted PASS: files_changed, tests, and decisions are normalized claims from the subordinate report and must be verified independently. Results describe Bridge/ZCode execution only: status 'completed' means the invocation and report normalization finished, NOT that the master agent accepted the work. The master agent must independently review the workspace diff and checks before deciding PASS.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tests | Yes | |
| issues | Yes | |
| status | Yes | |
| attempt | Yes | |
| summary | Yes | |
| task_id | Yes | |
| exit_code | Yes | |
| error_code | No | |
| session_id | Yes | |
| started_at | Yes | |
| finished_at | Yes | |
| zcode_output | Yes | |
| files_changed | Yes | |
| report_candidate | No | |
| needs_master_decision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so: it discloses the TASK_NOT_FINISHED error condition, the exact meaning of status 'completed' (invocation and report normalization finished, not master acceptance), and that files_changed/tests/decisions are unverified normalized claims. This is unusually rich behavioral disclosure for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and terminal-state gating, and most sentences earn their place. However, the 'completed is not a master-accepted PASS' warning is restated twice in near-identical phrasing, which is mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with an output schema (which already documents the return shape), the description supplies everything else an agent needs: when it succeeds, when it errors, and how to interpret the result fields. Given no annotations, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter (task_id) is never mentioned in the description, so nothing explains where the id comes from, its accepted format, or whether it references a task handle returned elsewhere. For a 1-param schema with no documentation, the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the persisted TaskResult') and scopes it to a 'finished task' / terminal state, which separates it from status-, events-, and progress-oriented siblings. An agent can identify the retrieval role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: only meaningful after the task reaches a terminal state, and it explicitly notes it returns TASK_NOT_FINISHED otherwise. It also warns the caller to verify independently. It does not name an alternative tool for the pre-terminal case (e.g., zcode_status or zcode_progress_probe), so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_set_default_modelSet the Bridge default modelA
Persist a default provider/model selection for future tasks that omit zcode_task.model. Use IDs from zcode_model_catalog or the configured ZCode provider/model rules; the app-server validates the selection when a task starts. An optional reasoning_level applies to the configured default model; a per-task model selection can still override it.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | ||
| provider_id | Yes | ||
| reasoning_level | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| model | Yes | |
| configured | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose real behavior: the selection is persisted, validated by the app-server only when a task starts, reasoning_level attaches to the configured default, and per-task overrides win. It omits any note on permissions, reversibility, or failure behavior, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, and each sentence adds distinct information (scope, ID source/validation, reasoning_level and override). No filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, and the description covers persistence, validation timing, and override precedence for a mutation tool lacking annotations. The main remaining gap is the absence of valid reasoning_level values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It points provider_id/model_id at zcode_model_catalog or configured rules and explains that reasoning_level applies to the configured default, but it gives no accepted values or format hints for reasoning_level, leaving a gap for one of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Persist a default provider/model selection') and scopes it to 'future tasks that omit zcode_task.model'. It is readily distinguishable from siblings zcode_default_model (read) and zcode_clear_default_model (clear), and it names zcode_model_catalog as the ID source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains when the setting takes effect (tasks that omit zcode_task.model) and that a per-task selection can still override it, which implicitly frames when this tool is and isn't needed. It never explicitly contrasts itself with the sibling read/clear tools, so it stays at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_statusRead ZCode task execution statusA
Read the execution status record for one task. This is execution status only and never contains a PASS/FAIL code-review judgment. Results describe Bridge/ZCode execution only: status 'completed' means the invocation and report normalization finished, NOT that the master agent accepted the work. The master agent must independently review the workspace diff and checks before deciding PASS.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| status | Yes | |
| attempt | Yes | |
| task_id | Yes | |
| exit_code | Yes | |
| created_at | Yes | |
| error_code | No | |
| started_at | Yes | |
| updated_at | Yes | |
| worker_pid | Yes | |
| finished_at | Yes | |
| zcode_session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it defines the semantics of 'completed' (invocation and report normalization finished, not master-agent acceptance) and clarifies the absence of PASS/FAIL data. It does not mention read-only/permission requirements or pagination, but the semantic warnings are the higher-value disclosure here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, all front-loaded around the core semantics, with no filler. Each sentence earns its place by disambiguating status from judgment, though the final sentence about the master agent is somewhat ceremonial.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be explained, and the description instead supplies the interpretation guidance an agent needs to avoid misreading 'completed' as acceptance. Given the single trivial parameter and available output schema, this is close to complete; only task_id provenance is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter, task_id, and schema description coverage is 0%, so the description adds no format, sourcing, or constraint detail for it. The name is largely self-explanatory, keeping this at a baseline 3 rather than lower.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Read the execution status record for one task') and immediately scopes what the record is not ('execution status only and never contains a PASS/FAIL code-review judgment'). That implicitly separates it from the sibling zcode_result, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the contrast with code-review judgment and the note that the master agent must independently review the diff, which hints at when this tool is appropriate. However, it never states an explicit when-to-use or when-not-to-use condition, nor names an alternative tool such as zcode_result for retrieving review outcomes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zcode_taskSubmit one ZCode coding taskA
Create a bounded coding task for the local ZCode subordinate agent. workspace is the master agent project root and determines the ZCode Desktop project identity. The master agent decides whether to create a worktree; if it does, pass its existing absolute directory as optional worktree_path. The Bridge never creates, selects, or removes a worktree. Without worktree_path, ZCode runs directly in workspace. Optional model selects a ZCode provider_id/model_id for this session without changing the project default. Returns a TaskReceipt; the task runs asynchronously in a detached worker. Results describe Bridge/ZCode execution only: status 'completed' means the invocation and report normalization finished, NOT that the master agent accepted the work. The master agent must independently review the workspace diff and checks before deciding PASS.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| context | No | ||
| task_id | Yes | ||
| objective | Yes | ||
| workspace | Yes | ||
| timeout_ms | No | ||
| requirements | Yes | ||
| allowed_paths | Yes | ||
| test_commands | Yes | ||
| worktree_path | No | ||
| forbidden_paths | Yes | ||
| acceptance_criteria | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| task_id | Yes | |
| created_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses async detached execution, that a TaskReceipt is returned immediately, that 'completed' means only invocation/report normalization finished and NOT master-agent acceptance, and that the master must independently review the diff and checks. These are exactly the non-obvious behavioral traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is longer than typical but front-loaded, with the core purpose first and the critical 'completed ≠ accepted' caveat near the end. Nearly every sentence carries load (worktree rules, model scoping, async semantics), though the worktree/Bridge point is stated twice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no annotations, it covers the highest-risk aspects: worktree ownership, model scoping, and result interpretation. An output schema exists, so return-value detail is not required, yet it still clarifies the receipt's meaning. The gap is the unexplained bulk of array/scalar task-package parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters, so the description must compensate and only partly does: it explains workspace, worktree_path, and the nested model object's effect. It says nothing about task_id's pattern, requirements, allowed_paths/forbidden_paths semantics, acceptance_criteria, test_commands, timeout_ms, or context, leaving most parameters undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource — 'Create a bounded coding task' — and identifies the actor ('local ZCode subordinate agent'). This cleanly separates it from siblings like zcode_continue, zcode_cancel, and zcode_result, which operate on tasks that already exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete conditional guidance: decide whether to create a worktree, pass its existing absolute directory as worktree_path, and if omitted ZCode runs in workspace. It also clarifies that the Bridge never creates/selects worktrees and that model only affects the session. It stops short of explicitly naming when to prefer a sibling (e.g., continue vs a new task).
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.
13 tool updates
v1.0.0- First observed
zcode_cancel - First observed
zcode_clear_default_model - First observed
zcode_continue - First observed
zcode_default_model - First observed
zcode_doctor - First observed
zcode_events - First observed
zcode_interaction_reply - First observed
zcode_model_catalog - First observed
zcode_progress_probe - First observed
zcode_result - First observed
zcode_set_default_model - First observed
zcode_status - First observed
zcode_task
TDQS
Scored across 13 tools
Each tool targets a distinct bridge concern: task lifecycle, model defaults, diagnostics/catalog, and permission/input replies. zcode_status, zcode_events, and zcode_result are separated by execution status, progress stream, and final normalized result, so misselection is unlikely.
All names use the same zcode_ snake_case prefix with predictable noun/verb phrases. Even where verbs are implicit, such as zcode_default_model or zcode_task, the convention is internally consistent.
Thirteen tools fit the bridge scope: a full task lifecycle, model configuration, diagnostics, and interaction handling. The temporary progress probe is extra but not excessive.
Core lifecycle and configuration are covered, including create, monitor, continue, cancel, result, and permission replies. Minor gaps exist for task enumeration/history and explicit artifact/diff retrieval, though the latter is intentionally left to the master agent.
Maintenance
Related MCP Connectors
Develop, manage, and debug Railway projects, services, and deployments from within agents.
- ParleyOAuthdev.weldra
Coordination hub for AI coding agents: message teammates, ask humans, audit every event.
Read a project's prompts, logs and agents, and send new work to the agent on your own machines.
Hosted runtime for persistent agent teams, durable workflows, memory, schedules, and goals.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceExposes DeepSeek Harness agent capabilities as an MCP server, letting any MCP client drive Harness to execute real coding tasks with structured results, context isolation, and parallel execution.115 npm12MIT
- AlicenseNot gradedqualityCmaintenanceExposes DeepSeek Harness's coding agent as a model backend via MCP, with user-confirmed task execution and self-inspection/config-patch tools.MIT
- AlicenseNot gradedqualityBmaintenanceLets any MCP-capable coding harness (Cursor, Claude Code, Codex, Gemini CLI, VS Code/Copilot, opencode, and others) hand a self-contained task to a real, isolated DeepSeek Harness process that works in a chosen workspace with its own context window, model, and toolchain, then returns the final answer. Exposes task submission with time estimates and acceptance criteria, status polling with live progress and process-tree telemetry, graceful cancel and forced kill of whole process trees, and a health probe reporting concurrency, deadlines, and recent jobs.MIT
- AlicenseAqualityAmaintenanceEnables programmatic control of the Z.ai/Zhipu desktop AI coding agent by spawning and owning its headless agent runtime and speaking the ZCode Protocol over stdio, rather than simulating a user. Exposes tools to run and steer chat sessions, inspect conversations and file changes/rewinds, and manage settings, providers, plugins, MCP servers, automations and approvals under a deny-by-default policy with mandatory read-back verification.14MIT