{
  "$schema": "https://hookforge.pages.dev/schema/registry.json",
  "name": "HookForge",
  "description": "Production Uniswap v4 hooks with on-chain self-description.",
  "homepage": "https://hookforge.pages.dev",
  "generated": "2026-09-07",
  "count": 14,
  "hooks": [
    {
      "slug": "agent-budget",
      "name": "AgentBudget",
      "family": "Agent-native",
      "summary": "A spending limit the venue itself enforces: an autonomous agent may swap on this pool only within a budget its principal signed, and the pool refuses the swap that would exceed it.",
      "tags": [
        "agent",
        "delegation",
        "spending-limit",
        "eip712",
        "no-admin"
      ],
      "docs": "https://hookforge.pages.dev/hooks/agent-budget",
      "manifest": "https://hookforge.pages.dev/schema/hooks/agent-budget.json",
      "deployments": []
    },
    {
      "slug": "anti-snipe-ramp",
      "name": "AntiSnipeRamp",
      "family": "Launch",
      "summary": "Opens a pool at a punitive fee that decays to normal over a fixed window, and pays every cent of the difference to liquidity providers rather than to the deployer.",
      "tags": [
        "launch",
        "anti-snipe",
        "dynamic-fee",
        "no-admin"
      ],
      "docs": "https://hookforge.pages.dev/hooks/anti-snipe-ramp",
      "manifest": "https://hookforge.pages.dev/schema/hooks/anti-snipe-ramp.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0x53D7d95607a608369cEF06018C0D7aE2505Dd080",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0x20A9Ef8C1916c549eBa01Fe4e486be2adc0Bd080",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0x6A35Ea8E3bCbCB45Ca764CD097F9495FB1709080",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0xdD3d11653d22120D31D3d0FbfA7c1A763BA71080",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "arb-tax-decay",
      "name": "ArbTaxDecay",
      "family": "Order flow and MEV",
      "summary": "Prices the staleness of a pool: the longer a pool goes untraded, the more the next swap pays.",
      "tags": [
        "mev",
        "lvr",
        "dynamic-fee",
        "oracle-free"
      ],
      "docs": "https://hookforge.pages.dev/hooks/arb-tax-decay",
      "manifest": "https://hookforge.pages.dev/schema/hooks/arb-tax-decay.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0x7C74267c059d1F073bE0D38ce2593a122e399080",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0x968b61840d695f6232004bdA038f28B9Af34D080",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0x497DF79D84864CF23B9e1fF5966f01dD03dF5080",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0x06135B883a7220f1a4dE96dB557014C7d4009080",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "circuit-breaker",
      "name": "CircuitBreaker",
      "family": "Risk",
      "summary": "Halts swapping for a cooldown after the price moves further than a pool is willing to move in one window, and lets liquidity leave the whole time.",
      "tags": [
        "risk",
        "circuit-breaker",
        "oracle-free",
        "no-admin"
      ],
      "docs": "https://hookforge.pages.dev/hooks/circuit-breaker",
      "manifest": "https://hookforge.pages.dev/schema/hooks/circuit-breaker.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0x0c21ED115396E51B78CD658DA833369AeE3750c0",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0xD80eef4823D8Fa3219604629703f96DaAa4090C0",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0x799a653385E6d50770b1e6E7bc1994674C7e10C0",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0x7b353a0b80170F165dc07C9F9b8903Ce9b92d0C0",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "depeg-shield",
      "name": "DepegShield",
      "family": "Risk",
      "summary": "Makes leaving a peg expensive and returning to it cheap, in proportion to how far the pool has already strayed.",
      "tags": [
        "risk",
        "stablecoin",
        "dynamic-fee",
        "oracle-free"
      ],
      "docs": "https://hookforge.pages.dev/hooks/depeg-shield",
      "manifest": "https://hookforge.pages.dev/schema/hooks/depeg-shield.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0x6536608422113CFF4cbDb9c413E447EEd1fF1080",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0x6D7B49F497e6Dec999147dF461038AE312609080",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0xFe88b1eECB9AeFF393f4E7a7fFBB1f80392D9080",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0xb888b2e1886d4C703c53C2a1650ced1262bCd080",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "drawdown-cap",
      "name": "DrawdownCap",
      "family": "Risk",
      "summary": "A limit down. The pool may not fall more than a fixed distance below where the current epoch opened, and the limit resets on a schedule rather than on anyone's say-so.",
      "tags": [
        "risk",
        "circuit-breaker",
        "oracle-free",
        "no-admin"
      ],
      "docs": "https://hookforge.pages.dev/hooks/drawdown-cap",
      "manifest": "https://hookforge.pages.dev/schema/hooks/drawdown-cap.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0x96DEB6525EACf0847E7a1E0250ABe65a892dd0c0",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0xCDbF94558886fB07615550c21CDbAf3b9b68d0c0",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0xd9bDc663eaDf9f1Cf3dEEa393D45Be6342b510C0",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0xf3dffF3782A5789fC987389a647C8061A76e10c0",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "expiry-settle",
      "name": "ExpirySettle",
      "family": "Time",
      "summary": "Gives a pool a maturity, and makes moving its price monotonically more expensive as that maturity approaches, so the settlement price is dearest to manipulate exactly when manipulating it would pay most.",
      "tags": [
        "expiry",
        "settlement",
        "dynamic-fee",
        "derivatives",
        "oracle-free"
      ],
      "docs": "https://hookforge.pages.dev/hooks/expiry-settle",
      "manifest": "https://hookforge.pages.dev/schema/hooks/expiry-settle.json",
      "deployments": []
    },
    {
      "slug": "flow-classifier",
      "name": "FlowClassifier",
      "family": "Order flow and MEV",
      "summary": "Publishes, on-chain, how much of a pool's order flow arrives first in the block and how far it moves the price when it does. It changes nothing about the pool it measures.",
      "tags": [
        "mev",
        "public-good",
        "analytics",
        "order-flow",
        "oracle-free"
      ],
      "docs": "https://hookforge.pages.dev/hooks/flow-classifier",
      "manifest": "https://hookforge.pages.dev/schema/hooks/flow-classifier.json",
      "deployments": []
    },
    {
      "slug": "liquidity-floor",
      "name": "LiquidityFloor",
      "family": "Liquidity provider economics",
      "summary": "A liquidity commitment enforced per position: a fraction of what you add cannot leave until the pool's unlock date, and every provider is held to that fraction of their own stake rather than to a shared pool total.",
      "tags": [
        "lp-economics",
        "commitment",
        "launch",
        "rug-resistance"
      ],
      "docs": "https://hookforge.pages.dev/hooks/liquidity-floor",
      "manifest": "https://hookforge.pages.dev/schema/hooks/liquidity-floor.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0xFeCAf8bb3DD7fBE0Df1b6eFa0E865ef598535600",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0x3041fD311d0f39428655f45ce4501DEC7BfAD600",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0x375ae2136a29aaA49E5f17c2Fc2A6A4832385600",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0x1b142F790e2FfEb875a36FAED37Bbf8cE1Cf9600",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "markout-fee",
      "name": "MarkoutFee",
      "family": "Order flow and MEV",
      "summary": "A fee that learns. The pool measures whether its own past trades turned out to be informed, and charges the next one accordingly.",
      "tags": [
        "mev",
        "dynamic-fee",
        "markout",
        "adverse-selection",
        "oracle-free"
      ],
      "docs": "https://hookforge.pages.dev/hooks/markout-fee",
      "manifest": "https://hookforge.pages.dev/schema/hooks/markout-fee.json",
      "deployments": []
    },
    {
      "slug": "oracle-band",
      "name": "OracleBand",
      "family": "Risk",
      "summary": "Refuses to let a pool settle at a price the wider market does not recognise.",
      "tags": [
        "risk",
        "oracle",
        "manipulation-resistance",
        "no-admin"
      ],
      "docs": "https://hookforge.pages.dev/hooks/oracle-band",
      "manifest": "https://hookforge.pages.dev/schema/hooks/oracle-band.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0x1EF02aDF27051C3Ce6675D106239471f3D4C50C0",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0x81702603B79E31274F4BA493c8bb06b48c5CD0c0",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0x24A6D3d3822D2aabAa21cCD12E5f35B1dC1F90C0",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0x92724249d217BFC7d14277E83844645C5862d0c0",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "priority-fee-tax",
      "name": "PriorityFeeTax",
      "family": "Order flow and MEV",
      "summary": "Charges a swap in proportion to what it paid the block producer to get where it is in the block.",
      "tags": [
        "mev",
        "dynamic-fee",
        "order-flow",
        "oracle-free"
      ],
      "docs": "https://hookforge.pages.dev/hooks/priority-fee-tax",
      "manifest": "https://hookforge.pages.dev/schema/hooks/priority-fee-tax.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0xE1cbeD2C3A27dE98202ac5EA439fc8Cb06a71080",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0x9ae664D21C02e33658A608AF6A5fE8cC1fDE9080",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0x782f29DCa46C5b5d6D9321A824aAf901e18B5080",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0x8092f20876753cb41A4CCEA20665288C58af1080",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "ratchet-floor",
      "name": "RatchetFloor",
      "family": "Curves",
      "summary": "A price floor that only ever moves up.",
      "tags": [
        "price-floor",
        "launch",
        "no-admin",
        "oracle-free"
      ],
      "docs": "https://hookforge.pages.dev/hooks/ratchet-floor",
      "manifest": "https://hookforge.pages.dev/schema/hooks/ratchet-floor.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0x1EC0A28410eE094Ab636b2cf90174b878A75D040",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0xee7bd53C33B8a3ffd2b2fbcBB9f1f99C0c42d040",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0x0Bc7Fe634b8fe736fcb7c96ee180f7DeB4bED040",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0xD70b7e7F9b45598167EB5199078ED15160345040",
          "status": "deterministic"
        }
      ]
    },
    {
      "slug": "trading-calendar",
      "name": "TradingCalendar",
      "family": "Time",
      "summary": "Gives a pool a trading session, and closes it by raising the price of immediacy rather than by reverting.",
      "tags": [
        "dynamic-fee",
        "schedule",
        "rwa",
        "oracle-free"
      ],
      "docs": "https://hookforge.pages.dev/hooks/trading-calendar",
      "manifest": "https://hookforge.pages.dev/schema/hooks/trading-calendar.json",
      "deployments": [
        {
          "chain": "unichain",
          "chainId": 130,
          "address": "0x55cE2fB1636B6E4E70C51689156d0088D48d5080",
          "status": "deterministic"
        },
        {
          "chain": "robinhood",
          "chainId": 4663,
          "address": "0x66341c30B3b860f0255bF51EEb431C2e92Bdd080",
          "status": "deterministic"
        },
        {
          "chain": "base",
          "chainId": 8453,
          "address": "0x58b9359042e81aA137972AF2Ff082476dDE09080",
          "status": "deterministic"
        },
        {
          "chain": "arbitrum",
          "chainId": 42161,
          "address": "0x0bB9D56c24767E5250C5BacE6100C11cb78FD080",
          "status": "deterministic"
        }
      ]
    }
  ]
}
