MCP

Probierz MCP tool reference.

The `probierz-mcp` Rust binary exposes Probierz discovery, execution, evidence, and control operations over newline-delimited stdio JSON-RPC.

Start the server#

Build the repository with `cargo build --release` in `probierz-rs`, put `target/release` on `PATH`, and configure your MCP client to launch `probierz-mcp`. The server reads JSON-RPC from standard input and writes one JSON response per line to standard output.

The tool names, descriptions, and schemas below are generated by initializing that binary and calling `tools/list`; the documentation check refuses missing, extra, or changed tools.

MCP server command
probierz-mcp

Asynchronous run queue#

Initialize the stdio session, send `notifications/initialized`, start a run, and poll its durable run ID until it settles. Artifacts are listed and read separately; `probierz_get_artifact` returns base64 content. Cancellation is idempotent: asking to cancel a settled run returns `cancelRequested: false`.

JavaScript
import { spawn } from "node:child_process";
import { createInterface } from "node:readline";

const server = spawn("probierz-mcp", [], { stdio: ["pipe", "pipe", "inherit"] });
const lines = createInterface({ input: server.stdout });
const pending = new Map();
let id = 0;
lines.on("line", (line) => {
  const message = JSON.parse(line);
  pending.get(message.id)?.(message);
  pending.delete(message.id);
});
function rpc(method, params) {
  id += 1;
  server.stdin.write(JSON.stringify({ jsonrpc: "2.0", id, method, params }) + "\n");
  return new Promise((resolve) => pending.set(id, resolve));
}
async function tool(name, args) {
  const response = await rpc("tools/call", { name, arguments: args });
  if (response.error) throw new Error(response.error.message);
  return JSON.parse(response.result.content[0].text);
}
await rpc("initialize", {
  protocolVersion: "2024-11-05",
  capabilities: {},
  clientInfo: { name: "probierz-docs", version: "1" },
});
server.stdin.write(JSON.stringify({ jsonrpc: "2.0", method: "notifications/initialized" }) + "\n");
const started = await tool("probierz_start_run", { target: "tui", appId: "docs-demo" });
let status = started;
while (["queued", "running"].includes(status.status)) {
  await new Promise((resolve) => setTimeout(resolve, 500));
  status = await tool("probierz_run_status", { runId: started.runId });
}
const artifacts = await tool("probierz_list_artifacts", { runId: started.runId });
const report = await tool("probierz_get_artifact", { runId: started.runId, file: "report.json" });
const decoded = JSON.parse(Buffer.from(report.content, "base64").toString("utf8"));
if (decoded.probierz.runId !== started.runId) throw new Error("artifact runId mismatch");
const cancelled = await tool("probierz_cancel_run", { runId: started.runId });
if (cancelled.cancelRequested !== false) throw new Error("settled run requested cancellation");
console.log({ status: status.status, artifacts: artifacts.artifacts });
server.stdin.end();

Tools#

Source snapshot#

Generated from https://github.com/wisent-ai/probierz.git revision `8ca8c1f19a5eb137164120d54f80405b0d0dbf14` by calling the Rust server's `tools/list` operation.

The captured server exposes 45 tools. Binary SHA-256: `72425bce4d10d4373586fb2ea7deb40be44bf277964e14aa53e52c9216e60bf4`; tools/list SHA-256: `856670843b435996d8cd5e1542c3001560c0cf11baf48a2c528f68e31600fdde`.