> ## Documentation Index
> Fetch the complete documentation index at: https://docs.everstrike.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Everstrike MCP Server: Live Market Data for AI Clients

> Connect any MCP-capable AI client to live Everstrike market data. Works with Claude Desktop, Cursor, or custom apps. Read-only, public, no signup required.

The Everstrike MCP server connects any MCP-capable AI client to live exchange data. It exposes prices, order books, recent trades, candlestick history, funding rates, and exchange status as tools that an AI model can call during a conversation. Instead of guessing at market conditions, your assistant fetches the real answer. The server is read-only and requires no account or API key.

> [!NOTE]
>
> This server exposes **public market data only**. No tool can place, modify, or cancel orders, and no tool reads your account. Connecting this server cannot move your funds.

## Quick Start

**1. No setup required**

The Everstrike MCP server is public and requires no API key, account, or signup. The server URL is:

```text theme={"dark"}
https://mcp.everstrike.xyz/mcp
```

**2. Add the server to your client configuration**

Add the following to your Claude Desktop or Cursor MCP configuration file:

```json theme={"dark"}
{
  "mcpServers": {
    "everstrike": {
      "url": "https://mcp.everstrike.xyz/mcp"
    }
  }
}
```

**3. Restart your client**

Restart Claude Desktop or Cursor. You should see ten `everstrike_*` tools become available in your client.

## cURL Example

The server speaks JSON-RPC over HTTP. Use the following commands to explore available tools and call one:

List all tools:

```bash theme={"dark"}
curl -sX POST https://mcp.everstrike.xyz/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
```

Call a tool (fetch live BTC/USD price):

```bash theme={"dark"}
curl -sX POST https://mcp.everstrike.xyz/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"everstrike_ticker","arguments":{"pairs":["USD_BTC_PERP"]}}}'
```

> [!NOTE]
>
> The `Accept` header must list **both** `application/json` and `text/event-stream`. Omitting either one causes the request to be rejected with a 406 error.

## Market Naming

Everstrike uses a **quote-first** key convention for perpetual markets. The BTC/USD perpetual is `USD_BTC_PERP`, not `BTC_USD_PERP`. Spot markets run base-first, so the ordering depends on the instrument type.

```text theme={"dark"}
USD_BTC_PERP     BTC/USD perpetual
USD_ETH_PERP     ETH/USD perpetual
USDT_USD         USDT/USD spot   (spot is base-first)
```

The server resolves several friendly spellings automatically against the live market list:

| You send | Resolves to |
| - | - |
| `USD_XRP_PERP` | `USD_XRP_PERP` |
| `XRP/USD` | `USD_XRP_PERP` |
| `xrp-usd` | `USD_XRP_PERP` |
| `XRPUSD` | `USD_XRP_PERP` |
| `XRP` | not resolved (ambiguous) |

A bare asset name like `XRP` is ambiguous. The server cannot tell whether you mean the USD perpetual, a spot market, or an option. Send `USD_XRP_PERP` or `XRP/USD` instead. If a market cannot be resolved, the server returns suggestions rather than an error. Use `everstrike_pairs` for the full canonical list of market keys.

## Available Tools

### Prices & Markets

**`everstrike_ticker`**

Live prices: last, mark and index price, plus 24-hour change and volume.

| Parameter | Type | Notes |
| - | - | - |
| `pairs` | string\[] | Up to 6 markets. Omit for a summary of the 25 most-traded markets plus `all_market_keys`. |

Pass `pairs` when you have specific markets in mind to get every field for each one. Omit it to receive a compact summary. The full ticker spans 257 markets of \~50 fields each, so the summary is a deliberate view, not a truncation.

**`everstrike_pairs`**

Every tradable market with tick size, lot size, leverage caps, and contract type. No parameters. This is the canonical reference for market keys.

**`everstrike_assets`**

Supported assets with precision, deposit and withdrawal status, and network information. No parameters.

### Market Depth & Activity

**`everstrike_depth`**

Aggregated bid/ask depth for one market.

| Parameter | Type | Notes |
| - | - | - |
| `pair` | string | **Required.** |

**`everstrike_trades`**

Recent public trades for one market.

| Parameter | Type | Notes |
| - | - | - |
| `pair` | string | **Required.** |

**`everstrike_ohlcv`**

Candlestick history.

| Parameter | Type | Notes |
| - | - | - |
| `pair` | string | **Required.** |
| `interval` | enum | `15s` `1m` `3m` `5m` `15m` `30m` `1h` `2h` `4h` `6h` `24h` `7d` |
| `start` | integer | Unix **milliseconds**. |
| `end` | integer | Unix **milliseconds**. |
| `price` | enum | `mark` (default), `last`, `index`, `all`. |
| `limit` | integer | Default 60 (15 when `price` is `all`), max 500. |

The `price` parameter selects which price series to report:

| `price` | Reports |
| - | - |
| `mark` | Mark price (the default) |
| `last` | Last traded price |
| `index` | Index price |
| `all` | Raw candle with every field, unrenamed |

> [!NOTE]
>
> `start` and `end` are Unix **milliseconds**. A seconds-based timestamp asks for candles from 1970 and returns an empty series without an error. Mark price is the default because on low-volume markets the last traded price can sit unchanged for hours, making a candle series misleading.

**`everstrike_funding`**

Historical funding rates for perpetual markets.

| Parameter | Type | Notes |
| - | - | - |
| `pair` | string | Optional. Omit to retrieve rates for all markets. |

### Exchange

**`everstrike_status`**: Exchange-wide status: uptime, engine health, and maintenance windows. No parameters.

**`everstrike_globals`**: Aggregate statistics: open interest, volume, and user counts. No parameters.

**`everstrike_vault`**: Perpetual vault state: redemption rate, total earnings, and USD supply. No parameters.

## Rate Limits

| Dimension | Limit |
| - | - |
| Requests | 10 per second per IP, bursting to 20 |
| Concurrent connections | 16 per IP |
| Response size | 60,000 characters |

A response that exceeds the size limit is truncated with a note suggesting a narrower request. Truncation removes data from the end, so do not assume the information you need is present in a truncated response. Narrow the request and call again.

## Protocol Details

| Property | Value |
| - | - |
| Transport | Streamable HTTP |
| Protocol version | `2025-06-18` |
| Session | Stateless (no session ID is issued) |
| Response format | JSON |
| Authentication | None |

Because the server is stateless, a bare request works immediately. No `initialize` handshake is required before calling `tools/list` or `tools/call`. Sending an `initialize` is harmless, but it must be its own request. The transport rejects a JSON-RPC batch that contains `initialize` alongside other messages.

Every request must include `Accept: application/json, text/event-stream`. Listing only one of the two types is rejected with a 406.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.