MCP
Change Review
By BenchSprout
Local processing.
Evidence before approval.

Supported MCP JSON formats and redaction

Use strict JSON with an mcpServers object or a captured tools/list result. Learn what is compared, what is hidden and what must be reviewed privately.

Client configuration

Select Client config. Both snapshots must contain an mcpServers object. Each server must have exactly one nonempty command string or an absolute HTTP(S) url. This is a deliberately narrow import format, not a universal MCP configuration standard.

{
  "mcpServers": {
    "notes": {
      "command": "node",
      "args": ["server.js"],
      "env": { "NOTES_TOKEN": "replace-privately" }
    },
    "archive": { "url": "https://archive.example.test/mcp" }
  }
}

args, if supplied, must be an array of strings. env and headers must be objects with string values. Unknown fields remain in the structural diff but are not interpreted. Their presence generates a review prompt. A client-specific field such as disabled is not evaluated to decide whether a server will run.

To review a first installation, use {"mcpServers":{}} as Before. An empty input is an error. VS Code servers configurations, TOML and JSON with comments require deliberate conversion before import; this workbench does not guess.

Captured tool definitions

Select Captured tools/list. Supply the result body below, or a JSON-RPC response with this object under result. Each tool needs a nonempty unique name and an inputSchema object. Compare one server at a time.

{
  "tools": [{
    "name": "notes.search",
    "description": "Search notes",
    "inputSchema": {
      "type": "object",
      "properties": { "query": { "type": "string" } },
      "required": ["query"]
    }
  }]
}

A nextCursor field, even empty or null, conservatively marks the capture incomplete. A supplied resultType other than complete does too. There is no automatic pagination or server connection. Tool definitions are compared by case-sensitive name; envelope IDs, cache metadata and transport metadata are not diffed. A rename appears as a removal and addition.

What survives redaction

EvidenceReport treatment
Server, tool and field namesRetained, with conservative character and token-pattern filtering.
CommandExecutable basename only; directory paths hidden.
Remote URLOrigin only: scheme, hostname and port. Userinfo, path, query and fragment hidden.
Arguments, environment and headersValues hidden. Field names and array positions retained.
Descriptions, schema and annotationsChanged paths retained. All scalar and array values hidden.
Unknown valuesHidden, with changed paths retained.

This is value suppression, not a guarantee that all secrets are recognized. A hostname, tool name or property name can itself contain sensitive information. Review the exported report before sharing it.

Successful review clears the input text boxes; changed values remain in a separate, hidden-by-default local inspector until Clear session or leaving the page. Nothing is stored in localStorage, cookies or a backend by this tool. Browser extensions, clipboard managers and downloaded reports are outside its control.

Comparison limits

  • 500,000 characters and 40 nesting levels per input; local file selection additionally caps file size at 2 MB.
  • 200 servers or 500 tools per snapshot; 2,000 changed leaf fields per comparison.
  • Duplicate JSON keys and duplicate tool names are rejected, including escaped duplicate keys. Nonfinite numbers and integers outside JavaScript's safe-integer range are rejected to avoid ambiguous comparisons. Other numbers use JavaScript numeric precision.
  • Object key order is ignored. Array order remains significant, including schema required and enum arrays. This can report a structural change without a semantic change.
  • JSON Schema documents are compared as JSON, not validated or dereferenced. Remote references and icons are never fetched.

The tool cannot infer inherited environment values, client defaults, filesystem access, executable identity or the effect of shell expressions. Inspect these in a trusted local workflow.