hook_draft
Build the UNSIGNED deployment for one catalogue hook and its constructor arguments: the ABI-encoded constructor calldata, the hook's audit status, the permission bits the deployed address will carry, and the expected address if a salt has been mined for these exact arguments. **This is calldata, not a deploy.** putty holds no signer and broadcasts nothing — the user signs the deployment, and the fact that a draft exists is not their approval of it. Free, and it reads no chain: a draft is identical on every chain, so the chain-specific guards belong to the path that builds and signs. `expectedAddress` is `null` until a salt has been MINED for these exact constructor arguments — a client must show 'not mined yet' rather than a plausible-looking guess, because a wrong address here is a deployment that lands somewhere nobody looked. Nothing is defaulted: a parameter the hook does not take, a missing required one, a value of the wrong shape, and a zero-address treasury are each refused by name.
Build the UNSIGNED deployment for one catalogue hook and its constructor arguments: the ABI-encoded constructor calldata, the hook's audit status, the permission bits the deployed address will carry, and the expected address if a salt has been mined for these exact arguments. This is calldata, not a deploy. putty holds no signer and broadcasts nothing — the user signs the deployment, and the fact that a draft exists is not their approval of it. Free, and it reads no chain: a draft is identical on every chain, so the chain-specific guards belong to the path that builds and signs. expectedAddress is null until a salt has been MINED for these exact constructor arguments — a client must show 'not mined yet' rather than a plausible-looking guess, because a wrong address here is a deployment that lands somewhere nobody looked. Nothing is defaulted: a parameter the hook does not take, a missing required one, a value of the wrong shape, and a zero-address treasury are each refused by name.
Input
The tool takes a single JSON object. Every field, its type, and an example are on the generated reference at GET /mcp/tools, under this tool's name.
Calling it
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": { "name": "hook_draft", "arguments": {} }
}Put your arguments in place of the empty object. A call that fails comes back as a normal result carrying isError: true and a message naming what went wrong, not as a JSON-RPC protocol error.
Notes
The category is Hooks, subcategory Hooks. The full request and response shape, and a live playground, live on the generated reference at GET /mcp/tools.
hook_list
List the Uniswap v4 hooks a user can deploy: for each one, what it does, the 14 permission bits its address encodes, the capabilities it requires, its audit status, and the file its Solidity lives in. Takes no arguments, is public, and is FREE. Call `hook_list` before `hook_draft` — the permission bits are what a hook's ADDRESS means (a v4 hook's permissions ARE its address), so choosing a hook is choosing what the address can do, and `auditStatus` of `experimental` means putty has NOT externally audited it. `requiredCapabilities` is the list your own integration has to satisfy before the hook is deployable; a hook whose capabilities your deployment lacks is not available to you however it is labelled.
Launch
Start a Putty Launch Kit — the whole idea-to-launched-token path as linked runs on one project.