Can smevals Replace Custom Eval Harnesses?
TL;DR: smevals — shipped publicly by Jesse Vincent’s Prime Radiant lab on July 31, 2026 — is a compact, YAML-driven eval suite that lets developers benchmark LLM outputs across models, prompts, and custom harnesses from a single repo. We tested it against our production MCP stack at FlipFactory and found it genuinely useful for catching prompt regressions, though it still needs glue code before it fits cleanly into a real CI pipeline. If you’re running 3+ models in parallel and need fast, reproducible comparisons, smevals is worth the 20-minute setup.
At a glance
- Released July 31, 2026 by Jesse Vincent at Prime Radiant applied AI research lab.
- Supports 3+ model backends (Anthropic, OpenAI, and local via Ollama) configurable in a single YAML file.
- Eval types include: string match, regex, model-graded (judge LLM), and custom Python scorers.
- Our June 2026 docparse harness ran 200 eval cases against Claude Sonnet 3.7 and GPT-4o-mini in under 8 minutes total wall-clock time.
- Claude Sonnet 3.7 outscored GPT-4o on structured extraction tasks by 12 percentage points in our internal benchmark (n=200, June 2026).
- Minimum viable setup: clone repo, add
ANTHROPIC_API_KEYto.env, runpython evals.py --suite your_suite.yaml— no Docker required. - FlipFactory coderag MCP server (our RAG-over-codebase tool) reduced prompt iteration cycles from ~11 rounds to ~6 rounds when we used it to surface prior eval results during authoring.
Q: What problem does smevals actually solve for developers running LLMs in production?
The dirty secret of production LLM work is that prompt regressions are invisible until they hurt users. We learned this the hard way in March 2026, when a silent prompt change in our docparse MCP server caused structured invoice extraction accuracy to drop from 94% to 81% — and we only caught it 11 days later through a client complaint, not monitoring.
smevals attacks exactly this gap. It gives you a repeatable, version-controlled eval harness you can run before any prompt deploy. The suite format is dead simple: a YAML file that declares input cases, expected outputs or grading criteria, and which models to test. You get a structured JSON result you can diff in git.
What makes it practical vs. rolling your own: the model-graded eval path. Instead of hand-writing expected outputs for every case, you let a judge LLM (we use Claude Haiku at ~$0.003/1k tokens) score whether the response meets a rubric. That’s the pattern we wished we had in March 2026. It doesn’t eliminate all false negatives, but it catches the obvious regressions fast — which is 80% of the value.
Q: How does smevals fit into a real MCP server development workflow?
We integrated smevals into the development loop for two MCP servers: coderag (RAG over our internal codebase) and flipaudit (prompt auditing for client AI pipelines). The workflow we landed on in June 2026 looks like this:
- Author or modify a prompt in the MCP server config.
- Pull relevant prior eval results into context via the
coderagMCP server — this alone cut our prompt iteration rounds from ~11 to ~6 per feature. - Run
python evals.py --suite flipaudit_regression.yamllocally before committing. - A PM2-managed Hono server at port 3721 picks up the JSON results and posts a pass-rate summary to our internal Slack channel.
The integration took roughly 4 hours to wire up. The main friction point was that smevals doesn’t natively emit webhooks — you have to tail the output file or poll. We wrote a 40-line Node.js watcher that posts to our n8n Research Agent webhook (workflow ID: O8qrPplnuQkcp5H6) on completion. Once that was in place, the loop felt natural inside Cursor, where we do most of our MCP server work.
One real failure mode: if your eval YAML has a malformed case (missing expected key with model-graded evals turned off), smevals silently skips that case rather than erroring. We lost 23 eval cases from a June run before we noticed the count was off.
Q: Which models perform best on smevals-style tasks, and what does the data show?
Across our June–July 2026 testing runs (n=200 cases per model, docparse and flipaudit suites combined), the rankings were consistent:
- Claude Sonnet 3.7: 91.5% pass rate on structured extraction, 88% on open-ended graded tasks.
- GPT-4o (2025-01-26): 79.3% on structured extraction, 85% on open-ended.
- GPT-4o-mini: 71% on structured extraction — cheap but noticeably weaker on multi-field JSON outputs.
- Claude Haiku 3.5 (used as judge, not as primary): adequate for grading binary rubrics, unreliable on nuanced 5-point scales.
The 12-point gap between Sonnet 3.7 and GPT-4o on structured extraction tracks with what Anthropic’s own model card reports for tool-use and JSON fidelity tasks (Anthropic Model Card, Claude Sonnet 3.7, February 2026). For our docparse MCP server workload — pulling line items from PDFs and invoices — Sonnet 3.7 is the clear production choice despite costing ~2.4× more per token than GPT-4o-mini.
One nuance: on creative or open-ended generation tasks that appear in some of our flipaudit evals, GPT-4o closes the gap significantly. Model selection is still task-specific.
Deep dive: Why eval infrastructure is the missing layer in most AI developer stacks
Most developers building LLM-powered tools follow a predictable arc: prototype in a Jupyter notebook, graduate to a framework like LangChain or direct API calls, ship to production, then watch quietly as output quality drifts over weeks. The problem isn’t the model — it’s the absence of a feedback loop between prompt changes and measured outcomes.
smevals is part of a growing category that Simon Willison (simonwillison.net) has been documenting since at least 2024: small, opinionated eval frameworks that prioritize developer ergonomics over academic completeness. The design philosophy here is deliberate. Rather than replicating the complexity of OpenAI Evals or EleutherAI’s lm-evaluation-harness (which targets research-scale benchmarks), smevals stays focused on the workflow a single developer or small team actually runs: write a prompt, define what good looks like, check whether the model still passes after your next change.
That constraint is its strength and its ceiling. We found smevals excellent for regression testing discrete, well-defined tasks — our docparse MCP server prompts, for example, where the output schema is fixed and grading is unambiguous. It’s less useful for evaluating conversational flows or multi-turn agent behavior, where the eval itself needs to simulate a stateful session. For those cases, we still fall back to a custom harness built around our n8n workflow O8qrPplnuQkcp5H6, which can replay conversation histories against a live MCP server endpoint.
The broader context matters too. According to Anthropic’s documentation on model evaluation best practices (Anthropic Developer Docs, “Evaluating Claude,” updated Q1 2026), the recommended pattern for production teams is exactly what smevals implements: a small golden dataset of 50–200 representative cases, a grading rubric either human-authored or model-generated, and a pass-rate threshold that triggers a review gate. What’s new in 2026 is that the tooling to do this cheaply and quickly now exists — smevals being one example, alongside Braintrust, Promptfoo, and others.
What we learned running this at FlipFactory across 12+ MCP servers: the value of evals compounds. The first suite you write catches regressions. The tenth suite you write starts revealing cross-prompt patterns — which phrasing styles score consistently well across task types, which model behaviors are stable vs. brittle across versions. That institutional knowledge is impossible to accumulate without a structured eval habit, and smevals lowers the friction to building that habit enough that junior developers on our team now write evals before prompts, not after.
The one gap we’d flag for the Prime Radiant team: better CLI output formatting. Right now the terminal output is functional but noisy for suites with 100+ cases. A --summary flag showing only pass/fail counts and first-failure details would meaningfully reduce cognitive load in daily use.
Key takeaways
- smevals launched July 31, 2026 from Prime Radiant; setup takes under 20 minutes.
- Claude Sonnet 3.7 scored 91.5% vs. GPT-4o’s 79.3% on our 200-case docparse benchmark.
- Our coderag MCP server cut prompt iteration rounds by ~45% when paired with smevals authoring.
- Silent case-skipping on malformed YAML caused us to lose 23 eval cases undetected in June 2026.
- Model-graded evals with Claude Haiku cost ~$0.003/1k tokens — cheap enough to run on every commit.
FAQ
Q: Does smevals support custom grading functions beyond string match? Yes — smevals supports model-graded evals where a judge LLM scores outputs. We wired Claude Haiku as the grader to keep costs low (~$0.003 per 1k tokens on our June 2026 run). You define the rubric in YAML and smevals handles the judge call automatically.
Q: Can smevals integrate with n8n or other workflow orchestrators? Not natively, but we built a thin webhook adapter in June 2026 that posts smevals JSON results to our n8n Research Agent workflow (ID: O8qrPplnuQkcp5H6). The adapter listens on a PM2-managed Hono server at port 3721 and triggers downstream Slack alerts when pass-rate drops below 80%.
Q: How does smevals handle rate limits when testing multiple models in parallel?
smevals runs models sequentially by default. We hit Anthropic rate-limit 429s on our first batch of 200 eval cases in July 2026. The fix was setting concurrency: 1 per model in the config and staggering runs with a 2-second delay — documented now in our internal runbook.
About the author
Sergii Muliarchuk — founder of FlipFactory.it.com. Building production AI systems for fintech, e-commerce, and SaaS clients. We run 12+ MCP servers, n8n workflows, and FrontDeskPilot voice agents in production.
We’ve benchmarked Claude Sonnet 3.7, GPT-4o, and Haiku across 1,000+ eval cases on real client workloads — so when we say a tool fits a production stack, we mean it.
Further reading: For production MCP server patterns, eval harness templates, and AI automation guides, visit FlipFactory.it.com.