revettr
Leverages Alchemy's infrastructure to perform on-chain wallet analysis, retrieving transaction counts and unique counterparty data to generate risk scores for Ethereum-compatible addresses.
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 revettrRelated MCP server: agentradar
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.
Input | Signal Group | What It Checks |
| Domain Intelligence | WHOIS age, DNS config (MX, SPF, DMARC), SSL certificate |
| IP Intelligence | Geolocation, VPN/proxy/Tor detection, datacenter vs residential |
| Wallet Analysis | Transaction count, wallet age, counterparty diversity, on-chain behavior |
| Sanctions Screening | OFAC 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": {
"blockchain": {"tx_count": 100, "unique_counterparties": 29},
"onchain": {"nonce": 16, "eth_balance": 0.072}
}
}
},
"metadata": {
"inputs_provided": ["domain", "ip", "wallet_address"],
"latency_ms": 1185,
"version": "0.1.0"
}
}Score Tiers
Score | Tier | Meaning |
80-100 |
| Counterparty appears legitimate |
60-79 |
| Some signals warrant caution |
30-59 |
| Multiple risk indicators present |
0-29 |
| Strong 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. They are grouped by signal category:
Category | Examples | What It Covers |
Domain |
| Domain age, DNS hygiene, SSL validity |
IP |
| Anonymization, geolocation risk |
Wallet |
| On-chain history, activity patterns |
Sanctions |
| OFAC/EU/UN sanctions screening |
The full set of flags and their descriptions are returned in the API response. Flag names are stable and machine-readable.
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...")Security: Never hardcode private keys. Use environment variables or a secrets manager in production.
With Virtuals Protocol (ACP)
Score seller agents before creating jobs on the Agent Commerce Protocol:
from revettr import Revettr
client = Revettr()
result = client.score(wallet_address=seller_wallet)
if result.score >= 60:
# Safe to create ACP job
job_id = chosen_offering.initiate_job(
service_requirement={"task": "Analyze Q1 sales data"},
evaluator_address=evaluator_address,
)See examples/virtuals_acp_safe_buyer.py for the full buyer agent flow.
Safe Agent Payments
Drop-in replacement for x402 payments that automatically checks counterparty risk before sending money. If the counterparty scores below your threshold, the payment is blocked.
from revettr import SafeX402Client, PaymentBlocked
async with SafeX402Client(
wallet_private_key="0x...",
min_score=60, # Block "high" and "critical" risk
on_fail="block", # Raise PaymentBlocked (default)
) as http:
try:
# Automatically scores the counterparty before paying
response = await http.post("https://some-api.com/endpoint", json=data)
except PaymentBlocked as e:
print(f"Blocked: {e.url} scored {e.score}/100")
| Behavior |
| Raise |
| Log warning, proceed with payment |
| Silently log, proceed with payment |
Pricing
Tier | Price | What You Get |
Standard | $0.01 USDC | All 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):
Field | Type | Required | Description |
| string | No | Domain or URL |
| string | No | IPv4 address |
| string | No | EVM address (0x...) |
| string | No | Blockchain network (default: |
| string | No | Name to screen against sanctions |
| string | No | Email (future — not scored yet) |
| float | No | Transaction 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 termsDisclaimer
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
Available Tools
1 toolscore_counterpartyAInspect
Score a counterparty before sending money. Returns risk score 0-100.
Only use data explicitly provided by the user or retrieved from trusted sources. Do not fabricate input values.
Send any combination of inputs — more data means higher confidence. At least one field is required.
Args: domain: Domain or URL of the counterparty (e.g., "uniswap.org") ip: IP address of the counterparty server (e.g., "104.18.28.72") wallet_address: EVM wallet address on Base (e.g., "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045") chain: Blockchain network for wallet analysis (default: "base") company_name: Legal name to screen against OFAC/EU/UN sanctions lists stellar_wallet: Stellar wallet address (e.g., "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN7")
Returns: Risk assessment with score (0-100), tier, confidence, flags, and per-signal breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | ||
| ip | No | ||
| wallet_address | No | ||
| chain | No | base | |
| company_name | No | ||
| stellar_wallet | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the risk assessment nature, mentions sanctions list screening (OFAC/EU/UN), and details the return structure including score range (0-100) and response components. Could clarify if this makes external API calls or has side effects, but adequately covers the core behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, constraints, usage, args, returns). Front-loaded with critical constraints. Slightly verbose due to long wallet address examples, but every section provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters with complex financial domain concepts and existing output schema, the description is nearly complete. It covers input requirements, validation rules, and return value structure. Could elaborate on risk tier meanings or confidence scoring methodology, but sufficient for agent operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates with an 'Args:' section documenting all 6 parameters with semantic meanings (e.g., company_name screens 'against OFAC/EU/UN sanctions lists') and concrete examples for each. This significantly exceeds the baseline requirement given the schema deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with specific verb 'Score' + resource 'counterparty' + context 'before sending money', clearly defining the tool's function. No siblings exist to confuse with, but the description establishes a clear, specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit constraints ('Only use data explicitly provided...', 'Do not fabricate input values'), explains the flexible input pattern ('Send any combination... At least one field is required'), and specifies when to use ('before sending money'). Lacks explicit 'when not to use' or alternatives, but none exist in this server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
With only a single tool available, there is no possibility of overlap or confusion with other tools. The 'score_counterparty' tool has a unique, specific purpose with no alternatives to misselect.
The single tool follows a clear verb_noun pattern ('score_counterparty'). With only one tool in the set, there are no naming convention inconsistencies to evaluate.
A single tool represents a minimal surface that feels thin for a financial risk assessment domain. While it covers the core scoring action, the lack of supporting tools (e.g., retrieving historical scores, listing past screenings) limits workflow flexibility.
The tool covers the primary 'score' operation but lacks complementary lifecycle operations such as retrieving previous scores, listing screening history, or batch processing. Notable gaps exist for audit trails and historical verification workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Reputation oracle for AI agents on Base: SAFE/CAUTION/BLOCK + 0-100 score before you pay. x402+MCP
Credit scores for AI agents. Underwrite an unknown counterparty before extending credit.
Verify x402 payment endpoints before an AI agent pays: scam scan, on-chain checks, trust scores.
On-chain security and market intelligence for trading agents on Base.
Related MCP Servers
- AlicenseAqualityCmaintenanceReputation scoring for AI agent wallets on Base. 9 tools for trust scores, fraud checks, blacklist lookups, leaderboard, badge generation, and agent registration with x402 payment verification.9811MIT
- AlicenseAqualityDmaintenanceTrust scoring, scam detection, and EAS attestations for ERC-8004 + x402 agents on Base.18911MIT
- FlicenseNot gradedqualityDmaintenancePay-per-use AI security and research tools for autonomous agents on Base, enabling honeypot detection, risk assessment, wallet analysis, and yield optimization via the x402 protocol.
- AlicenseNot gradedqualityCmaintenanceEnables agents to assess counterparty risk, token danger, and wallet creditworthiness on Base by analyzing contract powers and controlling wallet reputation.MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AlexanderLawson17/revettr-python'
If you have feedback or need assistance with the MCP directory API, please join our Discord server