Write path
Your MCP server authenticates to the target API with its existing write credential. Fourgate forwards the tools/call unchanged and does not copy that credential into a contract.
fourgate/scan.pySo there are no sub-processors and nothing for us to leak. Limited beta 0.4.0b1 runs on your machines (a laptop, a server, or CI you operate) and nothing is sent to Fourgate. Supported use is local command-configured stdio. Customer CI, the Desktop UI, and production reliability are unvalidated. There is no remote MCP transport and no hosted control plane. This page is written for whoever reviews Fourgate for security. It follows PILOT.md and SECURITY.md.
tools/call
fourgate guard
Local process on your machine. Forwards the call unchanged, then extracts only the contracted fields (e.g. record ID, title) from a success result.
Stores
Never contains
unchanged
its own calls
read back by the verifier: HTTPS GET, read-only credential
structure only
local HTML
Select a box. Showing:
fourgate guard
Local process on your machine. Forwards the call unchanged, then extracts only the contracted fields (e.g. record ID, title) from a success result.
Stores
Never contains
Your agent (e.g. an MCP client)
│ tools/call
▼
fourgate guard ── local process on your machine ──────────────────────┐
│ forwards the call unchanged │
▼ │
Your MCP server ──(its own API calls, as today)──► Your system of record
│ "success" result ▲
▼ │
guard extracts only the contracted fields (e.g. record ID, title) │
│ │
└─► verifier (local) ── HTTPS GET with a separate read-only ───┘
│ credential
▼
PASS / FAIL / UNKNOWN ──► outcomes.jsonl (local, structure only)
│
▼
fourgate summary ──► local HTML pageFourgate has no user accounts, sessions, API keys or hosted authentication service. Authentication happens only between software you run and the APIs you already use. The website is a static export and does not receive, exchange or store those credentials.
Your MCP server authenticates to the target API with its existing write credential. Fourgate forwards the tools/call unchanged and does not copy that credential into a contract.
fourgate/scan.pyThe local verifier independently authenticates an HTTPS GET with a separate, least-privilege read credential. Its value is resolved from the named environment variable only when the check runs.
fourgate/readback.pyNames listed in verifier.secret_env are removed from the wrapped MCP server environment. The verifier remains local and receives the operator environment, so verifier commands must be trusted.
wrap/wrap.pyConfig stores an environment-variable name, never the token value. Bearer is the default; a custom header or Basic auth can be selected explicitly.
{
"type": "http",
"url_template": "https://api.example.com/issues/{record_id}",
"token_env": "READBACK_TOKEN",
"auth": { "scheme": "bearer" }
}bearer sends Authorization: Bearer ….header sends the token in one configured header, with an optional prefix.basic supports an environment-supplied username and uses the token as password, or the inverse.token_env is omitted.Fourgate keeps no other state. To uninstall, run pip uninstall fourgate, point your MCP client back at the original server command, and delete these files.
runtime.jsonWhere: Your machine or repoContains
Tool names, which fields to extract, the verifier command, environment variable names
Never contains
Credentials, customer data
readback.jsonWhere: Your machine or repoContains
The GET URL template, expected fields, status rules, the environment variable name of the read token
Never contains
The token itself
outcomes.jsonlWhere: Path you chooseContains
Per protected call: time, server label, tool name, mode, PASS/FAIL/UNKNOWN, reason code, names of checked fields, time the check added
Never contains
Arguments, field values, record IDs, response bodies, credentials
fourgate-summary.htmlWhere: Path you chooseContains
Counts and charts built from the outcome log
Never contains
Same exclusions as the log; no JavaScript, no network requests
fourgate-report.json / .htmlWhere: Only if you pass --report-dirContains
For test-account scans: the contracted request, tool response and read-back evidence for non-passing cases, after best-effort secret redaction
Never contains
Redaction is best effort: review before sharing
verifier.secret_env and fourgate guard removes it from the MCP server's environment, so the server under test cannot see or use it.Fourgate is MIT licensed. Read the code, read the security notes, and check the release files against the SHA-256 digests GitHub lists on the release page.
Compare with the digest on the release page
sha256sum fourgate-0.4.0b1-py3-none-any.whlWe can walk your security reviewer through the data flow on the scope call.