Skip to main content
Glama
OpenZeppelin

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin

stellar-non-fungible

Generate SEP-50 compliant non-fungible token contracts with customizable features like burnable, enumerable, pausable, and upgradeable options. Returns contract source code in Markdown format without writing to disk.

Instructions

Make a non-fungible token per the Non-Fungible Token Standard, compatible with SEP-50, similar to ERC-721.

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
symbolYesThe short symbol for the token
tokenUriNoThe metadata URI returned by the token contract for every NFT.
burnableNoWhether token holders will be able to destroy their tokens
enumerableNoWhether the NFTs are enumerable (can be iterated over).
consecutiveNoTo batch mint NFTs instead of minting them individually (sequential minting is mandatory).
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
sequentialNoWhether the IDs of the minted NFTs will be sequential.
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 contract can be upgraded.
infoNoMetadata about the contract and author

Implementation Reference

  • Async handler function that constructs NonFungibleOptions from input parameters and generates Rust code using nonFungible.print(opts), wrapped in safePrintRustCodeBlock.
    async ({ name, symbol, tokenUri, burnable, enumerable, consecutive, pausable, mintable, sequential, upgradeable, info, }) => { const opts: NonFungibleOptions = { name, symbol, tokenUri, burnable, enumerable, consecutive, pausable, mintable, sequential, upgradeable, info, }; return { content: [ { type: 'text', text: safePrintRustCodeBlock(() => nonFungible.print(opts)), }, ], }; },
  • Zod schema defining the input parameters for the stellar-non-fungible tool, including name, symbol, various optional flags, and common schema.
    export const nonFungibleSchema = { name: z.string().describe(commonDescriptions.name), symbol: z.string().describe(commonDescriptions.symbol), tokenUri: z.string().optional().describe(stellarNonFungibleDescriptions.tokenUri), burnable: z.boolean().optional().describe(commonDescriptions.burnable), enumerable: z.boolean().optional().describe(stellarNonFungibleDescriptions.enumerable), consecutive: z.boolean().optional().describe(stellarNonFungibleDescriptions.consecutive), pausable: z.boolean().optional().describe(commonDescriptions.pausable), mintable: z.boolean().optional().describe(commonDescriptions.mintable), sequential: z.boolean().optional().describe(stellarNonFungibleDescriptions.sequential), ...commonSchema, } as const satisfies z.ZodRawShape;
  • Registration function that registers the 'stellar-non-fungible' tool on the MCP server with its prompt, schema, and handler.
    export function registerStellarNonFungible(server: McpServer): RegisteredTool { return server.tool( 'stellar-non-fungible', makeDetailedPrompt(stellarPrompts.NonFungible), nonFungibleSchema, async ({ name, symbol, tokenUri, burnable, enumerable, consecutive, pausable, mintable, sequential, upgradeable, info, }) => { const opts: NonFungibleOptions = { name, symbol, tokenUri, burnable, enumerable, consecutive, pausable, mintable, sequential, upgradeable, info, }; return { content: [ { type: 'text', text: safePrintRustCodeBlock(() => nonFungible.print(opts)), }, ], }; }, ); }

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