Install the gate and watch your first HOLD

What you'll have · ~4 min

The gate installed and wired into your MCP hosts, and a live contract change held right in front of you, so you know exactly what a HOLD looks like before it matters.

Skip ahead and watch a contract change get held first

The tool your agent trusted on Monday can change on Tuesday, with no version bump your client notices. The gate installs locally, pins each tool's declared contract on first sight, and HOLDs a call when that contract silently changes, before your agent acts. It is a contract-diff, not a safety verdict, and it holds no credentials. Here is the whole path, start to finish.

  1. 01

    Install the gate#

    Run this in your terminal. It installs the gate binary and rewrites each MCP host's config so that host's servers launch behind the gate. Free, no account, runs locally.

    curl -fsSL https://mcpindex.ai/install.sh | sh
    Prefer not to pipe to shell?

    Install the binary yourself, then run the wiring wizard - no pipe-to-shell:

    uv (auditable)
    uv tool install mcpindex-gate
    Read the script first

    Pipe to less to read it before you run it. uninstall.sh restores the original config.

    curl -fsSL https://mcpindex.ai/install.sh | less
  2. 02

    See what it wired#

    The one-liner only touches the hosts it actually finds on your machine. These are the hosts it knows how to config-wire:

    Detected and wired
    Claude DesktopClaude CodeCursorVS CodeWindsurfClineZedGemini CLI

    The installer rewrites each host's config so its servers launch behind the gate. It only touches hosts it finds; the rest are untouched.

  3. 03

    Restart your host#

    Quit and reopen the host you use (Claude Desktop, Cursor, and so on) so it reloads the gated config. Nothing changes about how you call your tools. The gate sits in the path and stays quiet until a contract drifts.

    Not seeing this?

    If tools stop appearing after the restart, run mcpindex-config-wire status to check the wiring, or uninstall.sh to un-wire every host config and restore the originals.

  4. 04

    Watch a contract change get held#

    Now the part that matters. Pin a tool's contract, apply a change, and watch what the gate does. This runs the real diff logic in your browser (the same mapping the installed gate uses), so there is nothing to fake. Try a breaking change and a benign one:

    in-path drift gate
    posture
    pinned contract TOFU baseline
    make_report(
      title:    string,
      count:    integer[0..1000],
      mode:     enum[fast, full],
    )  // read-only
    apply a silent change to the tool
    contract-diff, not a safety verdict·this is the same deterministic gate that runs in your agent
  5. 05

    Read the verdict#

    A HOLD means the live contract differs from what you pinned, so the call is paused before your agent acts. A PROCEED means there was no breaking difference (a benign added-optional field can pass through). The verdict is about what changed, never a claim that the tool is safe.

    HOLDgate, in-path

    the live contract differs from what you pinned; the call is paused before your agent acts.

    PROCEEDgate, in-path

    no breaking difference (a benign added-optional field can pass); the call goes through.

    REVIEWdirectory screen

    an advisory, semantic-only read flagged something to look at before you wire the tool.

    UNVERIFIEDdirectory screen

    no verdict on file yet; the directory is not asserting anything about it.

  6. 06

    Find the trace on stderr#

    As the gate works it leaves one quiet line per call on your host's stderr, so you can see it is present without it getting in your way.

    On your host's stderr
    mcpindex · noted github/create_issue
    mcpindex · noted github/delete_repo - delete, irreversible
    
    ⬡ mcpindex - caught a silent change: a new required parameter on github/delete_repo. Held before your agent ran it.

    The first time a tool runs it leaves one dim line. When a contract has drifted, a HOLD banner names what changed and pauses the call - a contract-diff, not a claim the tool is unsafe.

  7. 07

    See your own gate activity#

    Each gated call is recorded to a private receipt log keyed to your install. It is credential-blind: the verdict and the action, never the arguments or content. On the receipt that decision is logged on the trust axis: a PROCEED shows as ALLOW, a HOLD as DENY, an inconclusive as REVIEW.

    Open your Gate Activitythe tool hash, the verdict (ALLOW, REVIEW, or DENY), and the action, one row per gated call. You need your install id to open it.

NextVet an MCP server before you install it
Questions
Do I need an account to install the mcpindex gate?
No. The gate installs locally with one command, needs no account, and holds no credentials. An account only matters later if you opt into cloud tiers or higher limits.
What does a HOLD from the gate actually mean?
A HOLD means the tool's live declared contract differs from what you pinned on first sight, so the gate pauses the call before your agent acts. It is a contract-diff (this changed), not a claim that the tool is safe or unsafe.
Will the gate change how I use my tools?
No. It sits in the path and stays quiet, leaving one trace line per call on stderr. You only notice it when a tool's contract changes and it holds the call for you to look at.