Skip to main content

Overview

AgentScore v1 uses a deterministic, weighted factor model. The same inputs always produce the same score. There are no LLMs, no randomness, and no external dependencies in the scoring path. Every score is reproducible given the model version, input data, and computation timestamp.

Factors and weights

The composite score is a weighted sum of five factor scores, each ranging from 0 to 100.
FactorWeightWhat it measures
Volume0.20Total transaction count (log scale)
Diversity0.25Unique counterparties interacted with (log scale)
Consistency0.20Regularity of activity: active months, distinct active days, gap penalty
Recency0.20How recently the wallet was active (exponential decay, 90-day window)
Tenure0.15How long the wallet has been active (log scale, up to 180 days)
Composite score = (Volume x 0.20) + (Diversity x 0.25) + (Consistency x 0.20) + (Recency x 0.20) + (Tenure x 0.15)

Factor details

Volume

Measures total transaction count on a logarithmic scale. A wallet with 1,000 transactions scores 100.
score = min(100, round(log10(transactions + 1) / log10(1001) * 100))
Log scale prevents high-volume wallets from dominating and reduces the incentive for transaction spam.

Diversity

Measures unique counterparties on a logarithmic scale. A wallet interacting with 100 unique counterparties scores 100.
score = min(100, round(log10(counterparties + 1) / log10(101) * 100))
Diversity is the highest-weighted factor because it is the hardest to fake. Self-loop transactions and sybil patterns produce low diversity scores.

Consistency

Combines three sub-signals:
  • Month score (30%): Number of active months (capped at 4 months for max score)
  • Day score (40%): Distinct days with activity (capped at 20 days for max score)
  • Gap penalty (30%): Penalizes long gaps between activity (2 points per day of inactivity)
score = round(monthScore * 0.3 + dayScore * 0.4 + gapPenalty * 0.3)

Recency

Exponential decay based on days since last activity. Score of 100 if active today, dropping to 0 after 90 days.
score = round(100 * exp(-daysSinceLast / 25))

Tenure

Logarithmic scale based on wallet age in days, up to 180 days. A minimum score of 10 is applied to any wallet with a known first transaction.
score = min(100, round(10 + log10(tenureDays + 1) / log10(181) * 90))

Grade scale

Scores map to letter grades:
GradeScore range
A90 — 100
B75 — 89
C50 — 74
D25 — 49
F0 — 24

Anti-gaming considerations

The model is designed to resist common manipulation vectors:
  • Self-loop transactions — Volume increases but Diversity stays low, limiting overall score
  • Sybil clusters — Coordinated wallets tend to show low diversity and unnatural consistency patterns
  • Recency gaming — One transaction resets recency, but Volume, Diversity, and Consistency remain low
  • Fake diversity — Creating many wallets for counterparty inflation is costly and produces thin transaction histories

Reproducibility

Every reputation response includes:
  • model_version — which scoring model was used (currently v1)
  • computed_at — exact timestamp of computation
  • data_through — chain and block number of the latest data included
Given these three values and the raw input data, any score can be independently verified.

Data sources

v1 scoring draws from:
  • x402 payment transactions on Base (primary)
  • ERC-8004 agent registry on Ethereum and Base (identity enrichment)
The indexing pipeline processes on-chain data and computes scores deterministically. See GET /health to check data freshness.