The scan command walks your TypeScript and JavaScript files looking for wallet calls (.sendTransaction(), .transfer(), writeContract(), and 7 other patterns) that do not have a corresponding Mandate validation in the same file. It requires no authentication and no configuration.
The scanner looks for 10 financial call patterns in .ts, .js, .tsx, and .jsx files:
Pattern
Example
wallet.transfer(
Direct wallet transfer calls
wallet.sendTransaction(
Generic transaction sends
wallet.send(
Shorthand send calls
.sendTransaction(
Any object’s sendTransaction
.sendRawTransaction(
Raw transaction sends
writeContract(
Viem contract writes
walletClient.write
Viem wallet client writes
executeAction(...transfer)
Framework action executions
execute_swap
Swap execution functions
execute_trade
Trade execution functions
A call is marked protected if the file imports from @mandate, references MandateClient, MandateWallet, mandate.validate, or mandate.preflight. The scanner also checks for project-level protection: if @mandate.md/sdk appears in any package.json or a MANDATE.md file exists, all findings are marked protected.