# MRC-721

{% hint style="warning" %}
Please note that this protocol is still under testing on the testnet, and we will activate the protocol at an appropriate block height on the Bitcoin mainnet after thorough testing.
{% endhint %}

## Introduction <a href="#jie-shao" id="jie-shao"></a>

MRC-721 is an NFT album protocol based on MetaID. Although each piece of data within the MetaID protocol is an NFT, we still need a specialized NFT album protocol to facilitate the display and sale of NFTs in album format. This protocol can be applied to various NFT albums, including music NFT albums, art creation NFT albums, book NFT albums, etc.

## Protocol Format <a href="#xie-yi-ge-shi" id="xie-yi-ge-shi"></a>

### Album <a href="#zhuan-ji" id="zhuan-ji"></a>

#### Base Path: `/nft/mrc721/{collection_name}`

Users should create NFT PINs under `/nft/mrc721/{collection_name}`, which signifies that the related NFTs belong to the album {collection\_name}. The format of the PINs is not restricted.

For instance, if a user wants to create an NFT album named “metabot,” they should create all related NFT PIN files under the path `/nft/mrc721/metabot`.

#### Key Points

* All NFT files and other files stored under the `/nft/mrc721/` path do not accept modify, revoke, and hide operations. This means that all files under the MRC-721 protocol cannot be modified, revoked, or hidden.
* `collection_name` can be any characters as long as the final path conforms to the MetaID PIN path specifications.

### Album Description Protocol <a href="#zhuan-ji-shuo-ming-xie-yi" id="zhuan-ji-shuo-ming-xie-yi"></a>

#### Path: `/nft/mrc721/{collection_name}/collection_desc`

This protocol provides an explanation and description of the album at its respective path. Only NFT albums with a collection\_desc protocol file will be indexed by the backend indexer.

#### Album Description Protocol Format:

```
{
	"name": "the full name of the collection",
	"totalSupply": 5, // Maximum supply of the album, acceptable values range from -1 to 1e12; default to -1, meaning unlimited; optional
	"royaltyRate": 5, // Sales royalty rate for the album, in percentage, 5 means 5%; acceptable range 0-20, default to 0; optional
	"desc": "description of the collection", // optional
	"website": "https://the-website-of-the-collection", // optional
	"cover": "metafile://your-nft-cover-pinid", // optional
	"metadata": "any data if needed" // optional
}
```

#### Key Points

* collectionid is the pinid of the `collection_desc` protocol; collectionid is the index value of the album.
* `totalSupply` is the maximum issuance of the album. The indexer only indexes PINs under the album path corresponding to the `totalSupply` value. PINs exceeding the `totalSupply` number are considered invalid for the album. For example, if `totalSupply` is 999, only the first 999 PINs created are considered valid for the album.
* Each album can have only one `collection_desc` protocol. If there are multiple collection\_desc protocols, only the first one is taken, and the others are ignored.

### NFT Item Description Protocol <a href="#nft-item-shuo-ming-xie-yi" id="nft-item-shuo-ming-xie-yi"></a>

#### Path: `/nft/mrc721/{collection_name}/item_desc`

This protocol is used to describe each item within the album. It is optional and serves as a supplementary description of the related NFT items. Its absence does not affect the creation and indexing of the NFT album.

#### NFT Item Description Protocol Format:

```
{
"items":
[{
		"pinid":"the-pinid-of-nft", //optional
		"name":"the-name-of-the-NFT-Item",//optional
		"desc":"the description of the specific NFT",//optional
		"cover":"metafile://your-nft-cover-pinid",//optional
		"metadata":"any arbitrary data you can place here"//optional
	},
//repeat item object if needed
]
}
```

#### Key Points

* `item_desc` is a descriptive file for each NFT within the album. It is optional, and its absence does not affect the backend indexer’s indexing of the NFT album.
* An NFT album can have multiple `item_desc` protocol files.
* If there are multiple duplicate pinids, the first one is used, and information about the existing pinid will be ignored.
* If the pinid points to a non-album pinid, it will be ignored.


---

# 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.metaid.io/ft-and-nft-protocols/mrc-721.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.
