Skip to main content

MCP Tools

Karen exposes 17 MCP (Model Context Protocol) tools that enable any AI agent to interact with Solana. Add Karen to your MCP-compatible agent (Claude Desktop, OpenClaw, LangChain, etc.) to give it autonomous wallet capabilities.

Configuration

Add Karen to your MCP config:
{
  "mcpServers": {
    "karen": {
      "command": "npx",
      "args": ["tsx", "path/to/karen/src/mcp/server.ts"]
    }
  }
}

Wallet Management

karen_create_wallet

Create a new managed Solana wallet.
name
string
required
Human-readable name for the wallet
walletId
string
Unique wallet identifier for use in other tools
name
string
Wallet name
address
string
Solana public key (base58)
message
string
Confirmation message with next steps
interface CreateWalletResponse {
  walletId: string
  name: string
  address: string
  message: string
}
Example:
{
  "name": "karen_create_wallet",
  "arguments": {
    "name": "my-trading-wallet"
  }
}

karen_balance

Check SOL and SPL token balances for a wallet.
walletId
string
required
Wallet ID returned from karen_create_wallet
wallet
string
Wallet name
address
string
Wallet public key
sol
number
SOL balance in native units
tokens
TokenBalance[]
Array of SPL token holdings
interface BalanceResponse {
  wallet: string
  address: string
  sol: number
  tokens: TokenBalance[]
}

interface TokenBalance {
  mint: string
  symbol?: string
  balance: number
  decimals: number
  uiBalance: number
}

karen_list_wallets

List all managed wallets with their addresses and names. No parameters required.
wallets
WalletInfo[]
Array of all managed wallets
interface WalletInfo {
  id: string
  name: string
  publicKey: string
  createdAt: string
  derivationIndex?: number
  tags: string[]
}

Funding & Transfers

karen_airdrop

Request SOL from the devnet faucet. Devnet only, max 2 SOL per request.
walletId
string
required
Wallet ID to fund
amount
number
required
Amount of SOL to request (max 2)
status
string
Transaction status: “confirmed” or “failed”
signature
string
Solana transaction signature
error
string
Error message if failed

karen_transfer

Send SOL from a managed wallet to any Solana address.
walletId
string
required
Source wallet ID
to
string
required
Recipient Solana address (base58)
amount
number
required
Amount of SOL to send
status
string
Transaction status
signature
string
Transaction signature
guardrails
string[]
List of guardrails applied to this transaction
interface TransferResponse {
  status: 'confirmed' | 'failed' | 'blocked'
  signature?: string
  error?: string
  guardrails: string[]
}

Trading

karen_swap

Swap tokens using Jupiter DEX. Supports SOL, USDC, USDT, BONK, or any mint address.
walletId
string
required
Wallet ID to swap from
inputToken
string
required
Token to sell (e.g., “SOL”, “USDC”, or mint address)
outputToken
string
required
Token to buy (e.g., “USDC”, “SOL”)
amount
number
required
Amount of input token to swap
slippageBps
number
Max slippage in basis points (default: 50 = 0.5%)
Example:
{
  "name": "karen_swap",
  "arguments": {
    "walletId": "abc-123",
    "inputToken": "SOL",
    "outputToken": "USDC",
    "amount": 0.5,
    "slippageBps": 50
  }
}

Transaction History

karen_tx_history

Get transaction history for a wallet or all wallets.
walletId
string
Wallet ID (optional — omit for all wallets)
limit
number
Number of transactions to return (default: 20)
transactions
TransactionRecord[]
Array of transaction records
interface TransactionRecord {
  id: string
  walletId: string
  agentId?: string
  type: TransactionType
  status: 'pending' | 'confirmed' | 'failed' | 'blocked'
  signature?: string
  details: TransactionDetails
  guardrailsApplied: string[]
  timestamp: string
  error?: string
}

Token Launch & Management

karen_launch_token

Create a new SPL token with initial supply. You become the mint and freeze authority.
walletId
string
required
Wallet ID
name
string
required
Token name
symbol
string
required
Token ticker symbol
decimals
number
Decimal places (default: 9)
initialSupply
number
Initial supply in whole units (default: 1,000,000)

karen_mint_supply

Mint additional tokens for a token you created. Must be mint authority.
walletId
string
required
Wallet ID
mint
string
required
Token mint address
amount
number
required
Amount to mint
decimals
number
Token decimals (default: 9)

karen_revoke_authority

Permanently revoke mint or freeze authority on a token. IRREVERSIBLE.
walletId
string
required
Wallet ID
mint
string
required
Token mint address
authorityType
string
“mint” or “freeze” (default: “mint”)
signature
string
Transaction signature
authorityType
string
Type of authority revoked
revoked
boolean
Confirmation that authority was revoked

Staking

karen_stake

Stake SOL by delegating to a Solana validator.
walletId
string
required
Wallet ID
amount
number
required
SOL to stake
validator
string
Validator vote account (optional, uses default devnet validator)

karen_unstake

Deactivate a stake account. After 1 epoch, you can withdraw.
walletId
string
required
Wallet ID
stakeAccount
string
required
Stake account public key
signature
string
Transaction signature
deactivated
boolean
Confirmation that stake was deactivated

karen_withdraw_stake

Withdraw SOL from a fully deactivated stake account.
walletId
string
required
Wallet ID
stakeAccount
string
required
Stake account public key
signature
string
Transaction signature
withdrawn
boolean
Confirmation that stake was withdrawn

karen_list_stakes

List all stake accounts for a wallet.
walletId
string
required
Wallet ID
stakes
StakeAccount[]
Array of stake accounts with status and balances

Token Account Operations

karen_burn

Burn (destroy) SPL tokens from your wallet.
walletId
string
required
Wallet ID
mint
string
required
Token mint address
amount
number
required
Amount to burn

karen_close_account

Close an empty token account to reclaim rent SOL.
walletId
string
required
Wallet ID
mint
string
required
Token mint address

Wrapped SOL

karen_wrap_sol

Convert SOL to Wrapped SOL (wSOL) for DeFi interactions.
walletId
string
required
Wallet ID
amount
number
required
SOL to wrap

karen_unwrap_sol

Convert all wSOL back to native SOL.
walletId
string
required
Wallet ID

See Also

Build docs developers (and LLMs) love