Skip to main content

Choose Your Network

Quick Start Flow

One-Step Setup (All Networks)

wallet_create is the only tool you need to get started. It handles wallet generation, encryption, authentication, and funding (devnet airdrop) in a single call.
1

Create a Wallet

{
  "tool": "wallet_create",
  "params": {
    "airdropSol": 1
  }
}
This single call:
  • Generates a new Solana keypair
  • Encrypts and stores it (persisted across sessions)
  • Auto-authenticates (creates session + JWT token)
  • Airdrops SOL (devnet/testnet only)
Response:
{
  "success": true,
  "data": {
    "address": "8FE27iak4b2yadKoogAPAGN9VnmYYZm8eUF71QhVbgNr",
    "network": "devnet",
    "balances": { "sol": 1.0, "usdc": 0, "athr": 0 },
    "sessionToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "authenticated": true
  }
}
2

Check Your Balance

{
  "tool": "wallet_get_balance"
}
3

Make a Transfer

{
  "tool": "wallet_transfer",
  "params": {
    "to": "RECIPIENT_ADDRESS",
    "amount": 0.5,
    "token": "sol"
  }
}

Production Mode (External Wallet)

For mainnet with your own wallet (Phantom, Solflare, etc.), use the signature authentication flow:
1

Get Authentication Challenge

{
  "tool": "session_auth",
  "params": {
    "walletAddress": "YOUR_WALLET_ADDRESS"
  }
}
Returns a challenge message to sign with your wallet.
2

Sign the Challenge

Use your wallet (Phantom, Solflare, CLI, etc.) to sign the message.
3

Submit Signature

{
  "tool": "wallet_connect",
  "params": {
    "walletAddress": "YOUR_WALLET_ADDRESS",
    "nonce": "CHALLENGE_NONCE",
    "signature": "BASE64_SIGNATURE"
  }
}
Returns a JWT session token. You’re authenticated!
wallet_connect is mainnet-only. On devnet, use wallet_create which handles everything automatically.

Example: Complete Dev Flow

// 1. Create wallet (generates + authenticates + airdrops in one call)
const wallet = await mcp.call('wallet_create', {
  airdropSol: 1,
  label: 'my-test-wallet'
});
console.log('Wallet:', wallet.data.address);
console.log('Token:', wallet.data.sessionToken);

// 2. Check balance
const balance = await mcp.call('wallet_get_balance');
console.log('SOL:', balance.data.balances.sol);
console.log('USDC:', balance.data.balances.usdc);

// 3. Transfer tokens
const transfer = await mcp.call('wallet_transfer', {
  to: 'RECIPIENT_ADDRESS',
  amount: 0.5,
  token: 'sol'
});
console.log('Transaction:', transfer.data.signature);

// 4. Create a payment header (x402)
const payment = await mcp.call('payment_create', {
  to: 'MERCHANT_ADDRESS',
  amount: 10,
  token: 'usdc'
});
console.log('Payment Header:', payment.data.paymentHeader);

Example: Production Flow

For mainnet with your own wallet:
// 1. Get challenge
const challenge = await mcp.call('session_auth', {
  walletAddress: 'YOUR_WALLET'
});

// 2. Sign challenge with your wallet
// (Use Phantom, Solflare, or Solana CLI)
const signature = await wallet.signMessage(challenge.data.message);

// 3. Authenticate
const auth = await mcp.call('wallet_connect', {
  walletAddress: 'YOUR_WALLET',
  nonce: challenge.data.nonce,
  signature: signature
});

// Store the session token for future requests
const sessionToken = auth.data.sessionToken;

// 4. Now use any authenticated tool
const balance = await mcp.call('wallet_get_balance');

MCP Client Examples

Claude Desktop

Add to your claude_desktop_config.json:
{
  "mcpServers": {
    "aether-devnet": {
      "url": "https://mcp-devnet.getaether.xyz/mcp"
    }
  }
}

Cursor

  1. Open Settings > MCP
  2. Add new server:
    • Name: Aether Devnet
    • URL: https://mcp-devnet.getaether.xyz/mcp
  3. Click “Test Connection”

Continue

Add to .continue/config.json:
{
  "mcpServers": [
    {
      "name": "aether-devnet",
      "url": "https://mcp-devnet.getaether.xyz/mcp"
    }
  ]
}

Common Operations

{ "tool": "wallet_get_balance" }
{
  "tool": "wallet_transfer",
  "params": {
    "to": "RECIPIENT_ADDRESS",
    "amount": 0.5,
    "token": "sol"
  }
}
{
  "tool": "payment_create",
  "params": {
    "to": "MERCHANT_ADDRESS",
    "amount": 10,
    "token": "usdc",
    "validFor": 3600
  }
}
{
  "tool": "wallet_create",
  "params": {
    "restoreAddress": "YOUR_PREVIOUS_WALLET_ADDRESS"
  }
}

Next Steps

Troubleshooting

  • Check your network connection
  • Verify the endpoint URL is correct
  • Ensure your MCP client supports HTTP transport
  • Verify you signed the exact challenge message
  • Check signature format (should be base64)
  • Ensure wallet address matches the one used for challenge
  • On devnet: Use wallet_create with airdropSol parameter
  • On mainnet: Fund your wallet with SOL/USDC
  • Marketplace tools (provider/consumer) are mainnet-only
  • wallet_connect is mainnet-only (use wallet_create on devnet)
  • Check the tool name spelling