Skip to main content
Glama
OpenZeppelin

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin

stellar-stablecoin

Generate a Stellar-compatible stablecoin smart contract using OpenZeppelin's Fungible Token Standard. Configure token properties like minting, pausing, and access controls to create a customized stablecoin implementation.

Instructions

Make a stablecoin that uses Fungible Token Standard, compatible with SEP-41.

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
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.
premintNoThe number of tokens to premint for the deployer.
mintableNoWhether privileged accounts will be able to create more supply or emit more tokens
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
limitationsNoWhether to restrict certain users from transferring tokens, either via allowing or blocking them.

Implementation Reference

  • The handler function for the 'stellar-stablecoin' tool. It takes input parameters, constructs StablecoinOptions, calls stablecoin.print(opts) from '@openzeppelin/wizard-stellar' to generate Rust code, and formats it safely for output.
    async ({ name, symbol, burnable, pausable, premint, mintable, upgradeable, access, limitations, info }) => { const opts: StablecoinOptions = { name, symbol, burnable, pausable, premint, mintable, upgradeable, access, limitations, info, }; return { content: [ { type: 'text', text: safePrintRustCodeBlock(() => stablecoin.print(opts)), }, ], }; },
  • Zod schema for validating inputs to the 'stellar-stablecoin' tool, extending fungibleSchema with 'limitations' option specific to stablecoins.
    export const stablecoinSchema = { ...fungibleSchema, limitations: z .literal(false) .or(z.literal('allowlist')) .or(z.literal('blocklist')) .optional() .describe(stellarStablecoinDescriptions.limitations), } as const satisfies z.ZodRawShape;
  • Registers the 'stellar-stablecoin' tool on the MCP server, providing the tool name, prompt, schema, and handler function.
    export function registerStellarStablecoin(server: McpServer): RegisteredTool { return server.tool( 'stellar-stablecoin', makeDetailedPrompt(stellarPrompts.Stablecoin), stablecoinSchema, async ({ name, symbol, burnable, pausable, premint, mintable, upgradeable, access, limitations, info }) => { const opts: StablecoinOptions = { name, symbol, burnable, pausable, premint, mintable, upgradeable, access, limitations, info, }; return { content: [ { type: 'text', text: safePrintRustCodeBlock(() => stablecoin.print(opts)), }, ], }; }, ); }
  • Top-level registration function for all Stellar tools, including 'stellar-stablecoin' via registerStellarStablecoin.
    export function registerStellarTools(server: McpServer) { Object.values(getRegisterFunctions(server)).forEach(registerTool => { registerTool(server); }); }
  • Calls registerStellarTools during MCP server initialization, thereby registering the 'stellar-stablecoin' tool.
    registerStellarTools(server); registerStylusTools(server); registerUniswapHooksTools(server);

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