MCP Tools — EVM Minting
deploy-collection
Description: Prepares a new ERC-721/1155 NFT collection deployment. Returns unsigned produce() calldata. No database collection is created until complete-collection confirms the deployment transaction.
- Input:
{ name: string, // Collection name symbol: string, // Collection symbol (no spaces allowed) description?: string, // Description feeNumerator: number, // Royalty % (max 6) mintPrice: number, // Mint price in human-readable format (e.g., 1 for $1, 0.5 for $0.50) whitelistMintPrice: number, // Whitelist mint price in human-readable format (e.g., 0.3 for $0.30) transferable: boolean, // NFT transferability maxTotalSupply: number, // Max NFT count paymentToken: 'NATIVE' | 'USDC' | 'BUSD', // Payment token ('NATIVE' for chain native token, 'USDC' or 'BUSD' for stablecoin) creator: string, // Creator wallet address chainId: number, // EVM chain ID externalUrl: string | null, // External link attributes?: Array<{ trait_type: string, display_type?: string, value: string }>, referralCode?: string // Optional referral code } - Output:
{ params: [{ creator: string, // Creator wallet address paymentToken: string, // Resolved token address (0xEee... for NATIVE or USDC/BUSD contract) feeNumerator: number, transferable: boolean, maxTotalSupply: number, mintPrice: string, // Price in wei/token units whitelistMintPrice: string, // Whitelist price in wei/token units metadata: { name: string, symbol: string }, contractURI: string }, "0x0...", { nonce: number, deadline: number, signature: string }], verifyingContract: string, // Address of the verifying contract method: object, // ABI-encoded method details for the transaction }
complete-collection
Description: Finalizes collection deployment after broadcast and creates or updates the database collection from the confirmed transaction.
gasless: true marks the collection as eligible for sponsorship checks, but the sponsorship balance itself is managed separately through /api/v3/sponsorship/*. See Sponsored Gas Ledger Guide.
- Input:
{ chainId: number, hash: string, // Deployment transaction hash hubId?: string, activityId?: string, gasless?: boolean, whitelist_hubIDs?: string[], whitelist_userIDs?: string[] } - Output: Created or updated collection object. Use the returned
idascollectionIdfor minting, media uploads, and checkout flows.
The backend reconstructs the collection from the deployment transaction calldata and receipt. It verifies the configured NFT factory and the authenticated creator wallet before saving.
evm-mint
Description: Prepares batched NFT mint with dynamic pricing and metadata. Crypto mint only.
- Input:
{ collectionId: string, chainId: number, walletAddress: string, // Minter's wallet address nfts: Array<{ receiver: string, // Receiver address for this NFT (where the NFT will be sent) name: string, description: string, mintPrice: number, // Price in human-readable format (e.g., 1 for $1, 0.5 for $0.50) quantity: number, image?: string, attributes?: Array<{ trait_type: string, display_type?: string, value: string }>, external_url?: string, animation_url?: string, youtube_url?: string }> } - Output:
{ chainId: number, verifyingContract: string, // Collection contract address method: object, // ABI-encoded method details for the transaction params: [ string, // Payment token address (0xEee... for NATIVE or USDC/BUSD contract address) Array<string>, // Receivers array - one address per NFT Array<{ // DynamicPriceParameters array - one per NFT tokenId: bigint, // Token ID (bigint format) price: bigint, // Price in wei/token units (bigint format) tokenUri: string // Metadata URI }>, Array<{ // SignatureProtection array - one per NFT nonce: bigint, // Nonce for replay protection deadline: bigint, // Expiration timestamp signature: string // ECDSA signature (hex format, 0x...) }> ], tokens: Array<{ token_id: string, token_uri: string, minted_price: number, name: string, image?: string, attributes?: Array<{...}>, description?: string, external_url?: string, animation_url?: string, youtube_url?: string }> }
Important: All arrays (receivers,dynamicPriceParameters,protections) must have the same length and be synchronized by index. Element at indexiin each array corresponds to the same mint operation. The signature inprotections[i]is generated for the parameters indynamicPriceParameters[i]andreceivers[i].
UsemintDynamicPricefunction to execute the mint:mintDynamicPrice( address expectedPayingToken, address[] calldata receivers, DynamicPriceParameters[] calldata dynamicPriceParameters, SignatureProtection[] calldata protections ) external payable
WhereDynamicPriceParametersis(uint256 tokenId, uint256 price, string tokenUri)andSignatureProtectionis(uint256 nonce, uint256 deadline, bytes signature).
mint-complete
Description: Finalizes mint, saves tokens to user inventory.
- Input:
{ chainId: number, hash: string // Mint transaction hash } - Output: Array of saved NFTs
The backend reconstructs collectionId, walletAddress, and token data from the mint transaction calldata, receipt logs, and token metadata URI. All minted receivers must belong to the authenticated user on the same chain.
create-referral-code
Description: Returns transaction data to create a referral code for a promoter. Auth required.
- Input:
{ chainId: number; // EVM chain ID } - Output:
{ address: string, method: { name: "createReferralCode", ... } }
get-referral-code-by-creator
Description: Retrieves the referral code for a given wallet address. Returns zeroHash if no valid code exists. No auth required.
- Input:
{ chainId: number, // EVM chain ID walletAddress: string // Creator wallet address } - Output:
{ referralCode: string }— bytes32 hash
Note: Auth required for
complete,checkout,create-referral-code. Gasless on SKALE.