Skip to content

On-chain reputation scoring API for AI agent wallets on Base, monetized via x402 micropayments. Scores wallets 0-100 across reliability, viability, identity, behavior, and capability dimensions.

License

Notifications You must be signed in to change notification settings

jacobsd32-cpu/djdagentscore

Repository files navigation

DJD Agent Score

Trust scores for AI agent wallets. One API call, no signup.

On-chain reputation scoring for autonomous AI agents on Base, monetized via x402 micropayments.

Listed in the Coinbase x402 Ecosystem npm: djd-agent-score npm: djd-agent-score-mcp PyPI: agentscore

Live API · API Docs · OpenAPI Spec · Leaderboard


Try it now

Score any wallet. No API key, no signup, no payment. 10 free calls per day.

curl "https://djd-agent-score.fly.dev/v1/score/basic?wallet=0x3E4Ef1f774857C69E33ddDC471e110C7Ac7bB528"

Returns:

{
  "wallet": "0x3E4Ef1f774857C69E33ddDC471e110C7Ac7bB528",
  "score": 39,
  "tier": "Emerging",
  "confidence": 0.16,
  "recommendation": "insufficient_history",
  "modelVersion": "2.5.0",
  "lastUpdated": "2026-02-25T04:12:50.000Z",
  "computedAt": "2026-02-25T04:12:50.000Z",
  "dataSource": "cached",
  "scoreFreshness": 0.85,
  "freeTier": true,
  "freeQueriesRemainingToday": 9
}

score is 0–100. confidence reflects how much on-chain data backs the score. dataSource is live, cached, or unavailable — indicating whether the score was freshly computed, served from cache, or if on-chain data couldn't be fetched. Wallets with more USDC transaction history and verified identity score higher.

Embed a live score badge in your own README:

![Agent Score](https://djd-agent-score.fly.dev/v1/badge/0x3E4Ef1f774857C69E33ddDC471e110C7Ac7bB528.svg)

View any wallet's profile page: djd-agent-score.fly.dev/agent/{wallet}


The problem

Your agent is about to send $500 USDC to a wallet it's never seen before. Should it?

That wallet might belong to a legit service provider with 6 months of clean transaction history. Or it might be a fresh sybil wallet that was created 3 hours ago to drain your agent's funds.

DJD Agent Score answers this in one API call — no signup, no API key, no payment for the free tier. Score any wallet on Base in under 200ms. The scoring engine analyzes real on-chain USDC transaction history, partner diversity, account age, and runs sybil/gaming detection across 12 behavioral checks.

Built for

AI agent developers — Check a wallet's reputation before your agent sends payment, accepts a request, or enters a contract. Works with AgentKit, Eliza, Automaton, or any framework that transacts on Base.

x402 service providers — Gate access to your paid API by agent reputation. Low-trust wallets pay more or get blocked. High-trust wallets get priority. One middleware call.

DeFi protocols — Set risk parameters based on agent scores. Before allowing an agent to interact with your lending pool, DEX, or yield vault, check if it's a real operator or a bot farm.


Integrate in 3 lines

JavaScript

// Free tier: 10 calls/day, no payment needed
const response = await fetch(
  "https://djd-agent-score.fly.dev/v1/score/basic?wallet=" + agentWallet
);
const { score, tier, confidence } = await response.json();

// Gate interactions based on trust
if (score < 50 || confidence < 0.3) {
  console.log("Wallet has insufficient reputation. Declining interaction.");
  return;
}

// Proceed with transaction

Python

import requests

resp = requests.get(
    "https://djd-agent-score.fly.dev/v1/score/basic",
    params={"wallet": agent_wallet}
)
data = resp.json()

if data["score"] >= 75 and data["confidence"] >= 0.5:
    # Trusted wallet, proceed
    execute_transaction(agent_wallet)
else:
    # Require additional verification
    flag_for_review(agent_wallet)

curl (paid endpoint with x402)

# Full score breakdown — $0.10 USDC via x402
# x402-compatible clients handle the payment header automatically
curl "https://djd-agent-score.fly.dev/v1/score/full?wallet=0x…" \
  -H "X-PAYMENT: <payment_proof>"

How scoring works

Model v2.5.0 — Intelligent Scoring Flywheel. Adaptive dimension breakpoints from population statistics. Outcome-learned dimension weights. Score trajectory analysis (velocity, momentum, direction). Confidence-weighted dampening for score stability. Percentile ranking.

Every wallet is evaluated across five weighted dimensions based on its USDC transaction history on Base:

Dimension Base Weight What it measures
Payment Reliability 30% Transaction history and consistency on Base
Economic Viability 25% Financial health signals from USDC activity
Identity 20% Verifiable identity markers (Basename, GitHub, registration, Insumer token-gating)
Behavior 15% Transaction timing patterns and anomaly detection
Capability 10% Demonstrated service delivery and ecosystem participation

Dimension weights adapt over time based on outcome correlation data — dimensions that better predict real-world wallet behavior receive higher effective weights.

Score tiers: Elite (90+) · Trusted (75–89) · Established (50–74) · Emerging (25–49) · Unverified (0–24). Tier thresholds auto-adjust based on outcome calibration data.

The scoring engine indexes x402 settlements on-chain using the EIP-3009 AuthorizationUsed event. Agents that use x402 to pay for services accumulate verifiable payment history that feeds directly into their score. The more an agent transacts through x402, the more meaningful its reputation becomes.

Adaptive scoring: The v2.5 flywheel makes scores smarter over time. Population-derived breakpoints ensure dimension scores reflect where a wallet stands relative to the ecosystem. Score trajectory analysis applies a ±5 point modifier based on whether a wallet's reputation is improving or declining. Confidence-weighted dampening prevents established scores from swinging on limited new data.

Integrity layers: Sybil detection, gaming detection, and fraud report penalties are applied multiplicatively. Scores are cached for 1 hour with background refresh for active wallets.


API reference

Free endpoints

Endpoint Method Description
/v1/score/basic?wallet=0x… GET Score, tier, confidence. 10 free calls/day.
/v1/agent/register POST Register your wallet. +10 identity bonus.
/v1/score/compute POST Queue background score computation. Returns jobId immediately.
/v1/score/job/:jobId GET Poll async job status (pending → complete).
/v1/leaderboard GET Top-ranked wallets by score.
/v1/certification/:wallet GET Check certification status.
/agent/{wallet} GET Profile page (HTML).
/v1/badge/{wallet}.svg GET Embeddable SVG score badge.
/health GET Service health and indexer status.

Paid endpoints (x402 USDC on Base)

Endpoint Method Price Description
/v1/score/full?wallet=0x… GET $0.10 Per-dimension scores, raw data, history, fraud flags
/v1/score/refresh?wallet=0x… GET $0.25 Force live recalculation (bypasses 1hr cache)
/v1/score/history?wallet=0x… GET $0.15 Historical score data with trend analysis
/v1/report POST $0.02 Submit fraud/misconduct report against a wallet
/v1/data/fraud/blacklist?wallet=0x… GET $0.05 Check if a wallet is on the fraud blacklist
/v1/certification/apply POST $99.00 Apply for Certified Agent Badge (annual)

API key access

For high-volume usage without per-request x402 payments, API keys are available. Authenticate with Authorization: Bearer djd_live_… — requests are counted against a monthly quota instead of requiring individual payments.

Paid endpoints return 402 Payment Required without a valid payment proof or API key. Include the proof in the X-PAYMENT header, or use an API key. Any x402-compatible client handles payment automatically. How x402 payments work →


Register your agent

Registered wallets get a +10 point identity bonus. Free, one call.

curl -X POST https://djd-agent-score.fly.dev/v1/agent/register \
  -H 'Content-Type: application/json' \
  -d '{
    "wallet": "0xYourAgentWallet",
    "name": "My Agent",
    "description": "What your agent does",
    "github_url": "https://github.com/you/your-agent",
    "website_url": "https://your-agent.com"
  }'

Only wallet is required. Returns 201 on first registration, 200 on update. Re-posting updates metadata (upsert, omitted fields preserved). Linking a valid GitHub repo enables verification for additional identity scoring.


Report fraud

Submit reports against wallets engaged in misconduct. $0.02 per report to prevent spam. Verified reports apply a score penalty.

curl -X POST https://djd-agent-score.fly.dev/v1/report \
  -H 'Content-Type: application/json' \
  -H 'X-PAYMENT: <payment_proof>' \
  -d '{
    "target": "0xSuspiciousWallet",
    "reporter": "0xYourWallet",
    "reason": "payment_fraud",
    "details": "Agent accepted payment but never delivered the service."
  }'

Reasons: failed_delivery · payment_fraud · impersonation · malicious_behavior · other


Local development

git clone https://github.com/jacobsd32-cpu/djdagentscore
cd djdagentscore
npm install
npm run dev

Requires Node.js v22. Starts on http://localhost:3000.

Environment variables

Variable Default Description
PORT 3000 HTTP port
PAY_TO 0x3E4Ef1f774857C69E33ddDC471e110C7Ac7bB528 USDC recipient for x402 payments
FACILITATOR_URL https://x402.org/facilitator x402 facilitator endpoint
BASE_RPC_URL https://base-mainnet.public.blastapi.io Base RPC (BlastAPI recommended)

Technical notes

Stack: Hono + SQLite + viem, deployed on Fly.io. Full architecture docs at docs/architecture.md.

Blockchain indexer: Polls Base USDC every 12 seconds for AuthorizationUsed and Transfer events. Two-layer filter (EIP-3009 event + $1 USDC amount cap) isolates x402 settlements from regular DeFi activity. Adaptive chunk sizing handles BlastAPI's 20k result cap.

Database: SQLite with DELETE journal mode (chosen over WAL for Fly.io network-attached volume compatibility). 31 tables covering scores, history, fraud reports, registrations, query logs, indexer state, API keys, webhooks, certifications, job stats, outcome calibration, and anomaly detection.

RPC provider: Default is BlastAPI public Base endpoint. For heavy indexing, use a dedicated provider via BASE_RPC_URL. Avoid publicnode.com (rejects 10k-block eth_getLogs ranges).

ERC-8004: ERC-8004 (AI Agent Registry) check is disabled until a registry contract deploys on Base.

Score caching: 1 hour cache. Background refresh for up to 50 expired scores per batch. Force recalculation with /v1/score/refresh ($0.25). Admin flush endpoint expires all cached scores to trigger ecosystem-wide re-scoring after model updates.

Auto-recalibration: The system continuously adjusts scoring thresholds based on real-world outcome data, closing the feedback loop between predicted trust and actual wallet behavior.

Agent auto-discovery

x402-compatible agents can discover all DJD endpoints automatically:

curl https://djd-agent-score.fly.dev/.well-known/x402

Returns a machine-readable manifest of every endpoint, its price, input schema, and integration options.

How x402 payments work

x402 is an open payment protocol built on HTTP 402. When you hit a paid endpoint without payment, you get back a 402 response with payment instructions (amount, recipient, network). Your x402 client signs a USDC payment on Base, attaches the proof to X-PAYMENT, and resends the request. One additional round-trip, handled automatically by client libraries.

No API keys. No subscriptions. No accounts. Micropayments per request.


License

MIT


Built by DJD · Powered by x402 · Running on Base

About

On-chain reputation scoring API for AI agent wallets on Base, monetized via x402 micropayments. Scores wallets 0-100 across reliability, viability, identity, behavior, and capability dimensions.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages