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