Circle Agent Stack
ArbiSim Guard is natively integrated with the Circle Agent Stack. AI agents using Circle Agent Wallets can route every transaction through our pre-flight policy engine before signing, and pay per call with Circle x402 Agent Nanopayments — no API key or signup required.
TL;DR for developers
Send your Circle Agent Wallet transaction or ERC-4337 UserOp to POST /api/v1/circle/policy-check. You get back approved: true/false with a plain-English reason, and a full fork simulation is logged for the audit trail. Pay $0.001 USDC per call via the X-402-Payment header, or use a normal API key.
What the integration gives you
Pre-flight policy hook
Intercept Circle Agent Wallet payloads before they are signed. Instant APPROVED/REJECTED verdict plus a background block-accurate fork simulation.
x402 pay-per-call billing
Agents pay $0.001 USDC per simulation via @circle-fin/x402-batching. No API keys, no credit cards, no signup friction.
USDC protection
USDC transfers, approvals, and swaps are detected automatically and flagged in telemetry (usdcProtectionActive) for extra guardrails.
Circle CLI skill
Install the arbisim-guard skill so agents on Circle CLI, Claude Code, Cursor, or OpenClaw can call the guardrail with one command.
How it fits together
Circle Agent Wallet ArbiSim Guard
| |
| 1. POST /api/v1/circle/policy-check
|---------------------------------->|
| |-- heuristic policy checks (instant)
| |-- ephemeral Anvil fork simulation
| | (queued, logged to audit trail)
| 2. { approved, reason, telemetry }
|<----------------------------------|
| |
| 3. Sign & broadcast ONLY if approved
v
Arbitrum / Arc networkPOST /api/v1/circle/policy-check
Evaluates a transaction or ERC-4337 UserOp for a Circle Agent Wallet and returns a policy verdict. Provide at least one of transaction, userOp, or walletId.
curl -X POST https://api.arbisimguard.com/api/v1/circle/policy-check \
-H "Content-Type: application/json" \
-H "X-402-Payment: x402 0xYourAgentWallet:0.001:0xSignature" \
-d '{
"walletId": "circle_agent_wallet_01",
"network": "arbitrum-one",
"transaction": {
"to": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"data": "0xa9059cbb...",
"value": "0x0"
}
}'Request body
| Field | Type | Required | Description |
|---|---|---|---|
| walletId | string | — | Your Circle Agent Wallet identifier (for logging and telemetry). |
| transaction | object | * | Standard EVM payload: { to, data, value, gasLimit, from }. |
| userOp | object | * | ERC-4337 UserOperation: { sender, callData, ... }. Simulated against EntryPoint rules. |
| network | string | — | Target chain. Default: "arbitrum-one". Also: "arbitrum-sepolia", "arc-testnet". |
| chainId | number | — | Optional numeric chain ID, used alongside network. |
* At least one of transaction or userOp must be present, otherwise the endpoint returns 400 with approved: false.
Response
{
"approved": true,
"policyId": "pol_circle_arbisim_guard_v1",
"sessionId": "8f4a1c2e-...",
"reason": "Pre-flight simulation guardrail passed. Safe to broadcast.",
"telemetry": {
"network": "arbitrum-one",
"x402Verified": true,
"usdcProtectionActive": true,
"timestamp": "2026-07-04T10:15:00.000Z"
}
}| Field | Meaning |
|---|---|
| approved | true = safe to sign and broadcast. false = your agent should abort. |
| reason | Plain-English explanation of the verdict (e.g. gas limit exceeds the safety threshold). |
| sessionId | ID of the full background fork simulation logged for the audit trail. Retrieve it later via the standard simulation API. |
| telemetry.x402Verified | Whether this call was paid via a verified x402 nanopayment. |
| telemetry.usdcProtectionActive | true when the payload touches USDC (transfer/approve/swap) and USDC guardrails were applied. |
Paying with Circle x402 Agent Nanopayments
Both /api/v1/simulate and /api/v1/circle/policy-check accept x402 payments. There are three ways to authenticate a request:
Official Circle SDK (recommended)
Use the @circle-fin/x402-batching client. It handles the 402 challenge, batching, and payment headers automatically.
Manual X-402-Payment header
Attach X-402-Payment: x402 <payerAddress>:<amountUsdc>:<signatureOrTx> to any request. $0.001 USDC per simulation call.
Classic API key
Prefer subscriptions? Create a free key in the dashboard and send it as X-API-Key. Both auth paths coexist — x402 never breaks API-key flows.
If a request arrives with no payment and no API key, the gateway answers with an RFC-compliant HTTP 402 Payment Required that tells the agent exactly how to pay:
{
"error": "Payment Required",
"status": 402,
"x402": {
"pricePerRequestUsdc": "0.001",
"recipient": "0x9eA8B065a624DF44CaB6C8cae74a22e07e29f2f1",
"supportedChains": ["arbitrum-one", "arbitrum-sepolia", "arc-testnet"],
"instructions": "Attach header X-402-Payment: x402 <payerAddress>:<amount>:<signatureOrTx> or use the official @circle-fin/x402-batching client."
}
}TypeScript integration
Wrap your agent's signing step with the CircleAgentWalletGuardrail connector so nothing is ever broadcast without a verdict:
import { CircleAgentWalletGuardrail } from 'arbisim-guard';
const guardrail = new CircleAgentWalletGuardrail({
endpoint: 'https://api.arbisimguard.com/api/v1',
useX402Nanopayments: true, // pay $0.001 USDC per call, no API key
});
const policy = await guardrail.evaluatePolicy({
walletId: 'circle_agent_wallet_01',
network: 'arbitrum-one',
transaction: {
to: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // USDC on Arbitrum
data: '0xa9059cbb...',
},
});
if (!policy.approved) {
throw new Error(`Execution aborted by ArbiSim Guard: ${policy.reason}`);
}
// Safe — let the Circle Agent Wallet sign and broadcast.Circle CLI skill
Agents on Circle CLI, Claude Code, Cursor, or OpenClaw can install the guardrail as a skill:
circle skill install arbisim-guard
Once installed, the agent gains a policy-check capability it invokes automatically before any on-chain action, with x402 payment handled for you.
Supported networks
"arbitrum-one""arbitrum-sepolia""arc-testnet"Reference
OpenAPI spec & interactive docs: https://api.arbisimguard.com/api-docs ↗
Pricing: $0.001 USDC per policy check or simulation via x402.
Audit trail: verdicts are logged on-chain via the SimulationRegistry contract on Arbitrum Sepolia.