> For the complete documentation index, see [llms.txt](https://docs-v4.venus.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-v4.venus.io/technical-reference/reference-isolated-pools/pool-registry/pool-registry.md).

# PoolRegistry

[`PoolRegistry`](https://github.com/VenusProtocol/isolated-pools/blob/v4.4.0/contracts/Pool/PoolRegistry.sol) is an upgradeable directory and administration entry point. It registers an already deployed Comptroller proxy; it does not expose a `createRegistryPool` function.

See the [engine version map](/technical-reference/reference-isolated-pools.md#mainnet-implementation-map) for current mainnet proxy and implementation addresses.

## Initialization

```solidity
function initialize(address accessControlManager) external;
```

Initialization configures `Ownable2StepUpgradeable` and `AccessControlledV8`. It must be performed through the proxy exactly once.

## Privileged operations

All four operations below call `AccessControlManager`. Authorization is checked against the exact signature shown.

### `addPool`

```solidity
function addPool(
    string name,
    Comptroller comptroller,
    uint256 closeFactor,
    uint256 liquidationIncentive,
    uint256 minLiquidatableCollateral
) external returns (uint256 index);
```

Authorization signature: `addPool(string,address,uint256,uint256,uint256)`.

The Comptroller and its oracle must already exist. The call registers the Comptroller proxy and then configures the pool's close factor, liquidation incentive, and minimum liquidatable collateral. It does not deploy a pool.

### `addMarket`

```solidity
struct AddMarketInput {
    VToken vToken;
    uint256 collateralFactor;
    uint256 liquidationThreshold;
    uint256 initialSupply;
    address vTokenReceiver;
    uint256 supplyCap;
    uint256 borrowCap;
}

function addMarket(AddMarketInput input) external;
```

Authorization signature: `addMarket(AddMarketInput)`.

The VToken must belong to a registered Comptroller. The call lists the market, sets risk factors and caps, records the underlying-to-VToken mapping, transfers `initialSupply` from the caller, and calls `mintBehalf(vTokenReceiver, amountReceived)`. The caller pays the underlying; the receiver gets the vTokens.

### Metadata changes

```solidity
function setPoolName(address comptroller, string name) external;

function updatePoolMetadata(
    address comptroller,
    VenusPoolMetaData metadata
) external;
```

Authorization signatures are `setPoolName(address,string)` and `updatePoolMetadata(address,VenusPoolMetaData)`. Pool names are limited to 100 bytes.

## Read API

```solidity
function getAllPools() external view returns (VenusPool[] memory);
function getPoolByComptroller(address comptroller) external view returns (VenusPool memory);
function getVTokenForAsset(address comptroller, address asset) external view returns (address);
function getPoolsSupportedByAsset(address asset) external view returns (address[] memory);
function getVenusPoolMetadata(address comptroller) external view returns (VenusPoolMetaData memory);
function metadata(address comptroller) external view returns (string, string, string);
```

`getAllPools()` iterates over the complete registry and is intended for offchain calls. `_supportedPools` maps an **asset** to Comptroller proxy addresses—not a pool to its assets.

The implementation also inherits `owner`, `pendingOwner`, `transferOwnership`, `acceptOwnership`, `renounceOwnership`, `accessControlManager`, and owner-only `setAccessControlManager`.

## Lifecycle boundary

PoolRegistry has no removal method or supported-product flag. A returned pool can be active, paused, unlisted in part, or retained for exits. Registry results are therefore discovery data, not an instruction to open a new position.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs-v4.venus.io/technical-reference/reference-isolated-pools/pool-registry/pool-registry.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
