# Collateral Filters

Pools exist in a variety of configurations, primarily differing in the type of collateral filter used. The collateral filter is responsible for validating NFT collateral when originating a loan.

Currently, four basic collateral filters exist: the [`CollectionCollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/CollectionCollateralFilter.sol) for accepting an entire collection (all token IDs), the [`RangedCollectionCollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/RangedCollectionCollateralFilter.sol) for accepting a range of token IDs within a collection, and the [`SetCollectionCollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/SetCollectionCollateralFilter.sol) for accepting a small set of token IDs within a collection, and the [`MerkleCollectionCollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/MerkleCollectionCollateralFilter.sol) for accepting a larger set of token IDs within a collection via a merkle proof. When a new Pool is created, it can configure one of these four variants of collateral filter to specify the NFT collateral allowed for lending.

Collateral may also be first wrapped by a supported [Collateral Wrapper](/technical-overview/protocol-design/collateral-wrappers.md) (e.g. for bundles). The collateral filter is applied to the enumerated elements of the wrapped collateral when originating a loan.

Collateral filters are implemented with the internal [`CollateralFilter`](https://github.com/metastreet-labs/metastreet-contracts-v2/blob/master/contracts/filters/CollateralFilter.sol) abstract contract API.


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.metastreet.xyz/technical-overview/protocol-design/collateral-filters.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
