Benchmarks
Every number on this page is dated and marked historical; none is a current accuracy claim for today’s service. 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. The harness and dataset are public, so the method can be re-run.
Accuracy — AVeriTeC 2024 Historical — 28 May 2026
Public academic fact-checking benchmark from AVeriTeC: A Dataset for Real-world Claim Verification with Evidence from the Web — Schlichtkrull, Guo and Vlachos, NeurIPS 2023. 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 historical score on a public benchmark.
| System | Accuracy on dev |
|---|---|
Tanilo /evaluate | 57.6% |
Headline
| Split | N | Overall accuracy |
|---|---|---|
| Full dev set | 498 | 57.6% |
| Calibration half | 250 | 57.6% |
| Held-out half | 248 | 57.7% |
Per-category accuracy (held-out half)
| Claim category | Accuracy |
|---|---|
| Supported | 70.6% |
| Refuted | 61.6% |
| Not Enough Evidence | 27.3% |
| Conflicting Evidence / Cherrypicking | 13.6% |
Run the harness against today’s service
git clone https://github.com/TKCollective/tanilo-eval-harness cd tanilo-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
Footnote on inference path
/evaluate pipeline on AVeriTeC’s full claim mix. Separately, rule-based checks are shipped on POST /v1/verify-facts: the caller chooses that endpoint and a check type explicitly, no model is used, and it never falls back to a model (deterministic mode). What is only proposed is automatic routing: having /evaluate itself send structurally checkable claims down a rule-based path and disclose a resolution_path on each receipt. That routing is not implemented and has no date; no current receipt carries a resolution_path field.
Latency — /v1 endpoints Historical
Raw curl wall-clock from a single sandbox client, measured 2026-06-25T22:14:00Z against agentoracle.co — tanilo.io did not exist yet at that date. tanilo.io itself is a static site; the API answers at api.tanilo.io. 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.
| Statistic | ms |
|---|---|
| min | 120.8 |
| p50 | 136.2 |
| p90 | 156.2 |
| p99 | 400.8 |
| max | 400.8 |
| mean | 146.1 |
POST /v1/compose — full 2-signer composed envelope
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.
| Statistic | ms |
|---|---|
| min | 380.2 |
| p50 | 401.8 |
| p90 | 417.6 |
| p99 | 745.0 |
| mean | 417.3 |
POST /v1/sign/batch — N canonical bytes, N signatures
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). It was offered for anchoring many envelopes in one network round-trip; it no longer signs.
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 itself is a static site; the API answers at api.tanilo.io. These commands are historical reference only — not something you can re-run right now.
Conformance — composed envelope Historical — 24 June 2026 · 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).
| Vector | What it covers | Result |
|---|---|---|
| comp-001…004 | 2-signer accept (both-act, AT-halt, AO-halt, trail-resolved) | PASS |
| comp-r01…r03 | 2-signer reject (tampered sig, null mycelium_trail_id, AND_PRESENT mismatch) | PASS |
| comp-005…007 | 3-signer accept (with Presidio screen_ref, comp-006 = PII_BLOCKED halts a payment both gates approved) | PASS |
| comp-r-screen | screen_ref recompute mismatch | PASS |
Reproducibility is the moat. Numbers without a re-run script are claims, not benchmarks. Methodology and harness MIT-licensed at TKCollective/tanilo-benchmark and TKCollective/tanilo-eval-harness.