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.