Mantis

Cross-venue prediction market routing for AI agents with arbitrage, quotes, history, and signals.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
93%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,074Tokens (tool definitions)
~1.5 KBTypical response size
Moderate attention impact (0.84% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mantis": {
      "url": "https://prediction-router-chi.vercel.app/mcp"
    }
  }
}

Remote endpoints

https://prediction-router-chi.vercel.app/mcpstreamable-http
https://mantiss.store/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

๐ŸŸข Read-only๐ŸŸก Write๐Ÿ”ด Deleteโšช Unknown
๐ŸŸขroute_market(q)

Find the best prediction market for a natural-language question or trading intent. Returns the best cross-venue match, current probability, liquidity, and any arbitrage opportunity between venues.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Natural language question or trading intent, e.g. \"Will BTC reach $200k in 2025?\" or \"Fed rate cut September\""
    }
  },
  "required": [
    "q"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
๐ŸŸขget_arbitrage(min_spread_pct, include_fees, position_size, venue_a, venue_b)

Find live cross-venue arbitrage opportunities โ€” markets where the same event trades at different prices on Polymarket vs Kalshi vs other venues. Can also estimate fee-normalized net spread for a position size.

Input Schema

{
  "type": "object",
  "properties": {
    "min_spread_pct": {
      "default": 4,
      "description": "Minimum spread in percentage points (default 4 = 4ยข)",
      "type": "number",
      "minimum": 1,
      "maximum": 50
    },
    "include_fees": {
      "default": false,
      "description": "Whether to include estimated fee/friction normalization",
      "type": "boolean"
    },
    "position_size": {
      "default": 0,
      "description": "USD position size used for fee/slippage estimation",
      "type": "number",
      "exclusiveMinimum": 0
    },
    "venue_a": {
      "description": "Optional venue filter for one side of the arbitrage pair, e.g. polymarket",
      "type": "string"
    },
    "venue_b": {
      "description": "Optional venue filter for the other side of the arbitrage pair, e.g. kalshi",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
๐ŸŸขexecute_url(market_id, canonical_id, side, amount, source, ...)

Get a deep link URL to place a trade on the best venue for a given market. The URL has a referral code embedded so the platform earns commission. Call this to get the URL, then direct the user to open it.

Input Schema

{
  "type": "object",
  "properties": {
    "market_id": {
      "description": "Platform-specific market ID (e.g. \"polymarket-abc123\")",
      "type": "string"
    },
    "canonical_id": {
      "description": "Cross-venue canonical market ID",
      "type": "string"
    },
    "side": {
      "default": "unknown",
      "description": "Which side to trade",
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "amount": {
      "description": "USD amount to trade (for tracking)",
      "type": "number",
      "exclusiveMinimum": 0
    },
    "source": {
      "default": "direct",
      "description": "Tool path that produced this execution intent",
      "type": "string",
      "enum": [
        "direct",
        "route",
        "quote",
        "arbitrage",
        "webhook"
      ]
    },
    "route_query": {
      "description": "Original route_market query when source is route",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
๐ŸŸขget_quote(market_id, canonical_id, size)

Get the live probability, liquidity, and volume for a prediction market across all venues. Can also return venue order book depth and size-aware VWAP/slippage estimates.

Input Schema

{
  "type": "object",
  "properties": {
    "market_id": {
      "description": "Platform-specific market ID",
      "type": "string"
    },
    "canonical_id": {
      "description": "Cross-venue canonical market ID",
      "type": "string"
    },
    "size": {
      "default": 0,
      "description": "USD size for YES-buy VWAP/slippage estimation",
      "type": "number",
      "exclusiveMinimum": 0
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
๐ŸŸขget_history(market_id, canonical_id, venue, from, to, ...)

Get historical OHLCV-style prediction market candles over a time range, including the latest stored depth snapshot within each bucket when available. Can also export CSV text or base64-encoded Parquet.

Input Schema

{
  "type": "object",
  "properties": {
    "market_id": {
      "description": "Platform-specific market ID",
      "type": "string"
    },
    "canonical_id": {
      "description": "Cross-venue canonical market ID",
      "type": "string"
    },
    "venue": {
      "description": "Venue filter, e.g. polymarket or kalshi",
      "type": "string"
    },
    "from": {
      "type": "string",
      "description": "Inclusive ISO 8601 start timestamp"
    },
    "to": {
      "type": "string",
      "description": "Inclusive ISO 8601 end timestamp"
    },
    "granularity": {
      "default": "1d",
      "description": "Bucket size for history candles",
      "type": "string",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ]
    },
    "format": {
      "default": "json",
      "description": "Return JSON candles, CSV text payload, or base64-encoded Parquet payload",
      "type": "string",
      "enum": [
        "json",
        "csv",
        "parquet"
      ]
    }
  },
  "required": [
    "from",
    "to"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
๐ŸŸขget_unmet_demand(days, limit)

Find questions that users are searching for but no prediction market exists. Useful for discovering new market creation opportunities or identifying emerging topics with real trading interest.

Input Schema

{
  "type": "object",
  "properties": {
    "days": {
      "default": 7,
      "description": "Lookback window in days (default 7)",
      "type": "integer",
      "minimum": 1,
      "maximum": 90
    },
    "limit": {
      "default": 20,
      "description": "Max results (default 20)",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools