CI check

Gate your CI on your MCP tools

Your project declares MCP servers in an .mcp.json. vouch check looks up each one’s current measured behaviour score and fails the build if a tool scores below your threshold — the npm audit model, for MCP dependencies. It runs on every PR; almost nobody has to open this site.

Quickstart

From any project directory that has an MCP config:

npx @vouch-tools/cli check

It finds .mcp.json (or mcp.json) — the same mcpServers format Claude Code, Claude Desktop, Cursor, and most MCP clients use — resolves each declared server against Vouch, and prints a line per tool:

✓ io.github.acme/files/read_file — score 94.2 >= threshold 70
✗ io.github.acme/files/search_files — score 41.0 < threshold 70
· com.example/weather/forecast — not yet tested
? internal-tools — not found in Vouch corpus

1 passed, 1 failed, 1 unmeasured, 1 not found (threshold 70)

Exit code is non-zero here because one measured tool is below 70. The unmeasured and unmatched lines are reported but never fail the build — see below.

GitHub Actions

A composite action wraps the same vouch check — no separate implementation to drift from the CLI:

# .github/workflows/vouch.yml
name: Vouch check
on: [pull_request]

jobs:
  vouch:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: AivaStack/vouchtools/packages/cli@main
        with:
          threshold: "70"          # optional, defaults to 70
          # config: .mcp.json      # optional, auto-detected
          # working-directory: .   # optional

It runs npx @vouch-tools/cli@latest check under the hood — deliberately unpinned, because a CI gate should reflect the current score, not a frozen CLI version. Exit codes pass straight through: the job fails exactly when vouch check would.

Any other CI

There’s no GitHub dependency in the check itself. Anywhere that can run npx — GitLab CI, CircleCI, a pre-commit hook, a Makefile target — this is the whole step:

npx --yes @vouch-tools/cli@latest check --threshold 70

What fails the build — and what deliberately doesn't

Only an actual measured score below your threshold fails the build. Everything else is reported and skipped:

ResultEffect on the build
✗ measured, below thresholdFails (exit 1).
✓ measured, at or above thresholdPasses.
· not yet tested / insufficient dataReported, does not fail. A CI check must never fail on data Vouch simply hasn’t collected yet.
? not found / ambiguous matchReported, does not fail. Never guessed.

The one exception is exit code 3 — no config found at all. A workflow that explicitly added this check but points at nothing has a real setup problem, so that does fail.

Configuration

CLI flagAction inputDefaultMeaning
--thresholdthreshold70Minimum behaviour score (0–100) a measured tool must meet to pass.
--configconfigauto-detectedPath to the MCP config. Defaults to .mcp.json, then mcp.json, in the working directory.
--apiapihttps://vouch.toolsBase URL of the Vouch public API.
--jsonoffMachine-readable report instead of the human listing. (CLI only.)
Exit codeMeaning
0Every measured tool met the threshold. Unmeasured, ambiguous, and not-found servers do not count against this.
1At least one tool scored below the threshold.
2Bad invocation — unknown or missing subcommand.
3No MCP config found, or it declared no servers. Nothing was checked.

What it sends

vouch check reads your MCP config file locally and makes read-only lookups against the public API. It sends no code, no arguments, and no credentials. Opt-in real-usage telemetry — reporting anonymised success/failure from MCP calls your own code makes — is a separate feature you enable explicitly; it is not part of the CI check.

Run it before you add a server, too

The same check works outside CI. Before adding an unfamiliar MCP server to a project, point vouch check at a config containing just that server — or look it up directly:

npx @vouch-tools/cli check --threshold 80

Or from an MCP client, call vouch_check on the Vouch MCP server — same data, in the place an agent is already working.

Back to the search, the methodology, or the operator page. The CLI is @vouch-tools/cli on npm.