Codecov for the agentic age

Coverage your agents can close the loop on.

tested.dev is the PR coverage system for teams where humans and coding agents ship together — patch-first FAIL/PASS, uncovered lines as feedback, CLI + MCP + GitHub checks so the loop doesn't stop at a report tab.

$tested diff --base origin/main
patch42.7%·project88.1%

Free for public repos. Built for CI and agents.

GitHub App · CLI ingest · MCP · shareable gates · monochrome dashboard

patch-first gate · agent-readable feedback · FAIL/PASS

Built by Jorge Modesto — 10y shipping production software.

Open demoOpen CLIDogfooded on real GitHub installs
“Codecov for the agentic age — coverage agents and humans both use.”— tested.dev
built for agents
  • Stable --json schemas agents parse on the first try
  • Exit codes mean the gate — not a badge you ignore
  • Uncovered ranges as fixable feedback, not a report tab
  • Agent Auth discovery at tested.dev · CLI · MCP · sticky PR
01

01 / the problem

Agents ship untested patches. Coverage theater doesn't stop them.

a.

Agents ship patches faster than test discipline.

Coding agents open PRs at machine speed. Without a tight feedback loop — patch gates and uncovered lines they can read — untested code lands before anyone notices.

b.

Coverage theater still wins.

Green project badges, ignored report tabs, and “we look at coverage in review” don’t block a bad merge. Classic tools weren’t built as an agent feedback loop — and humans still need a real gate.

c.

No shared ground truth on the merge path.

If coverage can’t fail the check, it isn’t a gate. Agents and humans both need FAIL/PASS against thresholds you set — and the uncovered lines that make the fix obvious.

02

02 / how it works

Install. Ingest. Gate.

Three steps from zero to a hard yes/no — for humans and agents on every pull request.

01

Install the GitHub App

Connect the org or repos you care about. The app posts on the PR path — comment, check, and a shareable report humans and agents both use.

02

Ingest from CI, CLI, or MCP

Post patch and project coverage from your pipeline, a local agent shell, or MCP tools. Same signal for the dashboard, the gate, and the agent loop.

$pnpm dlx@tested/clireport# post coverage from CI
open source
03

Gate the PR — agent can fix

Set thresholds per repo. FAIL/PASS plus uncovered lines. Agents read the share link, check conclusion, or MCP output and close the loop before merge.

agent loop · first 10 minutes

CLI. MCP. Sticky PR.

One command per surface — same patch-first FAIL/PASS, same uncovered lines, so the loop doesn't stop at a dashboard tab.

CLI

Local agent shell

Init, doctor, and the next steps in one shot. Agents and humans share the same binary.

$tested setup

MCP

Tool-using agents

Uncovered ranges as a tool result — fix, re-run, close the loop without a report tab.

>get_uncovered_diff

Sticky PR

PR-native ground truth

Push coverage → share URL + sticky comment and check on the pull request path.

$tested push --pr 42

Agents can discover tested.dev and sign up via Agent Auth (app docs). Start with the CLI path in Getting started.

03

03 / the gate

FAIL when it matters. Lines you can fix.

Patch coverage under threshold → required check fails. Authors and agents see the files and ranges that still need tests — then fix and re-run.

pr #1847 · coverage gate
FAIL

Patch coverage below threshold

patch 42.7% · required ≥ 80% · project 88.1%

Uncovered in diff

0%src/auth/session.ts14–22, 47
33%src/api/orders.ts8–15, 23
100%src/util/clock.ts
  • Gate, not report — thresholds humans set; check status on the PR.
  • Patch-first — new code is the default signal; project % is context.
  • Share links — send a report without forcing an account on the reader.
See live demo →
04

04 / agents

Built so agents can close the coverage loop.

Deep integration — not a bolt-on badge. CLI, MCP, CI, and share URLs agents can actually use. Humans keep the same PR ground truth.

a.

CLI for local agents.

Run tested in the agent shell. Patch coverage JSON and uncovered ranges land in the same turn the agent calls it — write the test, verify, then open the PR.

> coverage.get_uncovered_diff
{
  "files": [
    {
      "path": "src/auth.ts",
      "ranges": [
        { "start": 14, "end": 22, "kind": "line" }
      ]
    }
  ]
}
$pnpm dlx@tested/clireport# post coverage from CI
open source
b.

MCP tools + CI for cloud agents.

MCP for tool-using agents. CI ingest after an agent opens a PR. Same FAIL/PASS and share URL the dashboard uses — agents can fetch the gate, not guess from a badge.

c.

Humans and agents, same ground truth.

GitHub check, sticky comment, monochrome dashboard, shareable gate. Senior standards become everyone’s gate — including the agent’s. Not vapor: live demo and open CLI.

03

research / why agents need feedback

Why agents need coverage feedback.

Four-arm ablation, 13 TypeScript fixtures, N=3 trials — 156 test-closure attempts against DeepSeek V4 Pro. Each arm adds one capability over the previous. Coverage data and MCP tooling both move closure rate. All three deltas separate at 95% Wilson CI.

A
bare prompt, one-shot
25.6%
no iteration · no coverage signal · no tools10/39 · 95% CI [14.641.1]
+46pp·iteration alone
A*
bare prompt, multi-turn
71.8%
model reads stderr, retries · still no coverage signal28/39 · 95% CI [56.283.5]
+15pp·coverage data
B
raw diff (CLI)
87.2%
patch-scoped coverage JSON fed back to the model34/39 · 95% CI [73.394.4]
+13pp·MCP tooling
C
MCP tool loop
100.0%
write_and_verify · per-write coverage feedback39/39 · 95% CI [91.0100.0]
per fixture · 13 × 4 · closures of 3 trials
fixture
A
A*
B
C
async-crud-service
cron-parser
event-bus
json-patch-applier
lru-cache
markdown-link-extractorcanary
multi-file-controller
rate-limiter
retry-with-backoff
state-machine
string-diff
url-router
util-math

markdown-link-extractoris the canary — a regex over nested brackets. A and A* never close it. B closes it 1/3. Only the MCP loop closes it consistently. The wedge isn't an average; it's real on the hard fixtures.

model

deepseek-v4-pro

+ V4 Flash cross-model: same A* < B < C ordering

total spend

$4.79

186 cells · 19m wall-clock

caveat

mutation kill N=1

A* 90 > C 86 > B 83 — suggestive, not significant

05

05 / differentiation

Codecov for the agentic age — not anti-Codecov snark.

vs classic Codecov

They defined the category. We're the agentic-era coverage layer: patch-first gate, agent-readable outputs, MCP + CLI so the loop doesn't stop at a report tab. Many teams keep historical tools and still want a clearer PR gate.

vs Sonar-style QMS

We are not a full quality platform (bugs, smells, security). We do one job well: make patch coverage a hard yes/no — for humans and agents — on the path to merge.

vs "badge culture"

If coverage can't fail the PR, it isn't a gate. Sticky comments, required checks, and shareable FAIL/PASS turn standards into enforcement agents can act on.

06

06 / pricing

Simple pricing for teams shipping with agents.

Start free. Pay when private repos and PR checks matter.

Free

$0forever

  • Public repos
  • Live demo
  • Share links
  • 1 private repo
  • 7-day history
Start free

Most teams

Team

$49/mo

  • Up to 10 private repos
  • Unlimited seats
  • Sticky PR comments
  • Required checks
  • Full history
  • Per-repo thresholds
Start Team trial

Prices in USD. Cancel anytime. Annual invoicing on request. Billing is per private active repo / month; seats unlimited on Team.

07

07 / questions

FAQ

Ready when you are

Coverage your agents can close the loop on.

Start free on public repos — or open the live demo and see FAIL/PASS before you install anything. Built for CI and agents.

Free for public repos. No credit card to try.