NEW: The Module Marketplace is live — browse, build, and earn.
Module Registry
--
Tracked Modules
8
Genesis Slots
5
Standard Slots
Available Modules
Loading modules...
Build a Module
Modules extend Exoskeleton capabilities. Any smart contract can be registered as a module by the contract owner. Once registered, token holders can activate modules in their available slots.
How Modules Work
Module Types
Free modules can be activated at no cost. Premium modules require an ETH payment. Genesis Exoskeletons get 8 slots, standard get 5 slots.
Registration
- Deploy your module contract to Base
- Contact the team to register it:
registerModule(name, contract, premium, cost) - Once registered, any Exoskeleton holder can activate it
Activation Flow
- Token owner calls
activateModule(tokenId, moduleName)(+ ETH for premium) - Module is tracked in the token's active modules list
- Module count contributes to reputation (+10 per active module)
- Deactivate:
deactivateModule(tokenId, moduleName)
Module Ideas
- Communication bridges — relay messages to/from other protocols
- Reputation scorers — external scoring (game ELO, social metrics)
- Storage extensions — structured data schemas
- Identity verification — prove ownership of external accounts
- Agent tools — onchain capabilities for AI agents
Smart Contract Interface
// Core: ${ExoCore ? ExoCore.CONTRACTS.core : '0x1Cc48Ad23951Fc2DA96DdFFeFAba705aD5ef7B07'}
// Registry: 0x46fd56417dcd08cA8de1E12dd6e7f7E1b791B3E9
// Register (owner only)
registerModule(bytes32 name, address contract, bool premium, uint256 cost)
// Activate (token owner)
activateModule(uint256 tokenId, bytes32 moduleName) payable
// Deactivate
deactivateModule(uint256 tokenId, bytes32 moduleName)
// Query
isModuleActive(uint256 tokenId, bytes32 moduleName) returns (bool)
getActiveModulesForToken(uint256 tokenId) returns (bytes32[])
// External scoring (granted modules)
grantScorer(uint256 tokenId, address scorer)
setExternalScore(uint256 tokenId, bytes32 key, int256 value)