Flow Wallet browser extension discovers NFT collections through the Token List registry (formerly NFT Catalog, which is now deprecated). This guide explains how to register Flunks: Semester Zero so it appears automatically when users connect their wallets.
Your SemesterZero contract already implements all required views:
- β
NFTCollectionData- Paths and collection creation - β
NFTCollectionDisplay- Name, description, images, socials - β
Display- Individual NFT metadata - β
ExternalURL- Website link (https://flunks.net) - β
Royalties- Marketplace royalty information
Contract Address: 0xce9dd43888d99574 (Mainnet)
Contract Name: SemesterZero
-
Connect any Flow wallet (registration is permissionless)
-
In the "Quick Register" section:
- Contract Address:
0xce9dd43888d99574 - Contract Name:
SemesterZero - The system auto-validates your MetadataViews implementation
- Contract Address:
-
Submit transaction - Free, on-chain registration
-
Wait 1-2 minutes for indexing
node admin-scripts/register-token-list.jsThis script:
- Checks if already registered
- Provides step-by-step instructions
- Shows transaction code for manual submission
flow transactions send cadence/transactions/register-semester-zero-tokenlist.cdc --network mainnet --signer flunks-adminimport * as fcl from "@onflow/fcl";
fcl.config()
.put("accessNode.api", "https://rest-mainnet.onflow.org")
.put("flow.network", "mainnet");
const isRegistered = await fcl.query({
cadence: `
import NFTList from 0x15a918087ab12d86
access(all) fun main(address: Address, contractName: String): Bool {
return NFTList.isNFTCollectionRegistered(address, contractName)
}
`,
args: (arg, t) => [
arg("0xce9dd43888d99574", t.Address),
arg("SemesterZero", t.String),
],
});
console.log("Registered:", isRegistered);Visit: https://token-list.fixes.world/
- Navigate to "Full List - Non-Fungible Tokens"
- Search for "Flunks: Semester Zero"
Once registered, your collection will automatically appear in:
- Collections tab shows "Flunks: Semester Zero"
- NFTs display with correct metadata
- Images load from your Google Cloud Storage
- Name: "Flunks: Semester Zero"
- Description: "Rewards users for exploring flunks.net..."
- Square Logo:
semesterzero.png - Banner:
banner.png
- Increment Fi - DeFi dashboard
- Flowty - NFT marketplace (with Updated events)
- Flowscan - Blockchain explorer
- Any app using Token List API
Your collection will be available via API:
GET https://token-list.fixes.world/api/nft-list
GET https://token-list.fixes.world/api/nft-list?address=0xce9dd43888d99574
GET https://token-list.fixes.world/export/nft-list.json
Also available on GitHub: https://github.com/fixes-world/token-list-jsons
| Feature | Old (NFT Catalog) | New (Token List) |
|---|---|---|
| Status | β Deprecated | β Active |
| Registration | Manual PR required | Permissionless on-chain |
| Cost | Free | Free |
| Approval | Days/weeks | Instant |
| Maintainer | Dapper Labs | Community-driven |
| Contract | 0x49a7cda3a1eecc29 |
0x15a918087ab12d86 |
-
Registration:
- Anyone can call
NFTList.ensureNFTCollectionRegistered(address, name) - Contract validates that your NFT implements required MetadataViews
- If valid, adds entry to on-chain registry
- Anyone can call
-
Discovery:
- Flow Wallet queries Token List contract
- Reads
NFTCollectionDisplayview from your contract - Displays collection info in wallet UI
-
Automatic Collection Setup:
- When user receives NFT, wallet detects via Token List
- Prompts user to initialize collection in their account
- Uses
NFTCollectionDataview to create storage paths
Your contract must resolve these views at the contract level:
access(all) fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? {
switch viewType {
case Type<MetadataViews.NFTCollectionData>():
return MetadataViews.NFTCollectionData(
storagePath: self.Chapter5CollectionStoragePath,
publicPath: self.Chapter5CollectionPublicPath,
publicCollection: Type<&Chapter5Collection>(),
publicLinkedType: Type<&Chapter5Collection>(),
createEmptyCollectionFunction: (fun(): @{NonFungibleToken.Collection} {
return <-SemesterZero.createEmptyCollection(nftType: Type<@SemesterZero.Chapter5NFT>())
})
)
case Type<MetadataViews.NFTCollectionDisplay>():
return MetadataViews.NFTCollectionDisplay(
name: "Flunks: Semester Zero",
description: "Collectible NFTs from Semester Zero...",
externalURL: MetadataViews.ExternalURL("https://flunks.net"),
squareImage: MetadataViews.Media(...),
bannerImage: MetadataViews.Media(...),
socials: {...}
)
}
}β Your contract already has this implemented!
-
Check registration status:
node admin-scripts/register-token-list.js
-
Verify wallet is up to date:
- Flow Wallet may cache collection data
- Try disconnecting and reconnecting
- Clear browser cache if needed
-
Confirm user has collection initialized:
- Token List registration β user collection setup
- User must still initialize collection in their account
- Wallet will prompt automatically when they receive first NFT
This error means Flow Wallet could not map your NFT to a registered Token List entry, so it refuses to build the send transaction.
Fix: Register the collection (see steps above). Once the on-chain NFTList entry exists and indexes (usually <2 minutes), reconnect Flow Wallet and try the transfer again.
If it still fails:
- Re-run
node admin-scripts/register-token-list.jsto confirmtrue - Disconnect / reconnect Wallet, or clear extension cache
- Ask the recipient to initialize their
SemesterZerocollection so the transfer succeeds
-
Verify URLs in contract are accessible:
https://storage.googleapis.com/flunks_public/images/semesterzero.pnghttps://storage.googleapis.com/flunks_public/images/banner.png
-
Check MetadataViews.Media format:
MetadataViews.Media( file: MetadataViews.HTTPFile(url: "https://..."), mediaType: "image/png" )
- Token List reads data directly from your contract
- If you update contract views, changes appear immediately
- No need to re-register after contract updates
- Token List Website: https://token-list.fixes.world/
- Token List Docs: https://docs.fixes.world/concepts/token-list
- GitHub Repository: https://github.com/fixes-world/token-list
- Forum Discussion: https://forum.flow.com/t/replacing-nft-catalog-with-a-decentralized-alternative-proposal/6723
- Flow NFT Standard: https://github.com/onflow/flow-nft
- MetadataViews Docs: https://developers.flow.com/build/advanced-concepts/metadata-views
-
Automatic Discovery
- Users see your collection immediately in Flow Wallet
- No manual collection setup required
-
Marketplace Integration
- Flowty, Increment Fi automatically recognize collection
- Proper metadata display everywhere
-
Ecosystem Visibility
- Listed on Token List website
- API-accessible for dApps
- GitHub JSON exports
-
Future-Proof
- Decentralized, community-maintained
- No approval process for updates
- Permissionless additions
-
Register now:
node admin-scripts/register-token-list.js
-
Verify in Flow Wallet:
- Install Flow Wallet extension
- Connect wallet with SemesterZero NFT
- Check Collections tab
-
Test with users:
- Have users mint their first NFT
- Verify wallet prompts collection setup
- Confirm metadata displays correctly
-
Monitor:
- Check Token List website periodically
- Verify API endpoints return correct data
- Update contract views as needed
Questions? Visit the Token List Discord or Flunks community channels.
Ready to register? Run node admin-scripts/register-token-list.js now! π