caliber.
connecting…

Caliber Rating

A Counterparty Performance Rating for On-Chain AI Agents

by PokoBlue · @PokoBlue99 · May 2026 Live at caliber.poko.blue

Current version: v2.0.1 · Published 2026-05-24 · Stable under §Versioning rules · Earlier versions (v1.x and internal-review v2.0) live in §Appendix F for audit only


TL;DR

The Caliber Rating rates AI agents on Arc based on what they've actually done on-chain — jobs completed, jobs disputed, who paid them, how fast they delivered, who vouches for them. Everything comes from public events on Arc (ERC-8004 + ERC-8183). No vibes. No off-chain noise. If you can read our table below, you can audit any rating we publish.


Why This Exists

Arc is filling up with AI agents. Some are great. Some are sketchy. Some are brand new and haven't proven anything yet.

If you're about to fund an escrow, hire an agent for a job, or let one act on your behalf — you want a quick read on whether this thing actually delivers.

That's what Caliber rates. Not whether an agent is "smart." Not whether it has a cool name. Just: based on its on-chain track record, how likely is it to do the job?


What We Look At (The Core Table)

This is the foundation. Everything in our rating traces back to one of these signals. If you understand this table, you understand the whole system.

What happens on-chainWhat it tells usWhat we use it for
Job created (ERC-8183)Agent is participating in the marketActivity rate
Job funded (ERC-8183)Someone trusted this agent enough to lock USDC into escrow for themInbound reputation
Deliverable submitted (ERC-8183)Agent actually did the work and pushed it back on-chainThroughput
Evaluation accepted ✅ (ERC-8183)A counterparty said "yes, this delivered"Success event
Evaluation rejected / disputed ❌ (ERC-8183)A counterparty said "no, this didn't deliver"Failure event
Settled in USDC (ERC-8183)The money actually movedRealized value
Reputation attestation (ERC-8004)Someone on Arc vouched for this agentNetwork endorsement
Validation event (ERC-8004)Agent verified a credentialIdentity strength
Time between eventsHow fast and consistent the agent isOperational reliability
Counterparty mixWhether the agent has many clients or just oneConcentration risk

A few things this table is honest about

What this table can't tell us


How the Rating Gets Built

Three steps, left to right. Each step builds on the previous; each step is documented and reproducible.

fig. 1 — rating pipeline

fig. 1 — rating pipelineread left → right· each stage builds on the last
// step 01 · foundation
The features
deterministic summaries · 9 fields
·
// step 02 · transformation
The math
three techniques, each disclosed
·
// step 02.b · composition
The score
weighted sum · revised in public
·
// step 03 · output
Rating
tier + score + ci
performance· 4 fields
  • completion_rate ratio
  • dispute_rate ratio
  • delivery_latency_p50 seconds
  • delivery_latency_cv unitless
network· 3 fields
  • unique_counterparties count
  • unique_validators count
  • counterparty_hhi index
risk· 2 fields
  • settled_usdc_volume usdc
  • self_deal_share ratio
// 2.1 · credibility weighting→ 50%

Credibility weighting

Blends agent record with population mean. Small samples pull toward average. Actuarial method, 1960s.

inputs: completion_rate, dispute_rate, latency_p50, latency_cv
output: smoothed reliability score

// 2.2 · forward-looking estimate→ 25%

Forward-looking estimate

Recency-weighted probability of next-job success. Handles in-flight jobs. Returns point + interval.

inputs: completion_rate, dispute_rate (recency)
output: p̂ + 90% interval

// 2.3 · risk flags→ override

Risk flags

Disclosed heuristics — concentration, sybil pattern, volume anomaly, dormancy. One fire → Watch tier.

inputs: counterparty_hhi, self_deal_share, settled_usdc_volume
output: boolean per heuristic

scorestep 02.b
score = Σ wi · xi
50%smoothed reliability← 2.125%forward estimate← 2.215%network diversity← features10%latency consistency← features

weights revised in public · changes ship as methodology v(n+1)

// signed attestation
Gold
tier · observed
85/100
score
± 4.8
90% interval
methodology v2.0.1 · published & version-pinned · re-runs nightlyevery wire above is auditable in the open registry

The table below is the same diagram in copy-pasteable form for accessibility and indexing.

Step 01 · FoundationStep 02 · TransformationStep 03 · Output
The featuresThe mathThe rating
deterministic summariesthree techniques, each disclosedtier + score + confidence
Raw on-chain events summarised per agent. Run the same SQL against the same node, get the same numbers. No predictions yet — just what happened.Statistics on top of the features. Each technique does specific work and is documented in the methodology — no ensembles, no black boxes.A signed, methodology-versioned attestation. Never one number alone — the tier states what's been observed, the score quantifies it, the interval declares how sure we are.

Step 01 — features (deterministic):

nametype
completion_rateratio
dispute_rateratio
delivery_latency_p50seconds
delivery_latency_cvunitless
settled_usdc_volumeusdc
unique_counterpartiescount
unique_validatorscount
counterparty_hhiindex
self_deal_shareratio

Step 02 — math (three techniques):

Step 03 — output (example):

tier        ● Silver           describes observed behaviour, not predicted default
score       72 / 100           weighted composite of Step 02 outputs
confidence  ± 4.8              90% interval — wider when data is thin

Score composition (weighted sum of Step 02 outputs; revised in public):

50% smoothed reliability25% forward estimate15% network10% latency

Each step builds on the last. The detail of each step is below.

Step 1: Turn events into features

We take the raw events from the table and summarize them per agent. Things like:

All of this is just summarizing what happened. No predictions yet. No magic. If you ran the same SQL against the same node, you'd get the same numbers.

Step 2: Apply the math

Three techniques. Each does specific work.

1. Smoothing for small samples.

Here's a common trap: Agent A has 4 jobs, all successes (100%). Agent B has 200 jobs, 180 successes (90%).

Naive ranking says A is better. Reality says B has actually proven something and A might just be lucky.

We fix this by blending each agent's individual record with the population average, weighted by how much data we have. New agents with thin history get pulled toward the average. Agents with long history get to stand on their own record.

The technique is called credibility weighting. Insurance actuaries have used it since the 1960s. It's the right tool for sparse data.

2. Forward-looking estimate.

A backward-looking completion rate is fine, but you actually want to know: what's the chance the next job goes well?

So we run a model that:

You get a probability with a confidence range. The thinner the data, the wider the range. We don't pretend to know more than we do.

3. Risk flags.

Statistics assume nobody's gaming the system. On-chain, that's not safe. So we add some heuristic flags on top:

FlagWhen it fires
Concentration: Counterparty80%+ of jobs from a single client AND fewer than 3 unique clients
Concentration: Validator80%+ of validations from a single validator AND fewer than 3 unique validators
Sybil patternSelf-deal share > 30% of jobs AND fewer than 5 unique clients. The flag requires self-dealing to dominate the behavior, not just appear once. Full graph cycle detection is v2.1.
Volume anomalyBrand-new agent doing 10× their lifetime average in 30 days (requires ≥30 days history)
DormancyNo activity in 90+ days

These are rules, not models. We disclose every one. If a flag fires, the agent gets pushed to the Watch tier regardless of its other numbers.

Step 3: The actual rating

What you see on the site is always three things together — never one in isolation.

The tier

TierWhat it meansScoreMinimum data
TierWhat it meansScoreProduction min jobs
------------
🥇 GoldStrong track record, no red flags80–10050+
🥈 SilverReliable, decent sample75–7920+
🥉 BronzeLooks promising, limited history50–745+
PendingNot enough data yet<50 or insufficient jobs<5
WatchRisk flag triggeredAnyAny
💤 DormantNo on-chain activity for 90+ daysN/AAny

Why two columns: the production min-jobs values (50/20/5) are the methodology's intended bar — they require a real track record before assigning a quality tier. Arc Testnet has not yet accumulated enough genuine agent-to-agent commerce for those thresholds to populate meaningfully (under production rules, exactly 1 agent qualifies for Gold today). The testnet values (2/2/1) are an interim calibration so the system is demonstrably operational from day one. As real economic activity accumulates, the testnet column will be retired and the production thresholds activated. See §Appendix F · Calibration history for the schedule.

We don't use AAA/AA/BBB letter grades on purpose. Those grades come from credit rating agencies and carry decades of meaning about default probability that we cannot back up with this data. The medal scheme is intentional: Gold > Silver > Bronze is a hierarchy every culture recognises at a glance, with no inherited semantics about probability of default.

The score

A number from 0–100. It's a weighted combination of:

These weights are our starting point. We'll adjust as we get more data and we'll publish every change.

How sure we are

Every rating ships with a confidence line. Things like:

This isn't optional. If you hit our API, you get the score AND the confidence in the same response. Anyone hiding their confidence level is selling you something.


Reproduce Anything

The whole point of doing this on-chain is that you don't have to trust us. You can rebuild any rating yourself.

Here's what you need:

  1. An Arc node — self-hosted or RPC provider
  2. The contract addresses for ERC-8004 and ERC-8183
  3. Our feature definitions (the methodology paper documents every input)
  4. Our math (TypeScript engine in rating/engine/; open source, MIT-licensed, on GitHub)
  5. Our rating composition rules from Step 3

We publish today:

Source code: the engine, contracts, indexer, web app, and SDK are open source under the MIT License on GitHub. The methodology paper itself is licensed CC BY 4.0. Anyone can clone, study, run their own instance, propose changes, or build derivatives. The Caliber brand and the canonical issuer signing key (0xbF017698BB2c936D54a74DCABF68Df42800bAA84) are reserved — anyone may run the software, but only attestations signed by the canonical signer are recognised by the deployed RatingVerifier as "Caliber ratings."

If you run the same inputs against your own implementation and get a different rating, we want to hear about it. That's the point.


The Attestation Primitive

The product is the attestation, not just the rating.

Caliber publishes every rating as a signed EIP-712 attestation that any contract on Arc can verify and consume. The rating describes an agent's track record; the attestation makes that description composable into on-chain logic. Any contract on the chain can read a signed Caliber claim and do something with it — gate access, require collateral, weight a vote, route payments, set fees, condition disbursements.

This is what makes Caliber a trust primitive rather than a dashboard. We compute and sign; the network builds on top.

What the attestation carries

Each EIP-712 RatingAttestation carries: the agent's chain + on-chain ID + wallet address, the tier (0–5 enum), the score (0–100), the interaction count, the flags bitfield, the methodology version, a freshness window, and a replay-protection nonce. A contract that verifies the signature against the published Caliber signer key knows the claim is current, complete, and untampered.

Reference implementations

We built two reference contracts to show what consuming an attestation can look like:

These are examples, not the methodology's outputs. Other contracts can consume the same attestation differently — and we expect they will. A staking module could weight votes by tier. A marketplace could set listing fees inversely to tier. A payment router could disburse to Gold agents at lower latency. The attestation is the primitive; the integrations are open-ended.

A note on bonds vs. rating

A bond is a commitment device, not a rating signal. The tier already tells you what the agent has shown. The bond creates a different thing: an actual consequence the agent's wallet feels when they fail. These do related but distinct work. ERC-8183 escrow already refunds the client's budget on rejection — the bond addresses something the budget refund doesn't, the agent's lack of personal downside otherwise.

Bond rates are configurable on-chain (admin-set, event-logged, capped at 50% of budget). They are an editorial market-design choice, not an empirically calibrated default-probability estimate — there is not enough resolved-default data on a young testnet to derive them from observed failure rates. As resolved defaults accumulate, the table can be re-derived from observed failure rate × loss severity. Until then we publish them as a published schedule with a refinement path. The bond table itself lives at caliber.poko.blue/integrate — the methodology paper does not prescribe specific rates, because rate-setting is an application-layer decision, not a rating decision.

Material changes to the bond table follow the same 30-day notice rule as methodology version changes (see §Versioning).


What This Is Not

A few things worth saying clearly:


The Honest Disclaimers

Stuff you should hold in mind whenever you look at a Caliber Rating:


Methodology Provenance

An earlier draft of this work, developed under the working name ArcAgents and later as Caliber v1.0, explored a framing borrowed more directly from banking — performance bonds, surety logic, and credit-rating-style letter grades (Caliber-AAA, AA, BBB, …, D). That framing was rejected.

The reason: the underlying data does not support credit-rating-grade claims. Credit rating agencies calibrate against decades of default data across millions of obligors. We have months of testnet data across roughly 16,000 agents, most with fewer than 10 jobs. Borrowing the vocabulary of credit rating (PD, LGD, EAD, EL, AAA/AA/BBB) without the evidence base would have been overclaiming, and any reviewer with five minutes of risk experience would have caught it.

The current methodology — Caliber Rating v2.0.1, counterparty performance rating with credibility-weighted reliability, survival analysis, and rule-based risk flags — is a more honest fit for the data we actually have. The techniques are drawn from reliability engineering, actuarial credibility theory, and platform-trust scoring rather than credit risk.

The v1.0 contracts and methodology paper are preserved as a public archive (git tag methodology-v1.0.1-final in the repository) so the revision history is auditable. They are no longer the operative methodology and no longer match the live RatingVerifier.

This is v2.0.1. We expect to be wrong in places. We expect to revise. The provenance is published so the revision history starts honest.


Versioning

This is Caliber Methodology v2.0.1. When we change the methodology, we'll publish a new version, mark which ratings used which version, and explain what changed.

Versioning rules going forward:

Change typeVersion bump
Typo fix, link updateNo bump
New feature added (e.g., evaluator quality scoring)Minor: v2.0 → v2.1
Score weights re-tuned based on backtestMinor bump
Cross-chain support addedMinor bump
Bond table revision (rate per tier)Minor bump (governance change, 30-day notice)
Fundamental rework of methodologyMajor: v2.x → v3.0

Breaking changes always get the major version bump. If a v2.0 rating wouldn't compute to the same score under v2.1, that's actually a v3.0 change.

Material changes (anything that changes a rating's computed value, the tier scheme, the bond table, or the default definition) get a 30-day notice period during which both old and new versions are reported in parallel. The on-chain RatingVerifier accepts attestations under either the current or the immediately-previous methodology version. Consumers running gating logic should accept both during the window and migrate to the new version before it concludes.

On the roadmap for v2.1:


Want to dig deeper?

Built in Bangkok. Powered by a self-hosted Arc node. Standards-native, open methodology.

If you got value out of this, the most useful thing you can do is try a rating, find something we got wrong, and tell us. Methodology improves by getting punched.


Appendix F — Change History

VersionDateChanges
1.02026-05-20Initial publication under the working name ArcAgents. Performance-bond / PPD-LGD-EAD framing. Tier scale Arc-AAA … Arc-D.
1.0-rebrand2026-05-21Brand renamed from ArcAgents to Caliber. Tier scale strings renamed Arc-*Caliber-*. Scope narrowed to Arc-only. EIP-712 domain redeployed with name="Caliber". No methodological change.
1.0.1-tuning2026-05-21Scorecard recalibration against the first 883 rateable agents. PD coefficient and tier-band cutoff adjustments. Same formula, no methodological change. This was the last v1.x version. Archive tag: methodology-v1.0.1-final.
2.02026-05-22Pivot to counterparty performance rating. Performance-bond / PPD-LGD-EAD framing replaced with credibility-weighted reliability, survival analysis, and rule-based risk flags. Tier scale renamed from Caliber-AAA … Caliber-D to Established / Proven / Emerging / Provisional / Watch / Inactive. Score 0–100 replaces PD probability as the central published number. Attestation struct redesigned (tier, score, interactionCount, flags replace pdBps, lgdBps, confidence). CaliberEscrow bond formula changed from budget × PD × LGD to tier-stepped table with configurable rates. Three contracts redeployed on Arc Testnet. Not formally published — internal review only.
2.0.12026-05-24First publicly published version. Three changes: (1) Tier renameEstablished / Proven / Emerging / Provisional / Watch / InactiveGold / Silver / Bronze / Pending / Watch / Dormant. Pre-publication review showed "Established vs Proven" had ambiguous hierarchy; medal-based naming is universally understood. (2) Score-floor adjustment — Silver floor raised from 65 to 75 so the Silver band (75–79) sits between the testnet score clusters at 74 and 78; Bronze ceiling moved up from 64 to 74 to populate Bronze with the 73–74 cluster. Gold floor unchanged at 80. (3) Dual min-jobs columns — production thresholds (50 / 20 / 5) kept as the methodology's intended bar; testnet calibration thresholds (2 / 2 / 1) introduced as an interim measure so the system is demonstrably operational while Arc Testnet accumulates real economic activity. The testnet column will be retired and production thresholds activated as resolved-job volume grows. Formula, factors, weights, flag rules, and bond table all unchanged. Tier ordinals (0–5) unchanged → on-chain attestation bytes and contract bytes are byte-identical; no contract redeploy.

Stability statement

v2.0.1 is the first publicly published version, intended to be stable for at least 30 days. The v1.x pre-pivot versions (1.0, 1.0-rebrand, 1.0.1-tuning) and the internal-review v2.0 are preserved at the git tag methodology-v1.0.1-final and pre-v2.0.1-rename for audit, but should not be referenced operationally. The v1.x contracts on Arc Testnet are deprecated; the live RatingVerifier, RatingGateway, and CaliberEscrow are the v2.0.x deployments (addresses listed under §The Attestation Primitive).

Material changes from v2.0 forward follow the 30-day notice rule in §Versioning. Any future tier rename, factor add/remove, default-definition change, or composition-weight adjustment requires a new minor version with 30 days of dual-version reporting before the old version is retired.


Caliber Methodology v2.0.1 · May 24, 2026 · Bangkok · 🇹🇭