putty
MCPHooks

Hooks

The Uniswap v4 hook catalogue, and the unsigned constructor calldata for a deployment a user would sign.

The Hooks category is two tools: hook_list and hook_draft. The order is the loop — choose a hook, then build the deployment you would sign.

Choosing a hook

A Uniswap v4 hook's permissions are its address: the 14 permission bits are encoded in the low bits of the deployed address, and the pool manager reads them from there. Choosing a hook is therefore choosing what the address can do, which is why hook_list reports each entry's permissions in full rather than as a summary.

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.

auditStatus of experimental means putty has NOT externally audited it.

Drafting a deployment

hook_draft returns 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.

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. The tool reads no chain either — 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. Show "not mined yet" rather than a plausible-looking guess: a wrong address here is a deployment that lands somewhere nobody looked.

Nothing is defaulted

A parameter the hook does not take is refused naming it and listing what it does take. A missing required one is refused naming it. A value of the wrong shape is refused with the shape. A zero-address treasury is refused by name, because a fee that settles nowhere is a transaction that is valid onchain and silently wrong.

Every constructor argument arrives as a string. A uint24 that came in as a number has already lost precision on the wire.

On this page