Skip to main content
Glama

wallet_encrypt

Encrypt Ethereum and EVM-compatible wallets using a password to secure private keys, mnemonics, or JSON files, with optional custom scrypt parameters.

Instructions

Encrypt a wallet with a password

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
optionsNoOptional encryption options
passwordYesThe password to encrypt the wallet
walletYesThe wallet to encrypt (private key, mnemonic, or JSON)

Implementation Reference

  • The encryptWalletHandler function implements the core logic for the wallet_encrypt tool. It retrieves a wallet using getWallet, encrypts it with the provided password and options using ethers.Wallet.encrypt, and returns the encrypted wallet JSON.
    export const encryptWalletHandler = async (input: any): Promise<ToolResultSchema> => {
      try {
        if (!input.wallet) {
          return createErrorResponse("Wallet is required");
        }
    
        if (!input.password) {
          return createErrorResponse("Password is required");
        }
    
        const wallet = await getWallet(input.wallet);
        const encryptedWallet = await wallet.encrypt(input.password, input.options);
    
        return createSuccessResponse(
        `Wallet encrypted successfully
          Encrypted Wallet: ${encryptedWallet}
        `);
      } catch (error) {
        return createErrorResponse(`Failed to encrypt wallet: ${(error as Error).message}`);
      }
    };
  • Input schema definition for the wallet_encrypt tool, specifying the required wallet and password parameters, along with optional scrypt encryption options.
    {
      name: "wallet_encrypt",
      description: "Encrypt a wallet with a password",
      inputSchema: {
        type: "object",
        properties: {
          wallet: { type: "string", description: "The wallet to encrypt (private key, mnemonic, or JSON)" },
          password: { type: "string", description: "The password to encrypt the wallet" },
          options: { 
            type: "object", 
            description: "Optional encryption options",
            properties: {
              scrypt: {
                type: "object",
                properties: {
                  N: { type: "number" },
                  r: { type: "number" },
                  p: { type: "number" }
                }
              }
            }
          }
        },
        required: ["wallet", "password"]
      }
    },
  • src/tools.ts:556-608 (registration)
    The handlers dictionary registers 'wallet_encrypt' key mapped to the encryptWalletHandler function, which is used by the MCP server to dispatch calls to the correct implementation.
    export const handlers: HandlerDictionary = {
      // Provider Methods
      "wallet_provider_set": setProviderHandler,
      // Wallet Creation and Management
      "wallet_create_random": createWalletHandler,
      "wallet_from_private_key": fromPrivateKeyHandler,
      "wallet_from_mnemonic": fromMnemonicHandler,
      "wallet_from_encrypted_json": fromEncryptedJsonHandler,
      "wallet_encrypt": encryptWalletHandler,
    
      // Wallet Properties
      "wallet_get_address": getAddressHandler,
      "wallet_get_public_key": getPublicKeyHandler,
      "wallet_get_private_key": getPrivateKeyHandler,
    
      // Blockchain Methods
      "wallet_get_balance": getBalanceHandler,
      "wallet_get_chain_id": getChainIdHandler,
      "wallet_get_gas_price": getGasPriceHandler,
      "wallet_get_transaction_count": getTransactionCountHandler,
      "wallet_call": callHandler,
    
      // Transaction Methods
      "wallet_send_transaction": sendTransactionHandler,
      "wallet_sign_transaction": signTransactionHandler,
      "wallet_populate_transaction": populateTransactionHandler,
    
      // Signing Methods
      "wallet_sign_message": signMessageHandler,
      "wallet_sign_typed_data": signTypedDataHandler,
      "wallet_verify_message": verifyMessageHandler,
      "wallet_verify_typed_data": verifyTypedDataHandler,
    
      // Provider Methods
      "provider_get_block": getBlockHandler,
      "provider_get_transaction": getTransactionHandler,
      "provider_get_transaction_receipt": getTransactionReceiptHandler,
      "provider_get_code": getCodeHandler,
      "provider_get_storage_at": getStorageAtHandler,
      "provider_estimate_gas": estimateGasHandler,
      "provider_get_logs": getLogsHandler,
      "provider_get_ens_resolver": getEnsResolverHandler,
      "provider_lookup_address": lookupAddressHandler,
      "provider_resolve_name": resolveNameHandler,
    
      // Network Methods
      "network_get_network": getNetworkHandler,
      "network_get_block_number": getBlockNumberHandler,
      "network_get_fee_data": getFeeDataHandler,
    
      // Mnemonic Methods
      "wallet_create_mnemonic_phrase": createMnemonicPhraseHandler
    };

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/dcSpark/mcp-cryptowallet-evm'

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