KushBitx Preflight
kushbitx_preflightOne check before money moves on Base. Simulates the unsigned transaction, decodes approvals and transfers, screens the token and the recipient or spender, and applies a protected SpendGuard policy when given. Returns ALLOW, REVIEW or BLOCK with sourced findings. Fail-closed: no ALLOW unless every check ran. Does not detect prompt injection; Protected SpendGuard can cap what an agent pays, but does not detect it either. Paid tool: 0.005 USDC per call on Base via x402 (exact scheme). An unpaid call returns the payment requirement and charges nothing. Sign only if verdict is ALLOW, before expiresAt, and the transaction you sign is exactly the one you sent (same transactionDigest, chainId 8453). In code: canSign(report, transaction) from @kushbitx/sdk.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"chainId": "<chainId>",
"to": "<to>"
},
"name": "kushbitx_preflight"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Transaction destination (contract or wallet). | |
| data | No | Unsigned calldata. | |
| from | No | Wallet that will sign. Required in practice: without it the verdict is REVIEW (sender_unknown), because the transaction cannot be simulated from the signing wallet. | |
| value | No | Native ETH value in wei. | |
| amount | No | Amount in token units, for the record. | |
| intent | No | What the agent means to do. | |
| policy | No | Protected SpendGuard policy (send the agent key as Authorization: Bearer). Base USDC transfers only. | |
| chainId | Yes | Base mainnet. | |
| minAmountOut | No | Swap: smallest acceptable output, in token units (for example 25.5). | |
| tokenAddress | No | Token to screen, when it is not the transaction destination (for example the token being bought). | |
| expectedTokenOut | No | Swap: token the swap must deliver; 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for native ETH. For buy_token, tokenAddress is used when this is absent. | |
| expectedRecipient | No | Swap: who must receive the output (default: from). ETH or ERC-20 transfer: who must be paid; a different recipient is BLOCK (EXPECTED_RECIPIENT_MISMATCH). |