Skip to main content

Overview

Aether MCP uses a single-wallet-per-session model: each session has one wallet that signs everything autonomously. No more principal/agent wallet distinction.
  • 8 tools on devnet / 9 tools on mainnet (adds wallet_connect)
  • All transactions signed automatically by the session wallet
  • Wallets encrypted with AES-256-GCM and persisted across sessions

Wallet Tools

wallet_create

Create a new wallet or restore an existing one. This is the only setup tool you need. After calling this, your wallet is:
  • Generated (new Keypair)
  • Encrypted and stored (persisted across sessions)
  • Auto-authenticated (session + JWT token created)
  • Ready to sign transactions
Parameters:
ParameterTypeRequiredDefaultDescription
restoreAddressstringNo-Restore a previously created wallet by its address
labelstringNo-Optional label (e.g., “trading-bot”)
airdropSolnumberNo1SOL airdrop amount, 0-2 (devnet/testnet only)
Example (new wallet):
{
  "tool": "wallet_create",
  "params": {
    "airdropSol": 1,
    "label": "my-agent"
  }
}
Response:
{
  "success": true,
  "data": {
    "address": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
    "label": "my-agent",
    "network": "devnet",
    "balances": { "sol": 1.0, "usdc": 0, "athr": 0 },
    "airdropTx": "3Zq8M9xKvRnP2y...",
    "sessionToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "authenticated": true,
    "isNewSession": true,
    "hint": "Save this address to restore later: wallet_create with restoreAddress=\"8FE27iak...\""
  }
}
Example (restore wallet):
{
  "tool": "wallet_create",
  "params": {
    "restoreAddress": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr"
  }
}
Creates, encrypts, authenticates, and funds your wallet in a single call.

wallet_restore

List available wallets or restore a specific one. Parameters:
ParameterTypeRequiredDefaultDescription
addressstringNo-Restore this specific wallet. If omitted, lists available wallets.
limitnumberNo5Number of wallets to list (1-20)
Example (list wallets):
{
  "tool": "wallet_restore"
}
Response:
{
  "success": true,
  "data": {
    "network": "devnet",
    "currentWallet": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
    "availableWallets": [
      {
        "address": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
        "isActive": true,
        "createdAt": "2025-02-06T10:00:00Z",
        "lastUsed": "2025-02-06T11:30:00Z"
      }
    ],
    "count": 1
  }
}
Example (restore specific):
{
  "tool": "wallet_restore",
  "params": {
    "address": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr"
  }
}

wallet_get_address

Get the current wallet public address. No Parameters Required Example:
{
  "tool": "wallet_get_address"
}
Response:
{
  "success": true,
  "data": {
    "address": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
    "network": "devnet"
  }
}

wallet_get_balance

Get wallet balance for SOL, USDC, and ATHR tokens. No Parameters Required Example:
{
  "tool": "wallet_get_balance"
}
Response:
{
  "success": true,
  "data": {
    "address": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
    "balances": {
      "sol": 1.5,
      "usdc": 100.0
    },
    "network": "devnet"
  }
}

wallet_transfer

Transfer SOL, USDC, or ATHR to another wallet. Transactions are signed automatically by the session wallet. Parameters:
ParameterTypeRequiredDefaultDescription
tostringYes-Recipient wallet address (valid Solana public key)
amountnumberYes-Amount to transfer (must be positive)
tokenstringNousdcToken to transfer: sol, usdc, or athr
Transfer Limits:
TokenMinMaxWarning Threshold
SOL0.001100> 10
USDC0.0110,000> 1,000
ATHR0.0110,000> 1,000
Example:
{
  "tool": "wallet_transfer",
  "params": {
    "to": "5HgtP9bE3yhRXzKZ4QrnkSw9HQxVPmWJKvqY7pYt8g2H",
    "amount": 10.5,
    "token": "usdc"
  }
}
Response:
{
  "success": true,
  "data": {
    "signature": "3Zq8M9xKvRnP2yJwN5tLhQ8K7fX4bV9mD1cY6eU2rG5s...",
    "from": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
    "to": "5HgtP9bE3yhRXzKZ4QrnkSw9HQxVPmWJKvqY7pYt8g2H",
    "amount": 10.5,
    "token": "usdc",
    "network": "devnet",
    "explorerUrl": "https://solscan.io/tx/3Zq8M9x...?cluster=devnet"
  }
}
ATHR has lower fees than USDC! Consider using ATHR for frequent transfers.

wallet_get_history

Get recent transaction history. Parameters:
ParameterTypeRequiredDefaultDescription
limitnumberNo10Number of transactions to retrieve (1-100)
Example:
{
  "tool": "wallet_get_history",
  "params": {
    "limit": 5
  }
}
Response:
{
  "success": true,
  "data": {
    "address": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
    "transactions": [
      {
        "signature": "3Zq8M9xKvRnP2yJwN5tLhQ8K7fX4bV9mD1cY6eU2rG5s",
        "timestamp": 1707222000,
        "type": "transfer",
        "amount": 10.5,
        "status": "confirmed"
      }
    ],
    "count": 1,
    "network": "devnet"
  }
}

wallet_export

Export the private key of a wallet for backup. Parameters:
ParameterTypeRequiredDefaultDescription
addressstringNocurrent walletWallet address to export
formatstringNobase58Export format: base58 or json (array of bytes)
Example:
{
  "tool": "wallet_export",
  "params": {
    "format": "base58"
  }
}
Response:
{
  "success": true,
  "data": {
    "address": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
    "privateKey": "5KQw...(base58 string)...",
    "format": "base58",
    "label": "my-agent",
    "createdAt": "2025-02-06T10:00:00Z"
  },
  "warning": "KEEP THIS PRIVATE KEY SECURE! Anyone with this key can access all funds in this wallet.",
  "recovery": "To import in Phantom: Settings > Security > Show Secret Recovery Phrase > Import Private Key"
}
KEEP THIS SECURE! Anyone with this private key can control the wallet and access all funds.

wallet_disconnect

Disconnect the wallet and end the current session. No Parameters Required Example:
{
  "tool": "wallet_disconnect"
}
Response:
{
  "success": true,
  "data": {
    "message": "Session ended",
    "walletAddress": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr"
  }
}

wallet_connect (Mainnet Only)

Authenticate by submitting a signed challenge. Alternative to wallet_create for connecting an existing external wallet (Phantom, Solflare, etc.).
This tool is mainnet-only. On devnet, use wallet_create which handles authentication automatically.
Prerequisites:
  1. Call session_auth first to get a challenge message
  2. Sign the message with your wallet
Parameters:
ParameterTypeRequiredDescription
walletAddressstringYesWallet public address
signaturestringYesSignature of the challenge message (base64 or hex)
noncestringYesChallenge nonce from session_auth
Example:
{
  "tool": "wallet_connect",
  "params": {
    "walletAddress": "YOUR_WALLET_ADDRESS",
    "nonce": "a1b2c3d4e5f6...",
    "signature": "BASE64_SIGNATURE_HERE"
  }
}
Response:
{
  "success": true,
  "data": {
    "walletAddress": "YOUR_WALLET_ADDRESS",
    "sessionToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "isNewSession": true,
    "expiresAt": "2025-02-13T10:15:30Z",
    "conversationCount": 0,
    "orderCount": 0,
    "isProvider": false
  }
}

Security

AspectImplementation
EncryptionAES-256-GCM + PBKDF2 (600k iterations)
SigningAll transactions signed automatically by session wallet
Rate Limiting100 requests/minute per wallet
Amount LimitsSOL: 100 max, USDC/ATHR: 10,000 max per transaction
PersistenceEncrypted wallets stored across sessions

Next Steps