zora_create_coin
Deploy a new coin on the Zora Coins ecosystem on Base mainnet. Specify name, symbol, metadata URI, and payout recipient to create a custom token.
Instructions
Deploy a new Zora coin. Requires PRIVATE_KEY; only Base mainnet is supported currently.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| symbol | Yes | ||
| uri | Yes | ||
| payoutRecipient | Yes | ||
| platformReferrer | No | ||
| chainId | No | ||
| currency | No | ||
| gasMultiplier | No |
Implementation Reference
- src/index.ts:351-386 (handler)Handler function that ensures a wallet is configured, destructures input arguments, determines the deploy currency, calls CoinsSDK.createCoin with the provided parameters and clients, and returns the result as formatted JSON.async (args) => { ensureWallet(); const { name, symbol, uri, payoutRecipient, platformReferrer, chainId, currency, gasMultiplier, } = args; const deployCurrency = currency === "ETH" ? CoinsSDK.DeployCurrency.ETH : CoinsSDK.DeployCurrency.ZORA; const result = await CoinsSDK.createCoin( { name, symbol, uri: uri as any, // ValidMetadataURI, validated on chain by SDK payoutRecipient: payoutRecipient as any, platformReferrer: platformReferrer as any, chainId: chainId ?? DEFAULT_CHAIN.id, currency: deployCurrency, }, walletClient!, publicClient, { gasMultiplier: gasMultiplier ?? 120, } ); return { content: [{ type: "text", text: json(result) }] }; } );
- src/index.ts:340-349 (schema)Zod input schema defining parameters for creating a coin: name, symbol, uri, payoutRecipient (required), and optional chainId, currency (ZORA/ETH), platformReferrer, gasMultiplier.inputSchema: { name: z.string().min(1), symbol: z.string().min(1), uri: z.string().min(1), payoutRecipient: z.string().min(1), platformReferrer: z.string().optional(), chainId: z.number().optional(), currency: z.enum(["ZORA", "ETH"]).optional(), gasMultiplier: z.number().int().min(50).max(500).optional(), },
- src/index.ts:334-387 (registration)MCP server tool registration for 'zora_create_coin', including schema and inline handler implementation.server.registerTool( "zora_create_coin", { title: "Create a new coin", description: "Deploy a new Zora coin. Requires PRIVATE_KEY; only Base mainnet is supported currently.", inputSchema: { name: z.string().min(1), symbol: z.string().min(1), uri: z.string().min(1), payoutRecipient: z.string().min(1), platformReferrer: z.string().optional(), chainId: z.number().optional(), currency: z.enum(["ZORA", "ETH"]).optional(), gasMultiplier: z.number().int().min(50).max(500).optional(), }, }, async (args) => { ensureWallet(); const { name, symbol, uri, payoutRecipient, platformReferrer, chainId, currency, gasMultiplier, } = args; const deployCurrency = currency === "ETH" ? CoinsSDK.DeployCurrency.ETH : CoinsSDK.DeployCurrency.ZORA; const result = await CoinsSDK.createCoin( { name, symbol, uri: uri as any, // ValidMetadataURI, validated on chain by SDK payoutRecipient: payoutRecipient as any, platformReferrer: platformReferrer as any, chainId: chainId ?? DEFAULT_CHAIN.id, currency: deployCurrency, }, walletClient!, publicClient, { gasMultiplier: gasMultiplier ?? 120, } ); return { content: [{ type: "text", text: json(result) }] }; } );