Add a single line of code. Block sanctioned wallets. Warn on risky trades. Quarantine MEV bots. Sleep.
Check destination risk before routing funds — blocks at ≥ 70.
OFAC-synced every 30 min. Auto-comply with Treasury SDN.
Score 40-69 flags a warning header — you decide the UX.
Honeypot telemetry surfaces patterns before they hit production.
# Before routing a transfer, score the destination:
curl -s https://metercall.ai/v1/sniper/score/0xdestination \
| jq -e '.recommendation == "allow"' \
|| { echo "flagged — refuse"; exit 1; }
// npm-free — uses global fetch (Node 18+)
async function safeRoute(to, amount) {
const r = await fetch(`https://metercall.ai/v1/sniper/score/${to}`);
const { risk_score, recommendation, flags } = await r.json();
if (recommendation === 'block') {
throw new Error(`destination flagged: ${flags.join(',')} (score=${risk_score})`);
}
// your existing routing code
}
import requests
def safe_route(to: str, amount: int):
r = requests.get(f"https://metercall.ai/v1/sniper/score/{to}", timeout=2).json()
if r["recommendation"] == "block":
raise RuntimeError(f"destination flagged: {r['flags']} (score={r['risk_score']})")
# your existing routing code
// On-chain: read directly from SniperAttestor contract
interface ISniperAttestor {
function isBad(address a) external view returns (bool bad, uint8 category);
}
contract MyBridge {
ISniperAttestor public sniper;
constructor(address s) { sniper = ISniperAttestor(s); }
function route(address to, uint256 amount) external {
(bool bad,) = sniper.isBad(to);
require(!bad, "sniper: destination flagged");
// your routing logic
}
}
use reqwest::Client;
pub async fn safe_route(to: &str) -> anyhow::Result<()> {
let url = format!("https://metercall.ai/v1/sniper/score/{to}");
let v: serde_json::Value = Client::new().get(url).send().await?.json().await?;
if v["recommendation"] == "block" {
anyhow::bail!("destination flagged: score={}", v["risk_score"]);
}
Ok(())
}