code-relay-mcp
This server lets a coding agent bind a project, publish runbooks, and relay verification checkpoints to another machine via short-lived join links, then fetch and analyze structured receipts to drive repair iterations.
Bind a repository/branch as an orchestrator or checkpoint role.
Create short-lived, one-time checkpoint join invitations.
Join a branch-scoped checkpoint subscription with a URL.
Publish and validate a runbook.md for execution on the target host.
Check runbook/receipt status and load/validate receipts.
Analyze receipts to determine the next state (pass/fail/blocked).
Inspect or stop the legacy local watcher.
Run non-mutating local health checks via doctor.
Runs verification checkpoints on target hosts using a self-hosted GitHub Actions runner, validating exact source commits in isolated worktrees and returning structured receipts.
Click on "Install 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., "@code-relay-mcpcreate a runbook to verify this branch on the target host"
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.
Code Relay lets your coding agent develop on one machine and prove the result on another.
Relay is an MCP-based coding-agent integration for cross-machine development and verification. AI on the Dev Host implements the request; the Target Host runs the real validation; a structured receipt comes back to guide the next repair iteration. It works with Codex, Claude Code, Cursor, VS Code, and other MCP-capable coding agents.
When Relay is useful
Different environments — develop on Windows or macOS, verify on Linux, a private network, or a production-like host.
Special hardware — send model code to a CUDA/GPU machine, or verify a camera, serial device, or sensor where it is connected.
Real integrations — exercise payment callbacks, queues, databases, browsers, or internal services that cannot be reproduced locally.
AI-driven iteration — return concrete expected/actual results so the coding agent can repair, republish, and retry.
Related MCP server: culprit
What Relay provides
Branch-scoped project binding and short-lived join links.
Exact source-commit verification in an isolated worktree.
Checkpoint execution through a
code-relay-checkpointGitHub Actions self-hosted runner.Safe, allowlisted validation commands with bounded output and timeouts.
Structured
receipt.jsonand human-readable receipts for passed, failed, and blocked runs.
Quick start
AI client installation
Let your coding agent read and follow the instructions:
https://raw.githubusercontent.com/zarcherlot/code-relay/main/install.mdnpm fallback
npx -y code-relay-mcp@latest install --client codexReplace codex with claude-code, cursor, vscode, or generic as needed.
MCP server details
Code Relay is a local MCP server that communicates over stdio. The npm package starts the server with:
npx -y code-relay-mcp@3.1.0The server implements the MCP JSON-RPC surface directly in Go (without a
third-party MCP SDK). It supports initialize, ping, tools/list, and
tools/call, and exposes these tools:
Tool | Purpose |
| Bind a repository and branch to a relay role. |
| Create a short-lived checkpoint join link. |
| Join a branch-scoped checkpoint subscription. |
| Read local watcher state. |
| Stop the local watcher. |
| Run non-mutating local health checks. |
| Validate and publish a runbook. |
| Read runbook and receipt status. |
| Load and validate a runbook receipt. |
| Analyze a receipt and determine the next state. |
The implementation and transport loop are in internal/relay/mcp.go.
How it works
the Dev Host sends a repository- and branch-bound runbook through Relay; the Target Host checks the exact source commit in its real environment and returns a Receipt recording the Checkpoint result.
Every runbook is bound to a repository, branch, and source commit. The Target Host acts as the Checkpoint, and the resulting receipt records passed, failed, or blocked verification for the next iteration.
Documentation
License
Code Relay is released under the MIT License.
Available Tools
10 toolsanalyzeCRead-only
Analyze a runbook receipt and determine the next state.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | ||
| runbook_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the agent knows this is a safe, closed-world read operation. The description adds the 'determine next state' outcome but doesn't clarify what inputs affect the result or what the output format is. With annotations covering the safety profile, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler words. It conveys the core purpose without redundancy, which is ideal for brevity.
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?
The tool has no output schema, no parameter explanations, and only a vague description. The agent cannot determine what constitutes a 'runbook receipt', what 'next state' refers to, or how the parameters influence the analysis. This is insufficient for reliable invocation, especially given the tool's role in an apparently complex workflow.
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 description provides no information about the two parameters ('runbook_id' and 'root'). The agent only knows that runbook_id is required, but has no idea what 'root' means or how these values should be formatted. The description completely fails to compensate for the missing schema coverage.
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 action (analyze) on a specific resource (runbook receipt) and a clear outcome (determine the next state). This distinguishes it from siblings like fetch_receipt (retrieving data) and status (reporting current status), though it doesn't explicitly differentiate from similar-looking tools.
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?
There is no explicit guidance on when to use this tool versus alternatives. The description implies its purpose (determining next state after analysis) but doesn't state prerequisites, exclusions, or when a sibling would be more appropriate. An agent is left to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bind_projectCDestructive
Bind the current project and branch to Code Relay.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | ||
| role | Yes | ||
| root | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is not read-only, may be destructive, and touches external/world state, but the description adds no behavioral context about side effects, what gets bound, whether it is reversible, or what happens to existing bindings. It does not contradict the annotations, but it also does not help the agent anticipate the destructive nature.
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 one succinct sentence with no filler or repetition. It is front-loaded with the action and object, making it very easy to parse quickly.
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?
With no output schema, no parameter descriptions, and no explanation of side effects or prerequisites, the description is not sufficient for correct invocation. An agent would not know how to set ref/root, what role means, or what result to expect.
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 description does not compensate for the undocumented parameters. It hints at 'project' and 'branch' but does not clarify what ref, role, or root mean, why role is required, or how the enum values orchestrator/checkpoint affect behavior.
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 action ('Bind') and a clear resource ('current project and branch to Code Relay'). It goes beyond the tool name enough to distinguish this as a setup/binding operation, though the exact meaning of 'Code Relay' and what binding involves is left undefined.
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?
There is no guidance on when to use this tool versus alternatives like join_checkpoint or publish_runbook. The description only states what the tool does, not the conditions that should trigger its use or when it should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_checkpoint_inviteC
Create a short-lived checkpoint join link.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | ||
| expires | No | ||
| one_time | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal this is a non-read-only, non-destructive mutation. The description adds 'short-lived,' which hints at expiration behavior, but it doesn't explain side effects, whether invitations persist, or how one_time affects behavior.
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 with no filler; the core action is front-loaded and readable. It is concise, though the brevity leaves out meaningful context.
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 tool with three undocumented parameters, no required fields, and no output schema, the description is under-specified. It leaves unclear what 'root' refers to, how expiry is expressed, what one_time means, and what the tool returns.
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 should compensate for the three optional parameters. It doesn't explain 'root', the units or meaning of 'expires', or 'one_time'; only 'short-lived' loosely aligns with the expires parameter.
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?
Description states a specific verb ('Create') and resource ('checkpoint join link'), and 'short-lived' adds a useful qualifier. It is clear enough to distinguish from the sibling join_checkpoint, though it doesn't explicitly name that alternative.
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 guidance is given on when to create an invite versus using join_checkpoint, or whether prerequisites like an existing checkpoint or project binding are needed. Usage must be inferred entirely from the verb and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doctorCRead-only
Run non-mutating local health checks.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'non-mutating' echoes that. It adds a small piece of context with 'local', indicating scope. No contradictions exist. However, it does not disclose what happens if the check fails, what outputs are produced, or any side effects beyond non-mutation, so it adds limited value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff or redundant phrasing. It is appropriately concise for a simple tool, though extremely brief. The structure is clean and readable, but the brevity borders on under-specification rather than intentional conciseness.
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 the tool has one optional parameter and no output schema, the description must carry more weight, but it does not. It fails to explain what 'health checks' entail, what 'local' means in practice, what the return format is, or how 'root' affects behavior. The tool is significantly under-documented for even a basic call.
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 schema has one optional parameter 'root' with no description at all. The tool description makes zero mention of 'root', leaving its purpose and format completely undocumented. With 0% schema description coverage, the inability to compensate in the description is a critical gap. An agent cannot know what to pass for 'root'.
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 clear verb ('Run') and a specific resource ('local health checks'), making the tool's core purpose obvious. However, it does not differentiate from sibling tools like 'status' or 'watcher_status', which could also perform health checks. The phrase 'local' provides some distinction but not explicit sibling differentiation.
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 gives no guidance on when to use this tool versus alternatives. It simply says 'Run non-mutating local health checks,' which implies a safe diagnostic context but does not state under what conditions this tool should be chosen over 'status' or 'analyze'. There are no exclusions or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_receiptCRead-only
Load and validate a runbook receipt.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | ||
| runbook_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the concept of 'validation,' which implies some checking behavior beyond simple retrieval, but it does not clarify what validation entails (e.g., schema checks, existence checks, error handling). Given the annotations, this is an acceptable baseline, though more detail would strengthen it.
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 a single sentence, which is concise and front-loaded with the core action. However, it is too terse to be informative; it lacks the necessary detail to make that sentence earn its place. It is not bloated, but under-specification is not conciseness. Therefore a 3 reflects adequate brevity but inadequate substance.
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?
With 2 parameters, no output schema, and 0% parameter description coverage, the description must carry the load for usability. It fails to explain what a 'runbook receipt' is, what validation involves, what the return value looks like, or how 'root' fits in. The tool is incomplete for an agent to use correctly.
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 schema provides no parameter info. The description does not mention parameters at all. While 'runbook_id' is somewhat self-explanatory, 'root' is ambiguous and undefined. The description offers zero help in understanding how to populate or use these parameters, which is a critical failure for a tool with undocumented 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?
The description states a specific action (load and validate) on a specific resource (runbook receipt), which is clear and distinct from the sibling tools. However, it does not explicitly differentiate from potential similar tools like a generic 'get_receipt' or 'validate_receipt' that might exist, though none are in the list. The verb+resource combination is sufficient for a 4.
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 guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, when fetching a receipt is appropriate, or any exclusions. The description is purely functional and lacks any usage context, which is a significant gap for an agent deciding between this tool and the nine siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
join_checkpointCDestructive
Join a branch-scoped checkpoint subscription.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| root | No | ||
| destination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and destructiveHint=true, but the description adds no behavioral context beyond those flags. It does not say what side effect joining has, whether it mutates state, what gets changed, or whether the operation is reversible. No contradiction with annotations is present.
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 a single, front-loaded sentence with no filler, which is structurally clean. However, it is so terse that it sacrifices useful content, making it closer to under-specification than to effective conciseness.
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 tool with three undocumented parameters, no output schema, and destructive/openWorld annotations, the description is severely incomplete. An agent does not know what inputs mean, what the return value is, or what side effects to expect, so it cannot safely invoke the tool.
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 description does not explain any of the three parameters (url, root, destination). The agent cannot infer their meaning from 'Join a branch-scoped checkpoint subscription' because the description mentions no parameter names or value semantics.
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 ('Join') and resource ('a branch-scoped checkpoint subscription'), so an agent can tell what sort of operation this is. It is distinct from siblings like 'stop_watcher' or 'bind_project', though 'checkpoint subscription' remains somewhat domain-specific.
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?
There is no guidance about when to use this tool versus alternatives. The phrase 'branch-scoped' hints at a scope condition, but it never says when to prefer this over create_checkpoint_invite, watcher_status, or openWorldHint-related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_runbookCDestructive
Validate and publish a runbook.md.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | ||
| force | No | ||
| no_git | No | ||
| markdown | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a destructive, read-write operation, and the description adds only 'validate' as an extra behavioral hint. It does not explain what validation involves, what side effects publishing has, or how the destructive nature manifests.
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 extremely short and front-loaded, but it is under-specified for a tool with four parameters and destructive behavior. It is concise in length rather than appropriately sized for the information an agent needs.
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?
There is no output schema, no parameter documentation, and no side-effect disclosure beyond the annotations. An agent cannot safely use this destructive tool because the meaning of 'force' and 'no_git', the target of publication, and the validation behavior are all left 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%, and the description does not compensate by explaining the roles of 'root', 'force', 'no_git', or 'markdown'. The phrase 'runbook.md' only hints at the markdown input but provides no semantic guidance for any parameter.
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 identifies a specific action ('Validate and publish') and resource ('a runbook.md'), making the tool's core purpose clear. It does not explicitly distinguish it from siblings, but none of the listed siblings share the 'runbook publishing' scope.
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 gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. An agent must infer entirely that this is the appropriate tool for publishing runbooks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusCRead-only
Show runbook and receipt status.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Show' aligns with those. It adds the scoping detail that the tool covers runbook and receipt status, but offers no deeper behavioral context beyond that.
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 a single concise sentence with no filler and front-loads the action. It is efficient, though its brevity leaves out important parameter semantics.
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?
With one optional parameter left unexplained and no output schema, the description is too thin for confident invocation. It also fails to clarify what 'status' includes or how the 'root' parameter changes results.
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 schema has one undocumented parameter 'root' with 0% description coverage, and the description never mentions it. An agent has no way to infer what 'root' means or how it affects the status lookup.
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 uses a specific action ('Show') and names two resources ('runbook and receipt status'), so an agent can understand the basic purpose. It does not explicitly distinguish this from siblings like watcher_status, which slightly weakens clarity.
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?
There is no guidance on when to use this tool versus alternatives such as watcher_status or fetch_receipt. No context is given for when it is appropriate, and no exclusions or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_watcherCDestructive
Stop the legacy local watcher state.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already flag destructiveHint=true and readOnlyHint=false, and the description's 'Stop' is consistent with mutation. It adds some context by scoping the action to 'legacy local' watcher state, but it does not say what is actually destroyed, what side effects occur, or whether the operation is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though the wording is slightly awkward and the brevity comes at the cost of needed details.
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?
Despite the low complexity, the tool is destructive and has an undocumented parameter, yet the description does not clarify the effect or the role of root. The lack of an output schema raises the burden to explain observable behavior, which is not met.
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 description never mentions the single 'root' parameter. The optional root string is left entirely undocumented, so the description adds no meaning beyond the schema's bare property name.
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 uses the imperative 'Stop' and names a specific resource ('the legacy local watcher state'), so the core action is identifiable and contrasts with the sibling watcher_status. However, it does not explicitly distinguish itself from the other sibling tools or clarify what 'state' refers to.
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?
There is no guidance about when to invoke this tool versus alternatives such as watcher_status or doctor. The context implied by the name is the only signal for usage, and no exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watcher_statusCRead-only
Show the legacy local watcher state.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the contextual qualifiers 'legacy' and 'local,' which help scope the tool, but it does not disclose any further behavioral details such as side effects, permissions, or output behavior.
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 a single front-loaded sentence with no filler. Every word ('Show,' 'legacy,' 'local,' 'watcher state') contributes meaning, and there is no unnecessary elaboration.
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?
The tool has no output schema, an undocumented optional parameter, and a potentially overlapping sibling 'status,' yet the description only offers a one-line summary. It does not explain return values, the meaning of 'root,' or when to prefer this tool over related siblings, so the agent lacks enough context for confident invocation.
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 description does not mention the optional 'root' parameter at all. Since the schema provides only the name and type, the agent has no way to know what 'root' means or how it affects the watcher state request.
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 clearly states the verb 'Show' and the resource 'legacy local watcher state,' which is specific enough to distinguish this from generic 'status' or 'stop_watcher.' However, it does not explicitly compare against siblings, so it stops short of full differentiation.
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 guidance is given about when to use this tool versus alternatives like 'status' or 'stop_watcher.' The description only states what the tool does, leaving the agent to infer usage context without any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools target distinct actions and resources, such as bind_project, publish_runbook, and fetch_receipt. The main ambiguity is between status and watcher_status, though their descriptions clarify that one covers runbook/receipt status and the other legacy watcher state.
Most tools follow a verb_noun pattern like create_checkpoint_invite and publish_runbook. However, doctor and status are bare nouns, and analyze is a bare verb, creating a mixed convention that is readable but not consistently patterned.
With 10 tools, the server is well-scoped for its domain. Each tool appears to cover a meaningful part of the project binding, checkpoint, and runbook workflow without unnecessary bloat.
The runbook and receipt workflow is well covered with publish, status, fetch, and analyze. However, lifecycle gaps exist: there is no unbind_project, no checkpoint leave/revoke tool, and no way to start the legacy watcher, only to stop it.
Maintenance
Related MCP Connectors
Cryptographically anchored evidence for agents: verified run receipts, proof-gated settlement.
Browser-backed QA with evidence and fix-ready reports for coding agents.
Shared debugging memory for AI coding agents
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceGives AI coding agents a closed-loop verification cycle for visual, audio, and video output, with enforcement hooks that make verification mandatory.Apache 2.0
- AlicenseBqualityAmaintenanceDeterministic, offline root-cause analysis for coding agents: find the commit that introduced a bug, and verify a fix is complete before committing.116MIT
- FlicenseBqualityBmaintenanceA visual compiler and verifier for coding agents that turns rendered evidence into inspectable visual programs with tamper-evident receipts.15
- AlicenseNot gradedqualityCmaintenanceA multi-agent system that autonomously analyzes code, proves bugs with formal certificates, generates repairs, and validates patches, all over the Model Context Protocol.10MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zarcherlot/code-relay'
If you have feedback or need assistance with the MCP directory API, please join our Discord server