Agent Eval
Resumen
Descripción del creador (original en inglés)
Statistical regression testing for LLM agents: p-value, effect size, and CI on behavior change.
Los tres pilares de PopNx MCP
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
- Opinión de usuariosiAún no hay reseñasLas reseñas se abrirán junto con las cuentas en una etapa posterior
- Nuestras revisiones básicasi1 de 1 superadasRevisado con información pública; el código aún no se ha escaneado
- UsoiMuy nuevo↓ 41/sem · ★ –
Qué puedes hacer con él
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
- Conexión: Se ejecuta en tu computadora
- Transporte: stdio
- Categoría: Búsqueda y memoria de IA
Instalación
Elige la app de IA que usas y copia la configuración.
Antes de instalar
- Revisiones básicas: 1 de 1 superadas
- Se ejecuta en tu computadora con los permisos de tu usuario (archivos, red, apps).
- El registro no indica ninguna clave que completar.
Necesitas
- PyPIuv de Python instalado (para el comando uvx)
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"agent-eval": {
"command": "uvx",
"args": [
"agent-regress-cli",
"agent-regress-mcp"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add agent-eval -- uvx agent-regress-cli agent-regress-mcpO copia la configuración tú
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"agent-eval": {
"command": "uvx",
"args": [
"agent-regress-cli",
"agent-regress-mcp"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
O copia la configuración tú
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"agent-eval": {
"type": "stdio",
"command": "uvx",
"args": [
"agent-regress-cli",
"agent-regress-mcp"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Qué puede hacer
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisiones básicasi
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026
- ✓ Superada
El creador coincide con el repo
El nombre en el registro se verificó con la cuenta de GitHub RudrenduPaul, dueña del repo
- … Aún sin revisar
Sigue en mantenimiento
Todavía no hemos leído este repo en GitHub
- … Aún sin revisar
Tiene licencia
Todavía no hemos leído este repo en GitHub
- – No aplica
El endpoint responde
Este se ejecuta en tu computadora; no hay endpoint en internet
- – No aplica
Inicio de sesión con OAuth
Se ejecuta en tu computadora y usa ajustes locales en su lugar
- … Aún sin revisar
Sin instrucciones ocultas en las descripciones de herramientas
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con otros en Búsqueda y memoria de IAi
- Más estrellas que el 0% de los otros 5689 servidores de esta categoría
- Publicado en el registro más recientemente que el 29% de los otros 5689 servidores de esta categoría
- Revisiones básicas iguales o mejores que el 100% de los otros 5689 servidores de esta categoría
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Preguntas frecuentes
¿Es seguro Agent Eval?
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
¿Qué claves o códigos necesita?
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
¿Se ejecuta en mi computadora o en la nube?
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
¿Sigue en mantenimiento?
El repo de GitHub cambió por última vez –, y la última versión (0.1.8) llegó al registro hace 3 meses.
¿Qué apps pueden usarlo?
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
¿Qué puedo usar en su lugar?
En la misma categoría: Context7, Codebase Memory, Exa
Alternativas
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
README del creador
Abrir el README
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Agent Evaluation
Statistical regression testing for LLM agents: run version A and version B 50x each and get a p-value, an effect size, and a 95% confidence interval on whether behavior actually shifted.
pip install agent-regress-cli
(uv add and the npm/npx wrapper are covered in Install below.)
The test that every eval framework skips
You changed a prompt. Your evals still pass. But your agent's tool accuracy dropped from 84% to 70%.
Is that a real regression? Or is it LLM run-to-run noise?
Threshold testing cannot answer that question. agent-eval can.
Run your agent 50x on version A, 50x on version B. Get a p-value, an effect size, and a 95% confidence interval on whether behavior actually shifted.
p=0.003, Cohen's d=-0.61 -> REGRESSED (deploy blocked)
p=0.410, Cohen's d=0.021 -> STABLE (safe to ship)
[!NOTE]
Promptfoo, one of the most widely used open-source LLM eval frameworks, was acquired by OpenAI in March 2026, staying open source but folding its team into OpenAI's Frontier platform. agent-eval is Apache 2.0-licensed, self-hostable, and has no commercial dependency. The statistical core (Mann-Whitney U, bootstrap CI, Cohen's d) will never be paywalled.
Install
pip install agent-regress-cli
or
uv add agent-regress-cli
or, from Node/npx (thin wrapper around the same Python CLI)
npx agent-regress-cli
Quickstart
In 30 seconds (CLI)
Already have per-run scores from your own harness? Point the CLI at two JSON arrays of scores, one per version:
pip install agent-regress-cli
agent-regress compare \ --version-a-results v1_scores.json \ --version-b-results v2_scores.json \ --metric tool_accuracy
============================================================
agent-regress Report -- tool_accuracy
============================================================
Verdict: REGRESSED
p-value: 0.0000
Cohen's d: -2.193
95% CI: [-0.213, -0.148]
#
Version A: 0.8470 +/- 0.0525 (n=50)
Version B: 0.6685 +/- 0.1025 (n=50)
Delta: -0.1786
============================================================
Add --json --fail-on-regression to get clean, parseable output and a non-zero exit code on REGRESSED, for wiring straight into CI.
All `agent-regress compare` flags:
| Flag | Default | Description | ||
|---|---|---|---|---|
--version-a-results PATH | *(required)* | Path to a JSON array of per-run scores for version A (baseline). | ||
--version-b-results PATH | *(required)* | Path to a JSON array of per-run scores for version B (candidate). | ||
--metric NAME | accuracy | Name of the metric being compared, shown in the report. | ||
--p-threshold P | 0.05 | Significance threshold for the Mann-Whitney U p-value. | ||
--min-effect D | 0.2 | Minimum \ | Cohen's d\ | to call a statistically significant difference REGRESSED/IMPROVED rather than STABLE. |
--n-resamples N | 1000 | Number of bootstrap resamples used for the confidence interval (minimum: 100). | ||
--json | off | Print the report as a single JSON object to stdout instead of the human-readable format. Warnings still go to stderr, so stdout stays clean, parseable JSON. | ||
--fail-on-regression | off | Exit with status 1 if the verdict is REGRESSED (useful for CI). Without this flag, the command exits 0 regardless of verdict. |
The top-level agent-regress --version flag prints the installed version and exits.
Exit codes:
| Code | Meaning |
|---|---|
0 | Ran successfully. Verdict may be REGRESSED, STABLE, IMPROVED, or INSUFFICIENT_DATA — without --fail-on-regression, the exit code doesn't reflect the verdict. |
1 | --fail-on-regression was passed and the verdict is REGRESSED. |
2 | Usage or data error: invalid/missing arguments, no subcommand given, a --version-*-results file that doesn't exist or isn't valid JSON, an empty/non-numeric scores array, or an out-of-range value for --p-threshold (must be in (0, 1)), --min-effect (must be >= 0), or --n-resamples (must be >= 100). |
In your code (Python API)
Driving the agent yourself instead of pre-computing scores? Use the Python API:
from agent_regress import compare
Any callable that takes a test case dict and returns a score 0.0-1.0
def agent_v1(test_case: dict) -> float: ... # your existing agent
def agent_v2(test_case: dict) -> float: ... # your updated agent
test_suite = [ {"query": "find SKU for order 8823", "expected": "SKU-4492"},
... more test cases
]
report = compare( version_a=agent_v1, version_b=agent_v2, test_suite=test_suite, n_runs=50, metric="tool_accuracy", # use any name except "accuracy" when agents return floats )
print(report) # structured output with p-value, CI, effect size report.assert_stable() # raises AssertionError if behavior regressed
Agent returns text? Pass a scorer or use the built-ins:
from agent_regress import compare, exact_match_scorer, f1_scorer
exact_match_scorer: 1.0 if str(output).strip() == str(expected).strip()
f1_scorer: token-level F1 (multiset — handles repeated tokens correctly)
report = compare( version_a=agent_v1, version_b=agent_v2, test_suite=test_suite, n_runs=50, scorer=exact_match_scorer, # test_case must have an "expected" key )
Or write your own:
def my_scorer(output: str, test_case: dict) -> float:
return 1.0 if output.strip() == test_case["expected"] else 0.0
report = compare(..., scorer=my_scorer)
MCP Server
agent-eval ships a Model Context Protocol server so an AI agent (Claude, Cursor, or any MCP-compatible client) can run statistical regression tests directly, without a human invoking the CLI by hand.
Install the extra:
pip install "agent-regress-cli[mcp]"
Add it to your MCP client's config (for Claude Desktop, claude_desktop_config.json):
{
"mcpServers": { "agent-eval": { "command": "uvx", "args": ["--from", "agent-regress-cli", "agent-regress-mcp"] } } }
The server exposes one tool, run, that shells out to the agent-regress CLI with the given subcommand and arguments plus --json, and returns the parsed JSON result:
run(["compare", "--version-a-results", "a.json", "--version-b-results", "b.json", "--metric", "accuracy"])
Transport is stdio, so there is nothing to host: the MCP client spawns the server as a local subprocess. Source: src/agent_regress/mcp_server.py.
Why not DeepEval, Promptfoo, or Braintrust?
| Capability | Agent Evaluation | DeepEval | Braintrust | Promptfoo |
|---|---|---|---|---|
| Statistical version comparison (p-values) | Yes | No | No | No |
| Effect size reporting (Cohen's d) | Yes | No | No | No |
| Bootstrap 95% confidence intervals | Yes | No | No | No |
| Distributional shift detection | Yes | No | No | No |
| Tau-bench pass^k harness (k=1,4,8) | Yes | No | No | No |
| GAIA Level 1-3 split harness | Yes | No | No | No |
| SWE-bench scaffold score harness | Yes | No | No | No |
| Self-hostable, zero SaaS required | Yes | Partial | No | Yes |
| Sample size warnings | Yes | No | No | No |
| Core license | Apache 2.0 | MIT | Proprietary | MIT† |
| Requires cloud account | No | Optional | Yes | No |
| Test type | Distributional | Threshold | Threshold | Threshold |
†Promptfoo acquired by OpenAI, March 2026; remains open source under its current license.
DeepEval tests whether an individual agent response clears a quality bar. Agent Evaluation tests whether behavior changed significantly between two agent versions, a different statistical question that threshold testing cannot answer. The scipy Mann-Whitney U call at the core is one line, so any SaaS eval platform can add it. What accumulates over time through production use is version-specific regression history and a community-maintained benchmark leaderboard with independent result verification.
Real regressions statistical testing catches that threshold testing misses
LangGraph
- #5243: a new typed
context=API replaced untypedconfig['configurable']. A single run on either invocation style still clears a threshold check; only a version-A-vs-B comparison shows whether the switch changed measured behavior. - #4486: node/task-level result caching can silently mask repeated-sampling variance. Threshold checks don't care whether a result came from cache; a statistical comparison depends on genuinely independent samples, so
agent-evaladded cache-busting to protect that assumption.
OpenAI Agents SDK
- #2463: agent-as-tool calls were silently dropping the parent run's
RunConfig. The nested call still returns a normal-looking response, so a single-response check clears; only inspecting config propagation across runs reveals the regression. - #2214: image/audio/file tool outputs were silently downgraded to text-only. A text-only threshold scorer has no way to notice a dropped attachment.
CrewAI
- #6134: a security fix for file tools leaking absolute filesystem paths in responses. A quality scorer checks whether the answer is correct, not whether it also leaks a path, so the leak clears the bar.
- #6236: tools gained an optional Pydantic
output_schema, moving from unstructuredstr()output to structured JSON. Both the old and new format can look "reasonable" to a threshold scorer even though the schema changed underneath.
These are the regressions that motivated this project. Full detail on all 14 individually-documented PRs (drawn from a 29-PR, 239-row validation campaign across LangGraph, CrewAI, and the OpenAI Agents SDK) is in docs/pr-analysis.md.
The probl
Solo se muestra el principio; lee el resto en el repo