Quickstart
Start
Quickstart
Section titled “Quickstart”The fastest repo-backed proof is one approved MCP server manifest, one visible allowed tool, one hidden denied candidate, one allowed call, one denied call, and one audit lookup. This path proves the product boundary without starting production infrastructure.
Audience
Section titled “Audience”- Platform engineers checking the end-to-end governed-call model.
- Security reviewers looking for allow, deny, hidden discovery, credential mode, and audit evidence.
- Developers learning the shape of a governed tool before importing their own API.
What is this?
Section titled “What is this?”When do I use it?
Section titled “When do I use it?”Use this first when you need proof that the gateway model is more than navigation text:
- manifest validation happens before registration;
- registration records the approved server and visible versus hidden tools;
- the allowed tool call records policy and credential mode;
- the denied tool is hidden and not routed upstream;
- audit evidence is keyed by request ID and stays redacted.
What happens?
Section titled “What happens?”Run the source tutorial from the repo root. The important command sequence is:
export REGISTRY=/private/tmp/mcp-first-governed-call-registry.jsongo run ./cmd/gatewayctl validate-manifest fixtures/manifests/mcp-server-legal-contract-review.yamlgo run ./cmd/gatewayctl register-server fixtures/manifests/mcp-server-legal-contract-review.yaml --registry "$REGISTRY"go run ./cmd/gatewayctl call-tool --registry "$REGISTRY" --request fixtures/runtime/m1-tool-call-request.jsongo run ./cmd/gatewayctl call-tool --registry "$REGISTRY" --server legal-contract-review --tool contract_escalate --request-id req_m1_002go run ./tools/mcp-harness eval --only m1-governed-callExpected behavior:
contract_readis visible after registration.contract_escalateremains hidden because it is a denied candidate.- the allowed call records
policy_decision=allow,credential_mode=service_account, and redacted audit output; - the denied call records
upstream_attempted=false,credential_mode=none, and a machine reason; - the focused eval proves discovery filtering, allowed execution, denied execution, audit events, credential mode evidence, policy version evidence, and secret-free audit output.
What can go wrong?
Section titled “What can go wrong?”- The manifest is invalid, so registration stops.
- The registry path is missing or stale in your shell, so subsequent CLI calls cannot see the registered server.
- The denied candidate returns a non-zero exit by design.
- A local toolchain is missing Go, Cargo, Node, or npm for broader validation.
- A public doc must not copy raw customer payloads, tokens, prompt text, response bodies, or private runtime output from a local run.
Source truth
Section titled “Source truth”- fixtures/manifests/mcp-server-legal-contract-review.yaml
- fixtures/runtime/m1-tool-call-request.json
- fixtures/evals/m1-governed-call.json
- contracts/openapi/admin-api.yaml
- Read Runtime Architecture for where the call moves after approval.
- Read Audit And Deny Diagnostics for safe investigation output.
- Read Managed And Self-Hosted when local proof must become install proof.
Type set in Geist, Source Serif 4, and Departure Mono.