score_counterparty
Score a counterparty before sending money. Returns risk score 0-100. Accepts EVM wallets (0x...), Stellar wallets (G...), domains, IPs, and company names.
ipchaindomaincompany_namestellar_walletwallet_address
io.github.AlexanderLawson17由 GitHub 账号 AlexanderLawson17 发布v0.2.3更新于 Oct 24, 2026
Counterparty risk scoring for agentic commerce via x402 micropayments.
Revettr 在代理付款前对交易对手(钱包、域名、IP、公司)进行风险评分,并可导出签名的审计包。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.AlexanderLawson17%2Frevettr-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"revettr": {
"type": "http",
"url": "https://revettr.com/mcp"
}
}
}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.
Send any combination of inputs. More data = higher confidence.
A score of 0 means a hard match (e.g., exact sanctions hit). This overrides all other signals.
Flags tell you exactly what triggered a score reduction. They are grouped by signal category:
The full set of flags and their descriptions are returned in the API response. Flag names are stable and machine-readable.
The client handles x402 payment automatically. You need a funded wallet:
Security: Never hardcode private keys. Use environment variables or a secrets manager in production.
Score seller agents before creating jobs on the Agent Commerce Protocol:
See examples/virtuals_acp_safe_buyer.py for the full buyer agent flow.
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.
Payment is via x402 protocol — USDC on Base network. No API keys, no accounts, no contracts.
POST /v1/scorePayment: x402 — $0.01 USDC on Base per request
Request body (JSON):
At least one of domain, ip, wallet_address, or company_name is required.
GET /healthPayment: None (always free)
Returns API status and signal source availability.
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.
来源:README.md,提交 012ec62
Score a counterparty before sending money. Returns risk score 0-100. Accepts EVM wallets (0x...), Stellar wallets (G...), domains, IPs, and company names.
ipchaindomaincompany_namestellar_walletwallet_addressGet an advisory risk verdict for a validated MCP issuer (iss). Attach this at your MCP `iss` validation step: identity is your job, this adds risk. Returns the same signed RiskCheckResult as POST /v1/iss-verdict. Advisory and non-blocking — you decide based on the tier.
iss必填chainiss_kindwallet_addressExport a JWS-signed audit-trail bundle of scoring decisions for a wallet. MCP equivalent of GET /v1/audit/export. Compliance artifact for EU AI Act Article 12 logging / NYDFS certification / debanking-defense. Because audit data covers arbitrary wallets, this tool is operator-gated: pass the operator's ``admin_token`` (checked against ``REVETTR_ADMIN_TOKEN``). Disabled when that env var is unset. Note: ``admin_token`` travels in the MCP request payload, so operators should treat MCP transcripts/logs as sensitive. Verify the returned ``bundle_jws`` against /.well-known/jwks.json; the schema is in docs/audit-trail-export.md.
endstartadmin_token必填wallet_address必填已满足适用检查项的 100%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
pip install revettrfrom revettr import Revettr
client = Revettr()
# Score a counterparty — send whatever data you havescore = 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"){ "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 = client.score(wallet_address="0xabc...")score = client.score(domain="some-api.xyz", ip="185.220.101.42")score = client.score( domain="merchant.com", ip="104.18.28.72", wallet_address="0xabc...", company_name="Merchant LLC",)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 flowscore = client.score(wallet_address="0xabc...")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, )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")# 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