Set up a putty pool
Mines a CREATE2 salt so the hook's address carries its permission bits, then builds the three transactions that stand the pool up: deploy the hook, initialise the pool, add liquidity. The server does not sign and does not send. The order matters — the pool records the hook address, and liquidity cannot exist in a pool that does not — so the transactions are returned in sequence and must be signed in order. Every pool putty sets up charges putty's fee on each swap, so this route refuses while `PUTTY_TREASURY_ADDRESS` is the zero address on a non-fork chain. The fee is fixed at construction: there is no function anywhere that can raise it or redirect the treasury, so a pool's terms are settled the moment it exists.
Mines a CREATE2 salt so the hook's address carries its permission bits, then builds the three transactions that stand the pool up: deploy the hook, initialise the pool, add liquidity. The server does not sign and does not send. The order matters — the pool records the hook address, and liquidity cannot exist in a pool that does not — so the transactions are returned in sequence and must be signed in order. Every pool putty sets up charges putty's fee on each swap, so this route refuses while PUTTY_TREASURY_ADDRESS is the zero address on a non-fork chain. The fee is fixed at construction: there is no function anywhere that can raise it or redirect the treasury, so a pool's terms are settled the moment it exists.
Authorization
bearerAuth A bearer token. The Account routes accept a Privy access token; the MCP transport accepts an sk- API key issued by POST /account/api-keys.
In: header
Request Body
application/json
The pool's currencies, price, hook, and initial liquidity.
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/pools/setup" \ -H "Content-Type: application/json" \ -d '{ "chain": "ethereum", "currency0": "string", "currency1": "string", "initialPrice": "string", "fee": 0, "tickSpacing": 0, "hook": { "flags": "string", "initCodeHash": "string", "creationCode": "string" }, "liquidity": { "amount0": "string", "amount1": "string" } }'{ "poolKey": { "currency0": "string", "currency1": "string", "fee": 0, "tickSpacing": 0, "hooks": "string" }, "poolId": "string", "sqrtPriceX96": "string", "salt": "string", "hookAddress": "string", "transactions": [ { "chainId": 0, "to": "string", "data": "string", "value": "string" } ], "fees": [ { "label": "string", "bps": 0 } ], "steps": [ "string" ]}Delete a private catalog item DELETE
Deletes one of the caller's own private items, its versions, and every project's record of installing it. An item owned by another user answers with the same 404 as an item that does not exist, so the route cannot be used to confirm that someone else's item exists.
Quote a swap through a putty pool POST
Computes putty's fee on a swap and the amount the trader actually receives or pays. The fee is `floor(unspecifiedAmount * 30 / 10_000)` in exact integer arithmetic, so the quote agrees with the fork simulation to the wei. `unspecifiedAmount` is the amount on the far side of what the trader fixed: the output for an exact-input swap, the input for an exact-output swap. putty's fee is always reported as its own line, separate from the pool fee and any creator fee.