mcpField
M
mesh-wallet

mesh-wallet

github.com/meshjsDevelopment244 installsUpdated 36w ago
Repository

About mesh-wallet

mesh-wallet is a skill for integrating Cardano wallets with `@meshsdk/wallet`. It covers browser wallets using CIP-30 and headless wallets for server-side, CLI, and backend use.

Key features

  1. 01Connect to browser wallets through CIP-30
  2. 02Create headless wallets from mnemonics or keys
  3. 03Read balances, addresses, and UTxOs
  4. 04Sign data and transactions
  5. 05Use Mesh-formatted wallet data

Use cases

  1. 01Connect a web app to an installed Cardano wallet
  2. 02Use a wallet from a server-side or CLI workflow
  3. 03Retrieve wallet data and sign transactions

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/meshjs/skills --skill mesh-wallet

After installing, type/mesh-walletin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

PATTERNS.md
README.md
TROUBLESHOOTING.md
WALLET.md

Details

From the project README

Mesh SDK Wallet Skill

AI-assisted Cardano wallet integration using @meshsdk/wallet.

Package Info

npm install @meshsdk/wallet
# or
npm install @meshsdk/core  # includes wallet + transaction + provider

Two Wallet Types

TypeClassUse Case
BrowserMeshCardanoBrowserWalletWeb apps - connect to Eternl, Nami, Flint, etc.
HeadlessMeshCardanoHeadlessWalletServer-side, CLI, backend - from mnemonic/keys

Quick Reference

Browser Wallet (CIP-30)
import { MeshCardanoBrowserWallet } from '@meshsdk/wallet';

// List installed wallets
const wallets = MeshCardanoBrowserWallet.getInstalledWallets();
// → [{ id: 'eternl', name: 'Eternl', icon: '...', version: '...' }, ...]

// Connect to wallet
const wallet = await MeshCardanoBrowserWallet.enable('eternl');

// Get addresses (Bech32)
const addresses = await wallet.getUsedAddressesBech32();
const changeAddr = await wallet.getChangeAddressBech32();
const stakeAddrs = await wallet.getRewardAddressesBech32();

// Get UTxOs and balance (Mesh format)
const utxos = await wallet.getUtxosMesh();
const balance = await wallet.getBalanceMesh();
const collateral = await wallet.getCollateralMesh();

// Sign and submit
const signedTx = await wallet.signTxReturnFullTx(unsignedTxHex);
const txHash = await wallet.submitTx(signedTx);

// Sign data (CIP-8)
const signature = await wallet.signData(address, 'Hello Cardano!');
Headless Wallet (Server-Side)
import { MeshCardanoHeadlessWallet } from '@meshsdk/wallet';
import { BlockfrostProvider } from '@meshsdk/core';

const provider = new BlockfrostProvider('your-api-key');

// From mnemonic
const wallet = await MeshCardanoHeadlessWallet.fromMnemonic({
  mnemonic: ['word1', 'word2', ...],  // 24 words
  networkId: 0,  // 0 = testnet, 1 = mainnet
  walletAddressType: 'Base',  // 'Base' or 'Enterprise'
  fetcher: provider,
  submitter: provider,
});

// Same API as browser wallet
const address = await wallet.getChangeAddressBech32();
const utxos = await wallet.getUtxosMesh();
const signedTx = await wallet.signTxReturnFullTx(unsignedTxHex);

Files

CIP-30 Methods

Standard wallet interface methods:

MethodReturnsDescription
getNetworkId()number0 = testnet, 1 = mainnet
getUtxos()string[]UTxOs in CBOR hex
getCollateral()string[]Collateral UTxOs in CBOR hex
getBalance()stringBalance in CBOR hex
getUsedAddresses()string[]Addresses in hex
getUnusedAddresses()string[]Addresses in hex
getChangeAddress()stringAddress in hex
getRewardAddresses()string[]Stake addresses in hex
signTx(tx, partial)stringWitness set in CBOR hex
signData(addr, data)DataSignatureCIP-8 signature
submitTx(tx)stringTransaction hash

Mesh Extensions

Enhanced methods for better developer experience:

MethodReturnsDescription
getUtxosMesh()UTxO[]UTxOs in Mesh format
getCollateralMesh()UTxO[]Collateral in Mesh format
getBalanceMesh()Asset[]Balance in Mesh format
getUsedAddressesBech32()string[]Bech32 addresses
getUnusedAddressesBech32()string[]Bech32 addresses
getChangeAddressBech32()stringBech32 address
getRewardAddressesBech32()string[]Bech32 stake addresses
signTxReturnFullTx(tx, partial)stringFull signed tx (not just witness)

Important Notes

  1. Browser wallet requires user interaction - enable() prompts the user
  2. Headless wallet needs fetcher - For UTxO queries and signing
  3. Network ID matters - 0 for testnet/preprod, 1 for mainnet
  4. Collateral is auto-selected - Returns smallest pure-ADA UTxO >= 5 ADA

Comments

Markdown supported