Story SDK MCP Server
Official
by piplabs
- story-mcp-hub
- utils
"""
Contract addresses for Story Protocol on different networks.
"""
# Aeneid testnet contract addresses
AENEID_CONTRACTS = {
"AccessController": "0xcCF37d0a503Ee1D4C11208672e622ed3DFB2275a",
"ArbitrationPolicyUMA": "0xfFD98c3877B8789124f02C7E8239A4b0Ef11E936",
"CoreMetadataModule": "0x6E81a25C99C6e8430aeC7353325EB138aFE5DC16",
"CoreMetadataViewModule": "0xB3F88038A983CeA5753E11D144228Ebb5eACdE20",
"DisputeModule": "0x9b7A9c70AFF961C799110954fc06F3093aeb94C5",
"EvenSplitGroupPool": "0xf96f2c30b41Cb6e0290de43C8528ae83d4f33F89",
"GroupNFT": "0x4709798FeA84C84ae2475fF0c25344115eE1529f",
"GroupingModule": "0x69D3a7aa9edb72Bc226E745A7cCdd50D947b69Ac",
"IPAccountImplBeacon": "0x9825cc7A398D9C3dDD66232A8Ec76d5b05422581",
"IPAccountImplBeaconProxy": "0x00b800138e4D82D1eea48b414d2a2A8Aee9A33b1",
"IPAccountImplCode": "0x6ccAd5718a27fB6a09EAdb737D889A2007838b77",
"IPAssetRegistry": "0x77319B4031e6eF1250907aa00018B8B1c67a244b",
"IPGraphACL": "0x1640A22a8A086747cD377b73954545e2Dfcc9Cad",
"IpRoyaltyVaultBeacon": "0x6928ba25Aa5c410dd855dFE7e95713d83e402AA6",
"IpRoyaltyVaultImpl": "0x73e2D097F71e5103824abB6562362106A8955AEc",
"LicenseRegistry": "0x529a750E02d8E2f15649c13D69a465286a780e24",
"LicenseToken": "0xFe3838BFb30B34170F00030B52eA4893d8aAC6bC",
"LicensingModule": "0x04fbd8a2e56dd85CFD5500A4A4DfA955B9f1dE6f",
"ModuleRegistry": "0x022DBAAeA5D8fB31a0Ad793335e39Ced5D631fa5",
"PILicenseTemplate": "0x2E896b0b2Fdb7457499B56AAaA4AE55BCB4Cd316",
"ProtocolAccessManager": "0xFdece7b8a2f55ceC33b53fd28936B4B1e3153d53",
"ProtocolPauseAdmin": "0xdd661f55128A80437A0c0BDA6E13F214A3B2EB24",
"RoyaltyModule": "0xD2f60c40fEbccf6311f8B47c4f2Ec6b040400086",
"RoyaltyPolicyLAP": "0xBe54FB168b3c982b7AaE60dB6CF75Bd8447b390E",
"RoyaltyPolicyLRP": "0x9156e603C949481883B1d3355c6f1132D191fC41",
"SPG_NFT": "0x76ba2c2428F756010683c4ece6f49296b4756C1A", # Official SPG NFT contract for Aeneid
}
# Mainnet contract addresses
MAINNET_CONTRACTS = {
"AccessController": "0xcCF37d0a503Ee1D4C11208672e622ed3DFB2275a",
"ArbitrationPolicyUMA": "0xfFD98c3877B8789124f02C7E8239A4b0Ef11E936",
"CoreMetadataModule": "0x6E81a25C99C6e8430aeC7353325EB138aFE5DC16",
"CoreMetadataViewModule": "0xB3F88038A983CeA5753E11D144228Ebb5eACdE20",
"DisputeModule": "0x9b7A9c70AFF961C799110954fc06F3093aeb94C5",
"EvenSplitGroupPool": "0xf96f2c30b41Cb6e0290de43C8528ae83d4f33F89",
"GroupNFT": "0x4709798FeA84C84ae2475fF0c25344115eE1529f",
"GroupingModule": "0x69D3a7aa9edb72Bc226E745A7cCdd50D947b69Ac",
"IPAccountImplBeacon": "0x9825cc7A398D9C3dDD66232A8Ec76d5b05422581",
"IPAccountImplBeaconProxy": "0x00b800138e4D82D1eea48b414d2a2A8Aee9A33b1",
"IPAccountImplCode": "0x7343646585443F1c3F64E4F08b708788527e1C77",
"IPAssetRegistry": "0x77319B4031e6eF1250907aa00018B8B1c67a244b",
"IPGraphACL": "0x1640A22a8A086747cD377b73954545e2Dfcc9Cad",
"IpRoyaltyVaultBeacon": "0x6928ba25Aa5c410dd855dFE7e95713d83e402AA6",
"IpRoyaltyVaultImpl": "0x63cC7611316880213f3A4Ba9bD72b0EaA2010298",
"LicenseRegistry": "0x529a750E02d8E2f15649c13D69a465286a780e24",
"LicenseToken": "0xFe3838BFb30B34170F00030B52eA4893d8aAC6bC",
"LicensingModule": "0x04fbd8a2e56dd85CFD5500A4A4DfA955B9f1dE6f",
"ModuleRegistry": "0x022DBAAeA5D8fB31a0Ad793335e39Ced5D631fa5",
"PILicenseTemplate": "0x2E896b0b2Fdb7457499B56AAaA4AE55BCB4Cd316",
"ProtocolAccessManager": "0xFdece7b8a2f55ceC33b53fd28936B4B1e3153d53",
"ProtocolPauseAdmin": "0xdd661f55128A80437A0c0BDA6E13F214A3B2EB24",
"RoyaltyModule": "0xD2f60c40fEbccf6311f8B47c4f2Ec6b040400086",
"RoyaltyPolicyLAP": "0xBe54FB168b3c982b7AaE60dB6CF75Bd8447b390E",
"RoyaltyPolicyLRP": "0x9156e603C949481883B1d3355c6f1132D191fC41",
"SPG_NFT": "0x98971c660ac20880b60F86Cc3113eBd979eb3aAE", # Official SPG NFT contract for Mainnet
}
# Chain IDs for different networks
CHAIN_IDS = {
"aeneid": 1315, # Story Protocol Aeneid testnet
"mainnet": 1514, # Story Protocol mainnet
}
def get_contracts_by_chain_id(chain_id):
"""
Get contract addresses based on chain ID.
Args:
chain_id (int): The chain ID of the network
Returns:
dict: Contract addresses for the specified network
"""
if chain_id == CHAIN_IDS["aeneid"]:
return AENEID_CONTRACTS
elif chain_id == CHAIN_IDS["mainnet"]:
return MAINNET_CONTRACTS
else:
raise ValueError(f"Unsupported chain ID: {chain_id}")
def get_contracts_by_network_name(network_name):
"""
Get contract addresses based on network name.
Args:
network_name (str): The name of the network ('aeneid' or 'mainnet')
Returns:
dict: Contract addresses for the specified network
"""
network_name = network_name.lower()
if network_name == "aeneid":
return AENEID_CONTRACTS
elif network_name == "mainnet":
return MAINNET_CONTRACTS
else:
raise ValueError(f"Unsupported network name: {network_name}")