Benchmarks

Every number on this page is reproducible or clearly marked historical. Dataset is public and harness is MIT-licensed for the AVeriTeC accuracy numbers below. The /v1 latency numbers are archived wall-clock measurements from before the Tanilo rename and are not re-runnable today — see the note on that section. Methodology beats marketing — if you can't re-run it, it isn't a benchmark.

If you only read three sentences: Tanilo's accuracy is measured on a public academic benchmark, not a number we made up. Anyone can re-run our results, the dataset is public, the harness is MIT-licensed. That's the difference between verification you can trust and verification you have to take on faith.

Accuracy — AVeriTeC 2024 Reproducible

Public academic fact-checking benchmark from Schlichtkrull et al., EMNLP 2024. 500-claim dev set with 4-label space: Supported / Refuted / Not Enough Evidence / Conflicting Evidence. Tanilo's /evaluate pipeline was run end-to-end against the live API, free during the beta run. Calibration / held-out split is 250/250 by deterministic dataset index.

Tanilo's score on a public benchmark, against published paper baselines.

Internal baseline, not a leaderboard result: retrieval recall is not reported and parametric-knowledge contamination is not controlled for on Tanilo's run. The paper baselines below were not re-run by us — they are the numbers reported in Schlichtkrull et al. Measured 28 May 2026 on the pipeline as it was then — the backend was replaced in September 2026, and this number has not been re-run since.

SystemAccuracy on dev
BERT-base classifier (paper)~25%
T5 (paper)~30–35%
Best paper-provided baseline~30%
Tanilo /evaluate57.6%

AVeriTeC is multi-evidence fact-checking with a 4-label space. Published academic systems land near 30% in the original paper; Tanilo's own pipeline, run under different conditions and without controlling for retrieval recall or contamination, scores higher on the same dev set. That gap is a reason to treat the comparison cautiously, not as a head-to-head result.

Headline

SplitNOverall accuracy
Full dev set49857.6%
Calibration half25057.6%
Held-out half24857.7%

Reported on the AVeriTeC 2024 dev set, with the verdict mapping selected by inspection on the calibration half. Retrieval recall is not reported and parametric-knowledge contamination is not controlled for. Treat as an internal baseline, not a leaderboard result.

Held-out matches calibration → verdict mapping is not overfit. Selected via inspection on the calibration half; held-out is untouched during selection.

Not re-run since 28 May 2026. The backend that produced this run was replaced in September 2026. This number describes the pipeline as it existed then, not the pipeline live today.

Per-category accuracy (held-out half)

Claim categoryAccuracy
Supported70.6%
Refuted61.6%
Not Enough Evidence27.3%
Conflicting Evidence / Cherrypicking13.6%

Why the lower numbers on Conflicting / NEE are a safety property, not a model failure: when evidence genuinely conflicts, Tanilo leans skeptical — most misclassified Conflicting claims received Refuted verdicts, not falsely-confident Supported ones. That is the right failure mode for regulated content. A verifier that fails toward caution is safer than a verifier that fails toward confident-wrong. We publish the absolute numbers as-is so a buyer can audit the failure shape themselves.

Reproduce

git clone https://github.com/TKCollective/agentoracle-eval-harness
cd agentoracle-eval-harness
curl -sL https://raw.githubusercontent.com/MichSchli/AVeriTeC/main/data/dev.json -o dev.json
python3 scripts/run_dev_eval.py
python3 scripts/score.py results/2026-05-28-dev/results.jsonl

Run completes in ~25 minutes at 3 concurrent workers against the live /evaluate endpoint. Submission registered at TKCollective/agentoracle-benchmark. MIT-licensed. Open submissions — see submission-format.md.

Footnote on inference path

The harness used POST /evaluate, which was free and unmetered at the time of the run. Payment will gate the response once x402 settlement ships at GA — whether the inference path stays identical hasn't been tested.

Planned — deterministic-first grounding. The 57.6% number above measures Tanilo's probabilistic pipeline on AVeriTeC's full claim mix. The design (internal spec, not yet public) routes claims that resolve via structural lookup — field match, range check, comparison, set membership, citation existence — through a deterministic path that doesn't invoke an LLM at all and resolves at near-100%, leaving the LLM tier as the small probabilistic slice. Every receipt will disclose resolution_path: deterministic | probabilistic | hybrid so the buyer can see exactly how each verdict was reached. Not yet implemented — scoped, on the roadmap, no date.
Why we publish this honestly: the value of a benchmark is that anyone can re-run it and check. If we picked numbers that flatter and hid the rest, the benchmark would be marketing. The point is the opposite — falsifiability is the moat. Run it yourself.

Latency — /v1 endpoints Historical

Raw curl wall-clock from a single sandbox client, measured 2026-06-25T22:14:00Z against agentoracle.cotanilo.io did not exist yet at that date, and the site currently hosts static pages with no live API. These are archived historical numbers, not something you can re-run against tanilo.io today.

POST /v1/sign — single Ed25519 signature

Takes one canonical_bytes_b64u, returns one JWS signature entry. The primitive every composed envelope leg uses.

Statisticms
min120.8
p50136.2
p90156.2
p99400.8
max400.8
mean146.1

Withdrawn. /v1/sign is the endpoint later found to sign caller-supplied bytes under the production issuer key with no authentication (the forgery-oracle defect, see the incident record). It now requires an authorization header and returns 503 until its verdict path is completed — same disclosure-asymmetry family as /v1/compose below.

n=50 sequential calls. Host: https://agentoracle.co (Vercel edge), measured 2026-06-25 — before tanilo.io existed. Dominated by network round-trip and TLS, not crypto — the Ed25519 sign itself is sub-millisecond.

# Historical only — endpoint is closed and auth-required today
curl -w "\n%{time_total}s\n" -X POST https://agentoracle.co/v1/sign \
  -H "Content-Type: application/json" \
  -d '{"canonical_bytes_b64u":"eyJ0ZXN0IjoidHJ1ZSJ9"}'

POST /v1/compose — full 2-signer composed envelope

Withdrawn 2026-08-28. These timings measured a path whose Tanilo leg returned a hard-coded verdict without evaluating the claim, so they are not comparable to any figure that includes verification work. The endpoint no longer issues while that path is in wire-up. Republished when the verdict path is connected and re-measured.

Single HTTP call. Orchestrates AT /v1/compose → v_gate_skill, AO computes v_gate, builds canonical bytes once, AT /v1/sign for AT's signature, AO signs locally, assembles JWS general serialization. Returns full 2-signer envelope verifiable against both published JWKS.

Statisticms
min380.2
p50401.8
p90417.6
p99745.0
mean417.3

n=20 sequential calls. Includes one round-trip to AT /v1/compose + one to AT /v1/sign over the public internet from the AO origin region to the AT origin region. Co-location would cut this further; published as-is. Host was agentoracle.co, before tanilo.io existed.

# Historical only — endpoint does not issue today
curl -w "\n%{time_total}s\n" -X POST https://agentoracle.co/v1/compose \
  -H "Content-Type: application/json" \
  -d '{"claim_hash":"sha256-yourclaim","mcp_content":{"tool":"web.search"}}'

POST /v1/sign/batch — N canonical bytes, N signatures

Withdrawn. Like /v1/sign above, this is the forgery-oracle endpoint — closed, now requires an authorization header, and returns 503 until its verdict path is completed.

Bulk signing primitive for high-frequency agent loops. Max 100 items per request. Returns one signature entry per input; all entries share the same kid (issuer is constant). Useful when an agent needs to anchor many envelopes in one network round-trip.

# Historical only — endpoint is closed and auth-required today
curl -X POST https://agentoracle.co/v1/sign/batch \
  -H "Content-Type: application/json" \
  -d '{"canonical_bytes_b64u":["...","...","..."]}'

Latency is dominated by HTTP round-trip, not crypto. Batched cost-per-item drops linearly with N for any N ≥ 2.

What this is and isn't: these are archived wall-clock numbers from a single sandbox client, measured 2026-06-25 against agentoracle.co before the rename. They include network and TLS overhead. They are not the verification accuracy (see AVeriTeC above), they are not isolated crypto benchmarks (Ed25519 sign is <1ms on any modern CPU), and they are not the latency you would see from a co-located client. tanilo.io is a static site today with no live API, so these commands are historical reference only — not something you can re-run right now.

Conformance — composed envelope 11/11 vectors

Parallel Node + Python verifiers, both byte-identical on Phase 1 (4 accept + 3 reject) and Phase 2 (3 accept + 1 reject). Independently verified end-to-end on 2026-06-24 by @giskard09 (IETF action-ref maintainer at argentum-core).

VectorWhat it coversResult
comp-001…0042-signer accept (both-act, AT-halt, AO-halt, trail-resolved)PASS
comp-r01…r032-signer reject (tampered sig, null mycelium_trail_id, AND_PRESENT mismatch)PASS
comp-005…0073-signer accept (with Presidio screen_ref, comp-006 = PII_BLOCKED halts a payment both gates approved)PASS
comp-r-screenscreen_ref recompute mismatchPASS

Full suite + verifiers at TKCollective/agentoracle-receipt-spec. Spec anchor: draft-krausz-verification-state-02 (IETF Internet-Draft).