MCP Tools — Starknet (Crypto)
All Starknet tools are network-aware. Pass the same data.network value through the full lifecycle (starknet-deploy-collection -> starknet-complete-deploy -> starknet-mint-nft -> starknet-complete-mint). Supported values are "SN_MAIN" and "SN_SEPOLIA", and the connected wallet must be on the same network.
starknet-deploy-collection
Description: Deploy a collection. As a result of executing this command, you will receive a transaction that needs to be signed and sent to the blockchain.
Input: data (ProduceInfo)
{
name: string, // Collection name (required, min 1 char, cannot be empty/whitespace)
symbol: string, // Collection symbol (required, min 1 char, cannot contain spaces)
description?: string, // Optional description
feeNumerator: number, // Royalty numerator in percentage (0-8, e.g., 8 = 8%)
transferable: boolean, // Whether NFT can be transferred
maxTotalSupply: number, // Maximum NFT count
mintPrice: number, // Base price per mint (human amount, e.g., 2, 0.5)
whitelistMintPrice: number, // Discounted price for whitelisted minters (human amount)
paymentToken: "STRK"|"ETH"|"USDC", // Payment token
creator: string, // Creator wallet address (Starknet address format)
externalUrl?: string | null, // Optional external website/app link
referralCode?: string, // Optional referral code
network: "SN_MAIN"|"SN_SEPOLIA" // Target Starknet network
}
Output: Transaction calls to sign (JSON text)
{
calls: [
{
contractAddress: string, // Factory contract address
entrypoint: "produce", // Entrypoint name
calldata: any[] // Compiled calldata
}
]
}
Note: Returns an object { calls: [...] } (usually with one call). After executing the transaction, use the transaction hash with starknet-complete-deploy MCP tool to finalize collection creation in the database.
starknet-complete-deploy
Description: Finalizes collection deployment after broadcast. Validates the deployment transaction receipt and creates or refreshes the collection record in the database. When activityId or hubId is provided, the linked entity is published with passStrategy: STATIC to enable QR pass flow.
Input:
{
hash: string, // Transaction hash from deploy step (required, non-zero)
gasless?: boolean, // Enable gasless transactions (optional)
hubId?: string | null, // Optional hub ID for whitelisting
activityId?: string | null, // Optional activity ID
whitelist_hubIDs?: string[], // Array of hub IDs for whitelist (optional)
whitelist_userIDs?: string[], // Array of user IDs for whitelist (optional)
attributes?: [ // Default attributes for NFTs (optional)
{
trait_type: string,
display_type?: "string" | "number" | "date" | "boost_number" | "boost_percentage", // Optional, defaults to "string"
value: string
}
],
network: "SN_MAIN"|"SN_SEPOLIA" // Same network used during deploy
}
Output: Updated collection object (JSON text)
{
// NftCollection object with all collection data
id: string,
contractAddress: string,
// ... other collection fields
}
starknet-mint-nft
Description: Mint an NFT. As a result of executing this command, you will receive a transaction that needs to be signed and sent to the blockchain.
Input: data (MintInfo)
{
collection_address: string, // Created collection address
items: [
{
receiver: string, // NFT receiver address
name: string, // NFT name
description: string, // NFT description
price: string, // Human amount string (e.g. "0.2") - backend converts to u256 base-units by token decimals
quantity: number, // Number of copies
image?: string, // NFT image URL
externalUrl?: string, // External link
animation_url?: string, // Animation URL
attributes?: [ // NFT attributes
{
trait_type: string,
value: string
}
]
}
],
network: "SN_MAIN"|"SN_SEPOLIA" // Same network used during deploy
}
Output: Transaction calls to sign (JSON text)
{
calls: [
{
contractAddress: string,
entrypoint: string,
calldata: any[]
}
]
}
Note:
- Before minting NFTs, you must approve the collection contract to spend the required amount of payment tokens on your behalf. Token contract addresses depend on the selected
network. See the Starknet NFT Minting Guide for details. - Returns an object
{ calls: [...] }. After executing the transaction, use the transaction hash withstarknet-complete-mintMCP tool to parse the receipt and create NFT records in the database.
starknet-complete-mint
Description: Parses the mint transaction receipt, extracts minted NFT information (token IDs, receivers), fetches metadata from tokenUri, calculates minted_price, and creates NFT records in the database. It also returns the minter Starknet wallet in cryptoAddress response field without persisting Starknet wallet addresses in crypto_addresses.
Input: data
{
hash: string, // Transaction hash from mint step (required)
network: "SN_MAIN"|"SN_SEPOLIA" // Same network used during mint
}
Output: Array of NFT records (JSON text)
[
{
id: string,
name: string,
hash: string,
address: string,
block_number: string | null,
token_id: string,
token_uri: string | null,
image: string | null,
userId: string,
minted_price: number | null,
attributes: [
{
trait_type: string,
display_type?: "string" | "number" | "date" | "boost_number" | "boost_percentage",
value: string
}
] | null,
cryptoAddress: {
address: string
},
receiver: string | null,
serialNumber?: string
}
]
Note:
- Automatically parses
Transferevents from the transaction receipt to identify minted NFTs and the actual NFT contract - Fetches and parses metadata from
tokenUri(supports JSON strings, HTTP/HTTPS URLs, and Data URIs) - Creates NFT records in DB during
starknet-complete-mint; repeat calls for the same transaction are not intended as the primary flow starknet-complete-deployandstarknet-complete-mintmust be called with the samenetworkvalue that was used for the original transaction- Extracts metadata fields:
name,image,description,external_url,animation_url, andattributes - If the collection is linked to an
activityIdorhubId, QR passes are created during NFT persistence and QR emails use Voyager links for Starknet