putty
MCPHooks

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.

On this page