Skip to main content
Glama
Liquidiction

Liquidiction

by Liquidiction
README.md
# Liquidiction MCP Server

Read-only HIP-4 prediction-market tools for MCP-compatible agents. The server connects directly to Hyperliquid's public API. No API keys, wallet connection or signing permissions are required.

## Install

Requires Node.js 20 or newer and npm.

```bash
git clone https://github.com/Liquidiction/liquidiction-mcp.git
cd liquidiction-mcp
npm ci
npm start
```

This is a stdio MCP server, so `npm start` waits for an MCP client rather than opening a website. Mainnet is the default. Set `HL_API_URL=https://api.hyperliquid-testnet.xyz` only when you want testnet data.

Existing installations: run `git pull --ff-only`, `npm ci`, then restart your MCP client.

## Connect a client

After installing dependencies, configure your client with absolute paths:

```json
{
  "mcpServers": {
    "liquidiction": {
      "command": "node",
      "args": [
        "/absolute/path/liquidiction-mcp/node_modules/tsx/dist/cli.mjs",
        "/absolute/path/liquidiction-mcp/mcp-server.ts"
      ],
      "env": {
        "HL_API_URL": "https://api.hyperliquid.xyz"
      }
    }
  }
}
```

This uses the installed runtime and works even when the client's working directory is elsewhere. On Windows, use paths such as `C:/Users/you/liquidiction-mcp/mcp-server.ts` and the corresponding `node_modules/tsx/dist/cli.mjs` path. Restart the client after changing its configuration.

For Claude Code:

```bash
claude mcp add liquidiction -- node /absolute/path/liquidiction-mcp/node_modules/tsx/dist/cli.mjs /absolute/path/liquidiction-mcp/mcp-server.ts
```

For clients that launch from the repository directory, `npx tsx mcp-server.ts` also works.

## Tools

| Tool | Input | Result |
|---|---|---|
| `list_markets` | None | Active outcomes, selections, venues and prices |
| `get_market_detail` | `outcome_id` | Metadata, venue, selections and side prices |
| `get_market_summary` | None | Market overview and available settlement metadata |
| `get_orderbook` | `outcome_id`, optional `side` | Top bids, asks and spread |
| `get_prices` | None | Current outcome mid-prices |
| `get_candles` | `coin`, optional `interval`, optional `hours` | OHLCV history |
| `get_recent_trades` | `coin` | Recent public trades for the selected outcome side |
| `get_user_fills` | `address`, optional `limit` | Recent public HIP-4 fills for a wallet |
| `get_open_orders` | `address` | Public resting HIP-4 orders |
| `get_user_positions` | `address` | Positions, venues, selections, held shares and mark values |

Outcome API requests use `#N`. Explicit coin inputs also accept `+N`, legacy `@N` and bare numeric aliases and normalize them to `#N`. Wallet balances returned as `+N` retain their raw coin and also expose the canonical `#N` identifier. Ordinary spot `@N` rows are not classified as outcome holdings or fills.

## Cross-deployer positions

Ask your agent:

> Show the HIP-4 positions for this wallet, including venue, team, total shares and held shares. Compare positions on the same fixture without merging their contracts.

`get_user_positions` returns JSON text with `address`, `fetchedAt`, `source`, a snapshot note and a `positions` array. Each row includes:

- `coin`, `rawCoin`, `outcomeId`, `side`, `venue` and deployer address.
- Market and selection labels resolved from the contract metadata when available.
- `shares`, the original `total` string, `heldShares` and `unheldShares`.
- `markPrice` and `markedValue`, or `null` when a valid mark is unavailable.
- Available contract timing, result source and counted-play fields, plus raw descriptions.

Do not assume side 0 means the same team across venues. Outcome and trade.xyz can list a fixture in opposite participant order. The tools preserve distinct contracts and their rules; they do not certify equivalence or automatically merge positions.

`unheldShares` is total minus held shares, not a guarantee that an order can execute. Reads are not an atomic snapshot. Marks are estimates, not executable sale quotes. Missing active-market metadata remains `null`; this server does not supply historical metadata for every settled contract.

Supply a known wallet address. This server does not search an index for wallets holding a particular combination of markets.

## Development and verification

```bash
npm ci
npm run typecheck
npm test
```

The regression suite runs offline and covers current balance formats, cross-deployer side reversal, held shares, fractional balances, missing marks, input validation and API errors.

An optional read-only smoke check launches a real MCP stdio client and calls all 10 tools against the configured Hyperliquid network:

```bash
npm run test:live -- 0xff16003f5bc3560daf4b9df62c191831af47387f 1866
```

The example is a live wallet, so holdings can change. If it no longer has positions, choose another wallet and active outcome ID. The check compares MCP holdings against a separate balance read and can fail if the wallet trades between reads. Normal Hyperliquid rate limits apply.

## Links

- [Liquidiction](https://liquidiction.xyz)
- [MCP documentation](https://liquidiction.gitbook.io/liquidiction-docs/developers/mcp-server)
- [X](https://x.com/LiquidictionHL)

MIT licensed. This server never submits trades.

TDQS

A3.5/5.0

Scored across 10 tools

Disambiguation4/5

Each tool targets a distinct data type (candles, market details, orders, etc.) with clear descriptions, though some overlap exists between get_market_detail, get_market_summary, and get_prices. Overall, an agent can distinguish them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'get_' except one using 'list_', which still aligns with a verb+noun convention. No mixing of styles or ambiguous verbs.

Tool Count5/5

10 tools is well-scoped for a read-only prediction market data server. Each tool serves a specific data retrieval need without unnecessary duplication or gaps.

Completeness4/5

The set covers all essential read operations for prediction markets: listing, details, prices, orderbook, user data. Minor gaps exist, such as aggregated market statistics or historical trade summaries, but core workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues