For protocol engineers

One endpoint.
Every bridge call defended.

Add a single line of code. Block sanctioned wallets. Warn on risky trades. Quarantine MEV bots. Sleep.

Pre-screen transfers

Check destination risk before routing funds — blocks at ≥ 70.

Block sanctioned wallets

OFAC-synced every 30 min. Auto-comply with Treasury SDN.

Warn on risky DEX trades

Score 40-69 flags a warning header — you decide the UX.

Quarantine MEV bots

Honeypot telemetry surfaces patterns before they hit production.

Copy-paste integration

# 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(())
}

Pricing

Read the docs Try it See verified bad actors