cairo-multisig
Generate multi-signature smart contracts requiring quorum approval for transaction execution. Create secure Cairo contracts with configurable signers and upgrade options.
Instructions
Make a multi-signature smart contract, requiring a quorum of registered signers to approve and collectively execute transactions.
Returns the source code of the generated contract, formatted in a Markdown code block. Does not write to disk.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the contract | |
| quorum | Yes | The minimal number of confirmations required by the Multisig to approve a transaction. | |
| upgradeable | No | Whether the smart contract is upgradeable. | |
| info | No | Metadata about the contract and author |
Implementation Reference
- The handler function that executes the cairo-multisig tool. It takes input parameters, constructs MultisigOptions, generates Cairo code using the external multisig.print function from @openzeppelin/wizard-cairo, and returns it as text content.async ({ name, quorum, upgradeable, info }) => { const opts: MultisigOptions = { name, quorum, upgradeable, info, }; return { content: [ { type: 'text', text: safePrintCairoCodeBlock(() => multisig.print(opts)), }, ], }; },
- Zod schema defining the input parameters for the cairo-multisig tool: name, quorum, upgradeable, and info.export const multisigSchema = { name: z.string().describe(commonDescriptions.name), quorum: z.string().describe(cairoMultisigDescriptions.quorum), upgradeable: commonSchema.upgradeable, info: commonSchema.info, } as const satisfies z.ZodRawShape;
- packages/mcp/src/cairo/tools/multisig.ts:9-29 (registration)Direct registration of the 'cairo-multisig' tool on the MCP server, including the tool name, prompt, schema, and handler.return server.tool( 'cairo-multisig', makeDetailedPrompt(cairoPrompts.Multisig), multisigSchema, async ({ name, quorum, upgradeable, info }) => { const opts: MultisigOptions = { name, quorum, upgradeable, info, }; return { content: [ { type: 'text', text: safePrintCairoCodeBlock(() => multisig.print(opts)), }, ], }; }, );
- packages/mcp/src/server.ts:26-26 (registration)Top-level call to register all Cairo tools, including cairo-multisig, on the main MCP server.registerCairoTools(server);
- packages/mcp/src/cairo/tools.ts:23-23 (registration)Registration entry for Multisig tool in the Cairo tools registry, which calls the specific registerCairoMultisig function.Multisig: () => registerCairoMultisig(server),