Read Before Sign
Provides read-only inspection and plain-English explanations of Ethereum wallet signing requests, including raw calldata, transactions, JSON-RPC signing methods, EIP-712 typed data, ERC-20/ERC-721 approvals, Permit2 permits, and personal_sign. It flags risky permissions such as unlimited allowances, collection-wide NFT operator approvals, and never-expiring Permit2 allowances without reading chain state.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Read Before Sign
Give your AI agent a way to read wallet requests before anyone signs them.

An MCP server and CLI that turns a signing request into a short plain-English briefing: what it asks for, what needs your attention, and what could not be verified. It runs offline. No RPC, no wallet, no API key, no verdict.
$ read-before-sign explain permit2.json
Gives 0x3333…3333 a Permit2 allowance on 1 token(s). Permit2 can then move them for that spender without another signature.
Needs your attention:
• Unlimited Permit2 allowance for token 0x1111111111111111111111111111111111111111.
• Allowance never expires.Part of a small family of inspection tools: Calldata Lens · Typed Intent · Approval Lens · EVM Wallet Lens
Why
Agents are starting to sit between people and their wallets. An agent that can say "this signature gives an unknown address an unlimited, never-expiring Permit2 allowance" before the user clicks is more useful than one that only says "transaction ready". This server gives any MCP client that ability with three read-only tools.
Related MCP server: calldata-guardian
What it reads
Input | Example | What you get |
Raw calldata |
| approve, transfer, transferFrom, setApprovalForAll, safeTransferFrom (strict decoding) |
Transaction object |
| the above plus native value, contract deployment and address checks |
JSON-RPC request |
| routed to the right reader, signer recorded |
EIP-712 typed data | ERC-2612 | domain hash, message hash, digest, permit interpretation |
personal_sign | hex or text | readable text, Sign-In with Ethereum detection, opaque bytes warning |
Flags it raises
Unlimited or extremely large ERC-20 allowances
Collection-wide NFT operator permissions
Unlimited or never-expiring Permit2 allowances
A "Permit2" domain that points at a contract other than the canonical Permit2 address
Typed data with no
chainIdA permit
ownerthat is not the account being asked to signNative value attached to an approval
Opaque
personal_signbytes and anyeth_signrequest
Use it with an MCP client
From a clone (works today):
git clone https://github.com/shelbygrayman/read-before-sign
cd read-before-sign && npm ci
claude mcp add read-before-sign -- node "$PWD/bin/read-before-sign.mjs"Once published to npm, the clone step becomes claude mcp add read-before-sign -- npx -y read-before-sign.
For other clients, point the server command at node /absolute/path/to/bin/read-before-sign.mjs. Ready-made snippets for Claude Desktop, Cursor and Codex are in examples/.
Then ask your agent something like: "Before I sign this, explain it: { paste the request }".
Tools
Tool | Purpose |
| One entry point for any request shape. Returns a briefing with |
| Strict static decoding of six common token calls. |
| EIP-712 validation and digests, with an ERC-2612 interpretation. |
All three are marked read-only and closed-world. Results come back as text and as structuredContent (read-before-sign.briefing.v1).
CLI
node bin/read-before-sign.mjs explain 0x095ea7b3… # calldata
node bin/read-before-sign.mjs explain request.json --json # any JSON request, full output
cat request.json | node bin/read-before-sign.mjs explain - # stdin--standard erc20|erc721 and --decimals <n> change how amounts are described. Use them only when you know the contract.
Validation
npm ci && npm test22 tests: calldata encoded independently with ethers, EIP-712 digests checked against ethers, Permit2 edge cases, malformed and truncated input, a raw stdio session (handshake, notifications, unknown tools and methods, parse errors) and an end-to-end session with the official MCP TypeScript SDK client. CI runs on every push.
Important boundaries
This is static reading, not a simulator, an approval scanner, a contract audit or a safety verdict.
Selector matches are only matches. Selector collisions, proxies and custom implementations exist.
Nothing about the chain is read: not the destination's code, not balances, not existing allowances, not whether execution succeeds.
Typed-data domains are claims made by whoever built the request.
Permit2 recognition is by domain name and message shape. A clean briefing does not mean a request is safe.
Unknown selectors and unknown message types stay unknown on purpose.
The decoders are vendored from Calldata Lens and Typed Intent; see VENDORED.md. Typed-data hashing uses ethers, pinned.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only crypto safety: token honeypot checks, EIP-712 signature decode, approval scans.
Read-only smart-contract security intelligence for autonomous agents.
Read-only watchtower for AI agents on-chain: decoded receipts, plan vs execution, Safe audits.
Check a tx, EIP-712 payload, text or Base token before your agent signs. Paid per call over x402.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceEnables AI agents to resolve smart contract ABIs, read, encode, simulate, and prepare transactions across multiple blockchains via a REST API or MCP server, with no signing required.-
- AlicenseAqualityCmaintenanceDecodes Ethereum calldata and returns a safety verdict with plain-English explanations of what the transaction does, flagging dangerous actions like unlimited approvals or gasless permits.2MIT
- AlicenseAqualityAmaintenanceMCP server that enables AI signing agents to pre-flight transactions by checking ERC-7730 descriptor safety, explaining function semantics, and scanning contracts for danger primitives.24MIT
- AlicenseAqualityDmaintenanceRead-only crypto safety MCP server that helps AI agents and wallets verify token honeypot risks, decode EIP-712 signatures, scan approval risks, and simulate transactions before signing.8MIT