Skip to main content
Glama
OpenZeppelin

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin

cairo-erc1155

Generate ERC-1155 token contracts with configurable features like burnable, pausable, mintable, royalty, and access control options.

Instructions

Make a non-fungible token per the ERC-1155 standard.

Returns the source code of the generated contract, formatted in a Markdown code block. Does not write to disk.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the contract
baseUriYesThe location of the metadata for the token. Clients will replace any instance of {id} in this string with the tokenId.
burnableNoWhether token holders will be able to destroy their tokens
pausableNoWhether privileged accounts will be able to pause specifically marked functionality. Useful for emergency response.
mintableNoWhether privileged accounts will be able to create more supply or emit more tokens
updatableUriNoWhether privileged accounts will be able to set a new URI for all token types.
royaltyInfoNoProvides information for how much royalty is owed and to whom, based on a sale price. Follows ERC-2981 standard.
accessNoThe type of access control to provision. Ownable is a simple mechanism with a single account authorized for all privileged actions. Roles is a flexible mechanism with a separate role for each privileged action. A role can have many authorized accounts.
upgradeableNoWhether the smart contract is upgradeable.
infoNoMetadata about the contract and author

Implementation Reference

  • Function that registers the 'cairo-erc1155' tool on the MCP server, specifying name, prompt, schema, and handler.
    export function registerCairoERC1155(server: McpServer): RegisteredTool { return server.tool( 'cairo-erc1155', makeDetailedPrompt(cairoPrompts.ERC1155), erc1155Schema, async ({ name, baseUri, burnable, pausable, mintable, updatableUri, royaltyInfo, access, upgradeable, info }) => { const opts: ERC1155Options = { name, baseUri, burnable, pausable, mintable, updatableUri, royaltyInfo, access, upgradeable, info, }; return { content: [ { type: 'text', text: safePrintCairoCodeBlock(() => erc1155.print(opts)), }, ], }; }, ); }
  • Handler function that constructs ERC1155Options from input params and generates Cairo code using erc1155.print from OpenZeppelin wizard-cairo.
    async ({ name, baseUri, burnable, pausable, mintable, updatableUri, royaltyInfo, access, upgradeable, info }) => { const opts: ERC1155Options = { name, baseUri, burnable, pausable, mintable, updatableUri, royaltyInfo, access, upgradeable, info, }; return { content: [ { type: 'text', text: safePrintCairoCodeBlock(() => erc1155.print(opts)), }, ], }; },
  • Zod schema defining the input parameters for the cairo-erc1155 tool, including name, baseUri, flags for features like burnable, pausable, etc.
    export const erc1155Schema = { name: z.string().describe(commonDescriptions.name), baseUri: z.string().describe(cairoERC1155Descriptions.baseUri), burnable: z.boolean().optional().describe(commonDescriptions.burnable), pausable: z.boolean().optional().describe(commonDescriptions.pausable), mintable: z.boolean().optional().describe(commonDescriptions.mintable), updatableUri: z.boolean().optional().describe(cairoERC1155Descriptions.updatableUri), royaltyInfo: z .object({ enabled: z.boolean().describe(cairoRoyaltyInfoDescriptions.enabled), defaultRoyaltyFraction: z.string().describe(cairoRoyaltyInfoDescriptions.defaultRoyaltyFraction), feeDenominator: z.string().describe(cairoRoyaltyInfoDescriptions.feeDenominator), }) .optional() .describe(cairoCommonDescriptions.royaltyInfo), ...commonSchema, } as const satisfies z.ZodRawShape;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpenZeppelin/contracts-wizard'

If you have feedback or need assistance with the MCP directory API, please join our Discord server