# Developer Overview

### Contract Overview

The Capsule Protocol utilizes three main Ethereum contracts to perform all of its on-chain functions.

* [**Capsule NFT contract**](/capsulenft/developer-walkthroughs/contracts/capsule.sol.md)&#x20;
* [**CapsuleFactory contract**](/capsulenft/developer-walkthroughs/contracts/capsulefactory.sol.md)
* [**CapsuleMinter contract**](/capsulenft/developer-walkthroughs/contracts/capsuleminter.sol.md)

The *CapsuleMinter* and *CapsuleFactory* contracts are attached to a proxy contract, meaning they are upgradable.&#x20;

The *Capsule NFT* contract can be 'upgraded' by changing the deploy address. This allows future Collections to support much greater functionality, such as storing other token types or storing combinations of other tokens.&#x20;

{% hint style="info" %}
For more information on the *contracts utilized in the Capsule Protocol*, please read [Contracts](/capsulenft/developer-walkthroughs/contracts.md).
{% endhint %}

### Developer Walkthroughs

Walkthroughs of which methods to use when incorporating the Capsule Protocol in your application can be found in [Developer Walkthroughs](/capsulenft/developer-walkthroughs.md).

The example scenarios that are covered include:

* [User wants to mint any type of Capsule NFT](/capsulenft/developer-walkthroughs/developer-mint-a-capsule-nft.md)
* [User wants to redeem any type of Capsule NFT](/capsulenft/developer-walkthroughs/developer-redeem-a-capsule-nft.md)
* [User wants to create a Capsule Collection](/capsulenft/developer-walkthroughs/developer-create-a-capsule-collection.md)
* [User wants to manage their created Capsule Collection](/capsulenft/developer-walkthroughs/developer-managing-a-capsule-collection.md)

### Decentralization

All Capsule Protocol contracts are decentralized. If the Capsule Team vanished tomorrow, the ecosystem would continue to work exactly as coded.


---

# 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.capsulelabs.xyz/capsulenft/developer-walkthroughs/developer-overview.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.
