preflightLABSCO SUMMARY
Catches the approval hidden three wrappers deep.
The reason this is more than a regex over calldata is the recursion: a drain wrapped in a Safe multiSend inside a router batch is exactly the shape that looks harmless to a model reading hex, and it gets decoded here. The README is unusually honest about where it stops — known patterns, static only, EVM only — which is the right frame: a first-line guard to pair with simulation and a human on anything expensive.
What it is
A safety layer for agents that touch a blockchain. Three guards sit in front of the moment of signing: one decodes an unsigned transaction, one reads an EIP-712 message, one checks an action against your policy. A non-custodial wallet is bundled, but the guards work with whatever wallet you already use.
What you get
preflightdecodes unsigned calldata and flags the classic drain setups — unlimited approval,setApprovalForAll,transferFrom, proxyupgradeTo, on-chain permit- It recurses into wrappers, so approvals hidden inside
multicall, Multicall3aggregate, ERC-4337executeBatch, Gnosis SafemultiSendor a Universal Router command still surface inspect_signaturecatches permit-phishing in a typed-data message, including Permit2 and Seaport orders that route proceeds to a third partycheck_actionenforces allow and forbid lists plus value and recipient limits before the agent actsassert_safeis the hard-stop form — it raises on a HIGH flag, withforce=Trueto override deliberately- Nine tools in total: the three guards plus create_wallet, get_balance, send, call_contract, swap and bridge
- The wallet is non-custodial — the agent holds its own key and signs locally, with no account anywhere
Requirements
pip install chain-signer, then point your client at chain-signer-mcp, which speaks stdio. ETHERSCAN_API_KEY is optional and only needed for live balance reads and broadcasting — the guards themselves run offline with no network, no key and no funds. Bitcoin and Solana support installs as an extra. Read the limits the author states plainly: this is static analysis, not simulation, so a novel or obfuscated drain it cannot decode gets a low-severity unknown flag rather than a block, and transaction analysis is EVM-only.
Setup effort
One command — pip install chain-signer
USE CASES
Stopping an agent before it signs a drain
Run the unsigned transaction through preflight and hard-stop on a high-severity flag.
Checking a signature request that is not a transaction
Inspect the typed-data message for permit-phishing or a Seaport order that gives assets away.
Keeping an autonomous agent inside limits
Define allowed and forbidden actions with value and recipient caps, and check each action against them.
9 tools
Listed in project docs. Your client may show a different list.
inspect_signaturecheck_actioncreate_walletget_balancesendcall_contractswapbridgeBEFORE YOU INSTALL
What to know first
Tools you get
9 tools named in the project's documentation.
Requires
chain-signer-mcp on PATH
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install chain-signerMCP Clients
Claude Desktop, Cursor
{
"mcpServers": {
"chain-signer": {
"command": "chain-signer-mcp",
"env": {
"ETHERSCAN_API_KEY": "<YOUR_ETHERSCAN_API_KEY>"
}
}
}
}