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-inimport 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
- GO — reputable counterparty, price within norms → sign.
- HOLD — resolvable risk (thin history, over your cap, price off) → escalate to a spending-cap or a human.
- STOP — sanctioned counterparty, recipient mismatch, or price ≥ 8× the counterparty's own median → do not sign.
Plus reasons[], signals (counterparty reputation, price-anomaly, OFAC), and a signed receipt_id for your audit trail.