MCP Hub
Back to servers

revettr

Counterparty risk scoring for agentic commerce. Scores wallets, domains, IPs, and companies 0-100 before AI agents transact via x402 micropayments on Base

glama
Forks
1
Updated
Mar 25, 2026

Revettr

Counterparty risk scoring for agentic commerce. One API call answers: "Should this agent send money to this counterparty?"

Revettr scores counterparties by analyzing domain intelligence, IP reputation, on-chain wallet history, and sanctions lists. It's designed for AI agents transacting via x402 on Base.

Install

pip install revettr

Quick Start

from revettr import Revettr

client = Revettr()

# Score a counterparty — send whatever data you have
score = client.score(
    domain="uniswap.org",
    ip="104.18.28.72",
    wallet_address="0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
)

print(f"Score: {score.score}/100 ({score.tier})")
print(f"Confidence: {score.confidence}")
print(f"Flags: {score.flags}")

if score.tier == "critical":
    print("DO NOT TRANSACT")

What Gets Scored

Send any combination of inputs. More data = higher confidence.

InputSignal GroupWhat It Checks
domainDomain IntelligenceWHOIS age, DNS config (MX, SPF, DMARC), SSL certificate
ipIP IntelligenceGeolocation, VPN/proxy/Tor detection, datacenter vs residential
wallet_addressWallet AnalysisTransaction count, wallet age, counterparty diversity, on-chain behavior
company_nameSanctions ScreeningOFAC SDN, EU consolidated, UN consolidated sanctions lists

Response

{
  "score": 90,
  "tier": "low",
  "confidence": 0.75,
  "signals_checked": 3,
  "flags": [],
  "signal_scores": {
    "domain": {
      "score": 80,
      "flags": [],
      "available": true,
      "details": {
        "domain_age_days": 2673,
        "dns": {"has_mx": true, "has_spf": true, "has_dmarc": true}
      }
    },
    "ip": {
      "score": 100,
      "flags": [],
      "available": true,
      "details": {
        "country": "US",
        "asn_org": "Cloudflare, Inc.",
        "is_private": false
      }
    },
    "wallet": {
      "score": 100,
      "flags": [],
      "available": true,
      "details": {
        "alchemy": {"tx_count": 100, "unique_counterparties": 29},
        "rpc": {"nonce": 16, "eth_balance": 0.072}
      }
    }
  },
  "metadata": {
    "inputs_provided": ["domain", "ip", "wallet_address"],
    "latency_ms": 1185,
    "version": "0.1.0"
  }
}

Score Tiers

ScoreTierMeaning
80-100lowCounterparty appears legitimate
60-79mediumSome signals warrant caution
30-59highMultiple risk indicators present
0-29criticalStrong risk signals — do not transact

A score of 0 means a hard match (e.g., exact sanctions hit). This overrides all other signals.

Risk Flags

Flags tell you exactly what triggered a score reduction:

FlagSignalMeaning
domain_age_under_7_daysDomainDomain registered less than 7 days ago
domain_age_under_30_daysDomainDomain registered less than 30 days ago
no_mx_recordsDomainDomain has no email server configured
no_spf_recordDomainNo SPF email authentication
ssl_invalid_or_expiredDomainSSL certificate is invalid or expired
ssl_self_signedDomainSelf-signed SSL certificate
tor_exit_nodeIPIP is a known Tor exit node
known_vpnIPIP belongs to a known VPN provider
datacenter_ipIPIP is from a datacenter (not residential)
high_risk_country_XXIPIP geolocates to a sanctioned country
wallet_never_transactedWalletWallet has zero transactions (nonce = 0)
wallet_created_todayWalletWallet's first transaction was today
wallet_age_under_7_daysWalletWallet is less than 7 days old
wallet_few_counterpartiesWalletWallet has interacted with fewer than 3 addresses
wallet_mixer_exposureWalletWallet has interacted with known mixers
wallet_sanctionedWalletWallet appears on a sanctions list
sanctions_exact_matchSanctionsExact name match on OFAC/EU/UN sanctions list
sanctions_high_confidence_matchSanctionsHigh confidence fuzzy match on sanctions list

Usage Examples

Wallet only (minimal)

score = client.score(wallet_address="0xabc...")

Domain + IP (web service check)

score = client.score(domain="some-api.xyz", ip="185.220.101.42")

Full check

score = client.score(
    domain="merchant.com",
    ip="104.18.28.72",
    wallet_address="0xabc...",
    company_name="Merchant LLC",
)

With x402 auto-payment

The client handles x402 payment automatically. You need a funded wallet:

from revettr import Revettr

client = Revettr(
    wallet_private_key="0xYOUR_PRIVATE_KEY",  # Wallet that pays for the API call
)

# Client automatically handles the 402 → payment → retry flow
score = client.score(wallet_address="0xabc...")

Pricing

TierPriceWhat You Get
Standard$0.01 USDCAll available signals based on inputs provided

Payment is via x402 protocol — USDC on Base network. No API keys, no accounts, no contracts.

API Reference

POST /v1/score

Payment: x402 — $0.01 USDC on Base per request

Request body (JSON):

FieldTypeRequiredDescription
domainstringNoDomain or URL
ipstringNoIPv4 address
wallet_addressstringNoEVM address (0x...)
chainstringNoBlockchain network (default: base)
company_namestringNoName to screen against sanctions
emailstringNoEmail (future — not scored yet)
amountfloatNoTransaction amount in USD (context only)

At least one of domain, ip, wallet_address, or company_name is required.

GET /health

Payment: None (always free)

Returns API status and signal source availability.

Direct HTTP (without SDK)

# Without payment (returns 402):
curl -X POST https://revettr.com/v1/score \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com"}'

# Returns HTTP 402 with payment-required header containing x402 payment terms

Disclaimer

Revettr is an informational tool. It aggregates publicly available signals and returns a risk score. It is not a compliance certification, legal advice, or guarantee of counterparty legitimacy. You are responsible for your own transaction decisions.

Built by

L Squared Digital Holdings

Reviews

No reviews yet

Sign in to write a review