One call before you sign.
Wrap your signer with the Python or TypeScript SDK. It sends the check, waits on review when needed, and never signs without an allow.
- ALLOW
- guard() calls your signer
- BLOCK
- raises, nothing is signed
- QUARANTINE
- waits for an operator to approve or deny
- Unreachable
- fails closed by default
Agents without an account can pay per check over x402: $0.001 fast, $0.01 with the full investigation, USDC on Base Sepolia.
$ pip install ./sdk/python
from agentshield import Shield, Blocked, ShieldUnavailable, request_from_tx
shield = Shield("https://agentshield-lyart.vercel.app", mode="agent")
req = request_from_tx(
tx,
intent="Approve the DEX router so I can swap 250 USDC",
sources=[tool_output], # what the agent read
agent_id="desk-rebalancer-02",
)
try:
tx_hash = shield.guard(req, lambda _: w3.eth.send_transaction(tx))
except Blocked as e:
log.warning("not signed: %s", e.verdict.operator_summary)
except ShieldUnavailable:
log.error("shield unreachable, not signed")