Skip to content

Examples

These examples show raw JSON-RPC requests and responses. In practice, your MCP client handles this protocol automatically — you just ask questions in natural language.

Initialize the connection

Every MCP session starts with a handshake:

// Request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-03-26",
    "capabilities": {},
    "clientInfo": { "name": "my-client", "version": "1.0.0" }
  }
}
// Response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2025-03-26",
    "capabilities": { "tools": {} },
    "serverInfo": { "name": "vike-mcp", "version": "1.0.0" }
  }
}

Search for a token

// Request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "token_search",
    "arguments": { "query": "PEPE" }
  }
}
// Response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "[{\"symbol\": \"PEPE\", \"name\": \"Pepe\", \"chain\": \"ethereum\", \"address\": \"0x69...\", \"price_usd\": 0.0000123}]"
      }
    ],
    "isError": false
  }
}

Get wallet activity

// Request
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "wallet_summary",
    "arguments": {
      "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
      "window": "7d"
    }
  }
}
// Response
{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"address\": \"0xd8dA...\", \"volume_usd\": 1250000.50, \"inflow_usd\": 800000.00, \"outflow_usd\": 450000.50, \"net_flow_usd\": 349999.50, \"tx_count\": 42, \"tokens_traded\": 8}"
      }
    ],
    "isError": false
  }
}

Check funding rates

// Request
{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "perp_funding",
    "arguments": {
      "symbol": "ETH",
      "exchange": "all"
    }
  }
}

Discover top wallets

// Request
{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "wallet_discover",
    "arguments": {
      "metric": "pnl",
      "window": "7d",
      "limit": 10
    }
  }
}

Error: rate limit exceeded

// Response
{
  "jsonrpc": "2.0",
  "id": 6,
  "error": {
    "code": -32000,
    "message": "Hourly rate limit exceeded"
  }
}

Error: invalid API key

// Response
{
  "jsonrpc": "2.0",
  "id": 7,
  "error": {
    "code": -32000,
    "message": "Invalid or missing API key"
  }
}

Natural language usage

Once connected, you don't write JSON — you ask your AI assistant questions:

  • "Search for PEPE token" → calls token_search
  • "Show me the top wallets by PnL this week" → calls wallet_discover
  • "What's the funding rate for ETH across exchanges?" → calls perp_funding
  • "Who's been buying LINK in the last 24 hours?" → calls token_transfers
  • "Show me Bitcoin options flow for the past week" → calls options_flow

The AI assistant picks the right tool, fills in parameters, and presents the results.