create_wallet
Generate a BIP-39 mnemonic and derive a VeChain account key for wallet creation on the VeChain blockchain, with configurable wordlist size and secure private key handling.
Instructions
Generate a BIP-39 mnemonic (12/15/18/21/24 words) and derive the account-level secp256k1 key at path m/44'/818'/0'/0 (VET coin type = 818). By default, the private key is REDACTED in the response. Set includeSecret=true to include it (handle with care).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| wordlistSize | No | Length of the BIP-39 mnemonic wordlist. Default: 12 |
Implementation Reference
- src/tools.ts:474-516 (handler)The asynchronous callback function that executes the create_wallet tool. It generates a BIP-39 mnemonic based on wordlistSize, derives the secp256k1 private key and public key address for VeChain, and returns the details in JSON format. Handles errors including timeouts.callback: async ({ wordlistSize = 12 }: { wordlistSize?: 12 | 15 | 18 | 21 | 24 }) => { try { const mnemonic = Mnemonic.of(wordlistSize); const secretKey = Mnemonic.toPrivateKey(mnemonic); const secretKeyHex = Hex.of(secretKey).toString(); const publicKey = Secp256k1.derivePublicKey(secretKey); const publicKeyAddress = Address.ofPublicKey(publicKey).toString(); const result = { mnemonic, secretKey, secretKeyHex, publicKey: publicKeyAddress }; return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (err) { const isAbort = (err as Error)?.name === "AbortError"; return { content: [ { type: "text", text: JSON.stringify( { error: isAbort ? "Request timed out" : "Failed to create wallet", reason: String((err as Error)?.message ?? err), }, null, 2 ), }, ], }; } }
- src/tools.ts:468-473 (schema)Zod input schema defining the optional wordlistSize parameter as a union of literal values 12,15,18,21,24 with description.inputSchema: { wordlistSize: z .union([z.literal(12), z.literal(15), z.literal(18), z.literal(21), z.literal(24)]) .optional() .describe("Length of the BIP-39 mnemonic wordlist. Default: 12") },
- src/server.ts:74-92 (registration)Loop that registers each tool in the vechainTools array (imported from tools.ts, which includes create_wallet) with the MCP server. Uses the tool's name, description, inputSchema, and wraps the tool's callback handler.for (const t of vechainTools) { server.registerTool( t.name, { title: t.name, description: t.description, inputSchema: t.inputSchema }, async (args) => { const result = await t.callback(args); return { content: result.content.map(item => ({ ...item, type: "text" as const })) }; } ); }