by Winch Labs

Docs

The MCP server

The review gate is most useful before the pull request. The MCP server is the live version of that: an agent pulls your repository’s conventions and self-checks a change while it is still writing it.

This page is the server. For the whole loop an agent runs — the envelope it reads, the pre-push hook, garboard init per harness, the plugin, and what the Check Run gives it afterwards — see Deltz for coding agents.

Read-only by contract

The MCP server never mutates anything. It is the live upgrade of the static CLAUDE.md export, and it is read-only by design, not by configuration — there is no write tool to enable.

The tools

Tool What it does
get_conventions This repository’s derived conventions, with evidence.
check_diff Run the gate over a proposed change, before a PR exists.
get_exemplars Examples from this repo of how a thing is normally done.
search_episodes What this repository did in comparable past changes.

check_diff is the one that changes behaviour. An agent that can check its own work against the same gate the pull request will face stops producing changes that fail review, which is worth considerably more than an agent that has read a style guide. It takes {"files": {"path": "full new content"}} and returns the same {status, clean, findings[], coverage{}, meta{}} envelope garboard gate --format json prints — with meta.base and meta.changed null, because it compares against no base ref, and coverage.missing_context saying so on every call. Only status: "clean" is a pass; the agents page has the four statuses.

Running it

garboard mcp                        # stdio, the default
# --transport http is not implemented: the server speaks stdio only, and the
# binary refuses any other value. The agent runs it as a local process.
garboard mcp --rcd .garboard/rcd.json

It reads the RCD written by garboard scan. Fully offline: no key, no network. garboard init --harness claude-code (or codex, cursor, all) writes the {"command": "garboard", "args": ["mcp"]} entry into .mcp.json for you — how.

The static alternative

If you would rather hand an agent a file than run a server:

garboard export --format claude-md      # CLAUDE.md
garboard export --format agents-md      # AGENTS.md
garboard export --format cursor-rules   # cursor rules
garboard export --format all

Same conventions, rendered as instructions. The trade is freshness: a file is a snapshot, the MCP server is current.

Why this is the distribution channel

We ship an MCP server so that coding agents can read this material. That is also why our documentation does not block AI crawlers — agents reading our docs is the point, not a leak.