diff --git a/docs/mcp/evaluation.md b/docs/mcp/evaluation.md
new file mode 100644
index 00000000..565b9dd3
--- /dev/null
+++ b/docs/mcp/evaluation.md
@@ -0,0 +1,191 @@
+# MCP evaluation and Inspector smoke test
+
+QuickStack exposes the REST API over MCP through `/api/mcp`. Two checks keep that
+surface honest:
+
+- `scripts/mcp-eval.mjs` measures agent success rate, tool calls, errors, token
+ usage and latency against a live endpoint.
+- The official [MCP Inspector](https://github.com/modelcontextprotocol/inspector)
+ connects to the endpoint as an independent client and verifies the protocol
+ handshake, tool list and one representative call.
+
+## Prerequisites
+
+- A running QuickStack instance with the MCP canary active and the MCP server
+ set to **Read only** or **Read & write** in Settings → Developer → MCP.
+- Secret fields are redacted from MCP responses unless **Send secrets in MCP
+ responses** is enabled. Scripted and LLM evals should normally run with
+ redaction enabled.
+- A REST API key from Settings → Account & Access → API Keys.
+- Node.js 24 (uses the built-in `fetch` and `parseArgs`).
+
+```sh
+export MCP_URL="http://localhost:3000/api/mcp"
+export MCP_API_KEY="+ Read only exposes the search and read tools. + Read & write also exposes the mutating tool. +
+- VS Code also reads a portable .mcp.json at the workspace root, - which uses the same mcpServers shape as Claude Code. -
-- Call search_operations first to discover operation ids and their - input/output schemas, then call execute_operation with - {' '}pathParams, query and - {' '}body. Clients set the MCP protocol headers themselves. -
-