Updated 2026-07-01 · integration

Add Blackwall to your agent

Before your agent signs an x402 payment, ask Blackwall. One POST returns GO / HOLD / STOP — sign on GO, escalate on HOLD, don't sign on STOP. Verdict only, never custody. Free under $10 at risk.

The one rule

Insert one call in the pre-signature window of your x402 flow — after the 402 Payment Required, before you sign the payment:

Agent → GET /resource
Server → 402 { payTo, amount, asset, chain }
              │
              ▼  ask Blackwall  ← insert here
        GO ───┼─── HOLD ─── STOP
        sign  │   human/cap    do not sign

TypeScript / JavaScript

drop-in
// Call before you sign the 402's payment. payTo/amount come from the 402 challenge.
async function blackwall(payTo: string, amount: string) {
  const r = await fetch("https://agent-egress-proxy.onrender.com/v1/forecast-payment", {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify({ counterparty: payTo, amount, asset: "USDC", chain: "base" }),
  });
  const v = await r.json();            // { verdict, reasons, signals, receipt_id }
  if (v.verdict === "STOP") throw new Error("Blackwall STOP: " + v.reasons[0]);
  return v;                            // GO → proceed to sign; HOLD → escalate
}

// ...in your x402 handler, right before signing:
const v = await blackwall(req.payTo, req.amount);
if (v.verdict === "HOLD") await confirmWithHuman(v);   // spending cap / approval
// else GO → sign & pay as normal

Python

drop-in
import urllib.request, json

def blackwall(counterparty, amount, asset="USDC", chain="base"):
    req = urllib.request.Request(
        "https://agent-egress-proxy.onrender.com/v1/forecast-payment",
        data=json.dumps({"counterparty": counterparty, "amount": amount,
                         "asset": asset, "chain": chain}).encode(),
        headers={"content-type": "application/json"})
    v = json.load(urllib.request.urlopen(req))     # {"verdict","reasons","receipt_id"}
    if v["verdict"] == "STOP":
        raise RuntimeError("Blackwall STOP: " + v["reasons"][0])
    return v                                        # GO → sign; HOLD → escalate

Any language — raw HTTP

curl -sS -X POST https://agent-egress-proxy.onrender.com/v1/forecast-payment \
  -H 'content-type: application/json' \
  -d '{"counterparty":"0x…","amount":"5.00","asset":"USDC","chain":"base"}'
# → {"verdict":"STOP","reasons":["quoted amount is 10.0x the counterparty's own median …"], …}

MCP agents (Claude Desktop, Cursor, …)

Blackwall ships an MCP tool forecast_payment (stdio). Point your agent at it and instruct: "Before signing any x402 payment, call forecast_payment and stop if it returns STOP." The model calls it automatically when it's about to pay.

What you get back

Plus reasons[], signals (counterparty reputation, price-anomaly, OFAC), and a signed receipt_id for your audit trail.