loop-verify
Provides an independent verification backend using OpenAI's models (GPT) to check artifacts against given criteria.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@loop-verifyVerify artifact against criteria using codex backend"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
loop-verify
Have a different AI grade the work your AI just did.
loop-verify is an independent checker for the self-verification loop — the part the loop-kit loop honestly admits it cannot do.
When an AI checks its own work, it shares its own blind spots. Free loop-kit checks
Claude's work with Claude (same family → the same misses slip through). loop-verify
hands the grading to a different model lineage (codex / GPT / Gemini), so defects the
self-check waves through get caught. The verdict format is identical to loop-kit's
validator, so it's a drop-in replacement for the same-family check.
Open source (MIT). Just a tool — no accounts, no metering, no billing.
What it does
In: your frozen YES/NO acceptance
criteria+ theartifactto inspect (a diff or file contents).Out: a verdict —
PASS/FAIL, each criterionOK/NG, any defects outside the criteria, and concretefix_instructions. (Same contract as loop-kit'svalidator.)The point: the grader is a different model family from whoever wrote the work, so it doesn't share their blind spots. That independence is the whole value — and it's measurable (see the edge bench).
Three ways to use it: as an MCP server, as a Python function, or via the edge bench.
Related MCP server: code-verify-mcp
Install
python3 -m venv ~/.venvs/loop-verify
~/.venvs/loop-verify/bin/pip install -r requirements.txtDemo (one command, runs anywhere)
python demo/run_demo.py # deterministic, offline (mock backend)
python demo/run_demo.py --backend codex # the REAL edge (costs codex quota)Exit code 0 iff the demo's invariants held, so it doubles as a smoke test. With
--backend codex it shows the independent checker catching planted defects a naive
same-family check misses.
Run as an MCP server
# local (stdio), codex backend:
LOOP_VERIFY_BACKEND=codex ~/.venvs/loop-verify/bin/python -m loop_verify.server
# HTTP transport (binds 127.0.0.1:8000 by default; localhost-only Host check):
LOOP_VERIFY_BACKEND=codex ~/.venvs/loop-verify/bin/python -m loop_verify.server --transport http
# ...to serve other hosts, bind all interfaces and allow their Host header:
LOOP_VERIFY_HOST=0.0.0.0 LOOP_VERIFY_PORT=8000 LOOP_VERIFY_ALLOWED_HOSTS=myhost:8000 \
LOOP_VERIFY_BACKEND=codex ~/.venvs/loop-verify/bin/python -m loop_verify.server --transport http
# (LOOP_VERIFY_ALLOWED_HOSTS="*" disables the Host check; binding 0.0.0.0 alone also
# opens it. Host/port are read at startup — set them via env, not flags.)
# OpenAI backend (needs OPENAI_API_KEY + `pip install openai`):
OPENAI_API_KEY=... LOOP_VERIFY_BACKEND=openai \
~/.venvs/loop-verify/bin/python -m loop_verify.server
# Gemini backend (needs GEMINI_API_KEY + `pip install google-genai`):
GEMINI_API_KEY=... LOOP_VERIFY_BACKEND=gemini \
~/.venvs/loop-verify/bin/python -m loop_verify.serverTools: independent_verify(criteria, artifact) and info(). Backend selected by
LOOP_VERIFY_BACKEND (codex default | openai | gemini | mock). For http, bind
with LOOP_VERIFY_HOST / LOOP_VERIFY_PORT (read at startup).
Verify the http transport is reachable end to end (boots a server, runs a real MCP client round-trip, no key needed):
python demo/http_smoke.pyWire it into loop-kit's loop-protocol
loop-kit's loop-protocol skill already prefers a
cross-vendor checker when one is available and falls back to its bundled same-family haiku
validator otherwise. To make loop-verify that checker, run it as an MCP server (above) so the
independent_verify(criteria, artifact) tool is in the session — loop-protocol picks it up
automatically. Nothing to patch in loop-kit: the verdict contract is identical, so it's a genuine
drop-in. Without loop-verify, loop-kit still runs on the haiku validator (zero external accounts);
with it, the loop reaches real cross-lineage independence.
Deploy (Docker)
The codex backend needs the codex CLI (not in the image), so a container uses a
key-based backend:
docker build -t loop-verify .
docker run --rm -p 8000:8000 \
-e LOOP_VERIFY_BACKEND=openai -e OPENAI_API_KEY=sk-... \
loop-verify
# MCP endpoint: http://localhost:8000/mcpThe image binds 0.0.0.0, so FastMCP's DNS-rebinding Host check is off by default
(the container accepts any Host header). To restrict it, add
-e LOOP_VERIFY_ALLOWED_HOSTS=myhost:8000.
Use it from Python
from loop_verify.service import run_independent_verify
result = run_independent_verify(criteria, artifact, backend="codex")
# -> {"verdict": "PASS"|"FAIL", "passed": bool, "criteria": [...],
# "defects_outside": [...], "fix_instructions": str, "checker": ..., "lineage": ...}Does independence actually help? (the edge bench)
python bench/edge_bench.py --backend codex # independent checker -> GO/NO-GO
python bench/edge_bench.py --backend mock # naive/blind baseline -> typically NO-GOThe gap between an independent checker (catches planted defects) and a naive one (misses them) is the whole reason to use this. Exit code = the edge verdict, so it can gate CI.
Measured on the bundled 9 fixtures (4 clean / 5 buggy, diverse bug classes): the codex backend scored recall 1.0, false-positive 0.0 → GO (every real bug flagged, every clean artifact passed), while the naive same-family baseline misses them → NO-GO.
Honest limits
codex backend cost: the codex backend runs on the operator's personal ChatGPT Plus quota — fine for personal/local use, not for serving many users. Use the OpenAI backend with your own key for that.
Independent ≠ ground truth: a different lineage reduces shared blind spots; it does not eliminate error.
The edge is the point: if the bench ever shows the independent checker ≈ a naive one, there is no reason to use it — that is a NO-GO, reported honestly, not buried.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP-native AI evaluation: rubric audits, eval suites, and proof reports for AI/LLM output.
The MCP server that vets MCP servers: identity, risk grade and per-tool risk before you install.
AI governance MCP server for EU AI Act compliance and jurisdiction verification
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseDqualityDmaintenanceA deterministic MCP server that checks project code alignment with SPEC documents through static analysis without AI involvement.4MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for verifying AI-generated code quality, security, and performance, addressing trust gaps in AI coding assistants.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that gives any AI coding tool a structured second opinion from another AI provider.2 npmMIT
- AlicenseAqualityAmaintenanceMCP server that provides audit and safety-check tools for enterprise SDLC code integrity, enabling AI agents to scan workspaces for lifecycle gaps, mock-theater tests, DRY violations, and language-specific issues in shell, JavaScript/HTML, and Python.46 npmMIT