Iris runs on your own machine — the client starts it, so there is no endpoint to ping. 658 installs a week from npm. Last commit 31 Oct 2026.
Stop shipping agents on vibes. Score every agent output for quality, safety, and cost.
We read the source, 1 d ago · rules 995398eba69f
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
const child = spawn(command, args, {
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add mcp-server -- npx -y @iris-eval/mcp-server
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": [
"-y",
"@iris-eval/mcp-server"
]
}
}
}
[mcp_servers.mcp-server]
command = "npx"
args = ["-y", "@iris-eval/mcp-server"]
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": [
"-y",
"@iris-eval/mcp-server"
]
}
}
}
{
"servers": {
"mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@iris-eval/mcp-server"
]
}
}
}
Optional settings from the registry entry, left out of the block above:
IRIS_API_KEY (API key for HTTP authentication. Required to bind the HTTP transport or the dashboard beyond loopback (0.0.0.0, a LAN address, a container): without it the server refuses to start), IRIS_API_KEY_FILE (Path to a file whose trimmed contents are the API key (the secret-file pattern Docker and Kubernetes mount). Set this or IRIS_API_KEY, not both; further keys and rotation are security.apiKeys in config.json), IRIS_ALLOW_UNAUTHENTICATED (Set to 1 to run a non-loopback bind with NO API key on purpose (lifts the startup refusal; the network is then your boundary)), IRIS_DB_PATH (SQLite database path), IRIS_SQLITE_DRIVER (Which SQLite driver holds the database: native (better-sqlite3, the default) or node (Node's built-in node:sqlite, Node 22.13+). Unset: native, falling back to node when the native module cannot load), IRIS_SEARCH_BUDGET_MS (How long one trace search may read before it answers with the matches found so far, in milliseconds (50-60000, default 1000)), IRIS_SEARCH_INDEX (on (default) or off. off keeps no full-text index of the traces: writes are cheaper, and a search reads the traces within its time budget), IRIS_LOG_LEVEL (Log level: debug, info, warn, error), IRIS_HOME (Directory for the database, custom rules and preferences (default ~/.iris)), IRIS_ANTHROPIC_API_KEY (Enables evaluate_with_llm_judge and verify_citations with an Anthropic model. Optional: the deterministic rules never need a key), IRIS_OPENAI_API_KEY (Enables evaluate_with_llm_judge and verify_citations with an OpenAI model. Optional: the deterministic rules never need a key), IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL (Hard cap on the worst-case cost of one LLM judge call (default 0.25); max_cost_usd can lower it for a call, never raise it), IRIS_RELEVANCE_JUDGE_MODEL (A priced judge model; answers_the_ask then asks it on every evaluation with input, sending that input and output to the model's provider, and gates on its verdict (off by default)), IRIS_LLM_JUDGE_DAILY_BUDGET_USD (What every judge call together may spend per UTC day, per tenant, in USD (default 1): the relevance judge, evaluate_with_llm_judge and verify_citations. Past it no judge call is made), IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD (The name of IRIS_LLM_JUDGE_DAILY_BUDGET_USD before 0.21.0. Read when the new name is unset, and it then limits every judge call), IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST (Relevance judge calls one request may make (default 20)), IRIS_RELEVANCE_JUDGE_REDACT (on (default) replaces the PII and credentials no_pii flags before the relevance judge sends input and output to its provider; off sends them as they are), IRIS_CITATION_ALLOW_FETCH (Let verify_citations fetch URLs (off by default); a tool argument can turn it off for a call, never on), IRIS_DASHBOARD (Start the dashboard alongside the server (same as --dashboard)), IRIS_DASHBOARD_PORT (Dashboard port (default 6920); IRIS_PORT is the MCP HTTP transport port (default 3000)), IRIS_PORT (MCP HTTP transport port (default 3000); only used with --transport http), IRIS_OTEL_ENDPOINT (OTLP/HTTP collector URL; when set, every stored trace is also exported as OpenTelemetry spans (best-effort, asynchronous)), IRIS_CITATION_DOMAINS (Comma-separated domain allowlist for verify_citations fetches (only consulted when IRIS_CITATION_ALLOW_FETCH is on); a tool argument can narrow it, never add to it), IRIS_CITATION_MAX_COST_USD_TOTAL (The most one verify_citations call may spend on judge calls, in USD (default 1); max_cost_usd_total can lower it, never raise it), IRIS_TRANSPORT (Transport: stdio (default) or http; same as --transport), IRIS_HOST (Bind host for the HTTP transport (default 127.0.0.1); only used with --transport http), IRIS_ALLOWED_ORIGINS (Comma-separated Origin allowlist for the HTTP transport and dashboard CORS (default http://localhost:*)), IRIS_MAX_INPUT_ELEMENTS (The most array elements and object keys one input may hold before it is validated (default 100000): a tool call's arguments, and a dashboard or OTLP JSON request body. A tool call over it gets an error result; a body, 413. OTLP protobuf has its own ceiling, one element per 5 bytes of the request size limit), IRIS_MAX_TOOL_INPUT_ELEMENTS (The name of IRIS_MAX_INPUT_ELEMENTS before 0.21.0, read when the new name is unset), IRIS_DASHBOARD_HOST (Bind host for the dashboard (default 127.0.0.1); same as --dashboard-host), IRIS_OTEL_HEADERS (Comma-separated key=value headers sent with every OTLP export (for example an auth token for your collector)), IRIS_OTEL_SERVICE_NAME (service.name resource attribute on exported spans (default iris-eval)), IRIS_OTEL_TIMEOUT_MS (Timeout in milliseconds for each OTLP export request), IRIS_WEBHOOK_URL (The receiver of the webhook that fires on a moment (docs/webhooks.md); merged over notify.webhook in config.json), IRIS_WEBHOOK_SECRET (The signing key of that webhook (any string, or whsec_ + base64); the iris format refuses to run without one).
Output quality control and validation for AI agents
Local code-quality rules, findings, preview-first safe fixes and gate results for coding agents.
MCP server quality scoring and optimization for the agent economy.
Merchant trust verification for AI agents. One call = trust score, badge, and purchase safety.
Quality verification for AI agents and MCP servers. 6-axis scoring, adversarial probes.
Quality verification for AI agents and MCP servers. 6-axis scoring, adversarial probes.
Query trust scores for MCP servers and agent skills. Check if a tool is safe.
Read-only observable merchant evidence for people and agents, without scores or safety verdicts.
Answers built from our own checks of this server.