Quick Start

The JSON-RPC endpoint provides reliable access to cryptocurrency data for AI agents and custom applications. Endpoint: https://mcp.coinpaprika.com/json-rpc

Basic Usage

Search for cryptocurrencies

curl -X POST 'https://mcp.coinpaprika.com/json-rpc' \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "search",
      "arguments": {
        "q": "bitcoin",
        "limit": 5
      }
    }
  }'

Response Format

Results are returned in result.content[0].text as stringified JSON:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"data\": \"...\"}"
      }
    ]
  }
}

Error Handling

The MCP server returns standard JSON-RPC error codes. Upstream HTTP statuses may map to messages like 400/402/403/429. Inspect the JSON-RPC error.message field for specific error details.

Best Practices

  • Implement caching to reduce redundant requests
  • Use reasonable retry policies with jitter for network resilience
  • Handle errors gracefully with proper fallback mechanisms
  • Consider batching multiple requests when possible

Available Tools

To discover all available tools, use the tools/list method:
curl -X POST 'https://mcp.coinpaprika.com/json-rpc' \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/list",
    "params": {}
  }'

Tool Call Structure

All tools follow this structure:
FieldDescriptionExample
nameTool name"search"
argumentsTool-specific parameters{"q": "bitcoin", "limit": 5}

Available Tools

ToolDescriptionArgumentsExample
getGlobalMarket overviewnone{}
getCoinsList coinslimit: number (50){"limit": 25}
getCoinByIdCoin detailscoinId: string{"coinId": "btc-bitcoin"}
getCoinEventsEvents for a coincoinId: string; limit: number (50){"coinId": "btc-bitcoin", "limit": 10}
getCoinExchangesExchanges for a coincoinId: string; limit: number (50){"coinId": "btc-bitcoin", "limit": 10}
getCoinMarketsMarkets for a coincoinId: string; quotes: string; limit: number (50){"coinId": "btc-bitcoin", "quotes": "usd,btc", "limit": 10}
getTickersAll tickersquotes: string; limit: number (50){"quotes": "usd", "limit": 10}
getTickersByIdTicker for coincoinId: string; quotes: string{"coinId": "btc-bitcoin", "quotes": "usd"}
getPeopleByIdPerson detailspersonId: string{"personId": "satoshi-nakamoto"}
getTagsList tagsadditionalFields: string; limit: number (50){"additionalFields": "id,name", "limit": 10}
getTagByIdTag detailstagId: string; additionalFields: string{"tagId": "defi"}
getExchangesList exchangesquotes: string; limit: number (50){"quotes": "usd", "limit": 10}
getExchangeByIDExchange detailsexchangeId: string; quotes: string{"exchangeId": "binance", "quotes": "usd"}
getExchangeMarketsMarkets on exchangeexchangeId: string; quotes: string; limit: number (50){"exchangeId": "binance", "quotes": "usd", "limit": 10}
getPlatformsList contract platformslimit: number (50){"limit": 10}
getContractsContracts for a platformplatformId: string; limit: number (50){"platformId": "eth-ethereum", "limit": 10}
getTickerByContractTicker by contract addressplatformId: string; contractAddress: string{"platformId": "eth-ethereum", "contractAddress": "0x..."}
priceConverterConvert base to quotebaseCurrencyId: string; quoteCurrencyId: string; amount: number (0){"baseCurrencyId": "btc-bitcoin", "quoteCurrencyId": "usd", "amount": 1}
searchSearch currencies, exchanges, icos, people, tagsq: string; categories: string; modifier: string; limit: number (50){"q": "btc", "categories": "currencies,exchanges", "modifier": "symbol", "limit": 5}

Call Pattern Template

curl -sS -X POST 'https://mcp.coinpaprika.com/json-rpc' \
  -H 'content-type: application/json' \
  --data '{
    "jsonrpc":"2.0",
    "id":1,
    "method":"tools/call",
    "params":{"name":"<TOOL>","arguments":{ /* see table */ }}
  }'

What’s Next?

Need Help?