ToolAssay

Use when an agent wants a ranked list of the most mispriced liquid prediction ma

Use when an agent wants a ranked list of the most mispriced liquid prediction markets on Hyperliquid right now, across all crypto and tokenized-stock binary price markets, in one call. Each row has model probability vs bid/ask, edge in pp, spread, depth and book age; empty and illiquid books are filtered out. For scanners, trading agents and daily briefings. Errors: 400 bad params, 404 no books (free, never charged), 402, 502. Data, not advice.

Answeringour last check, 2026-10-18
1 of 1checks answered this week
29 msmedian answer time
$0.05listed price per call
$0.05price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

GET https://perp-gap-api.perpgap.workers.dev/pm/scan

CategoryMarket data
Provider hostperp-gap-api.perpgap.workers.dev
Networkseip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-18 valid payment request 402$0.05 29 ms

Example input (from the provider)

{
  "method": "GET",
  "queryParams": {
    "max_spread_pp": "10",
    "min_edge_pp": "2"
  },
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET"
          ],
          "type": "string"
        },
        "queryParams": {
          "additionalProperties": false,
          "properties": {
            "kind": {
              "default": "all",
              "description": "Optional: crypto (BTC, ETH, HYPE, ZEC), stocks (trade.xyz stock, index and commodity perps) or all.",
              "enum": [
                "crypto",
                "stocks",
                "all"
              ],
              "examples": [
                "all"
              ],
              "type": "string"
            },
            "limit": {
              "default": "20",
              "description": "Optional max rows, 1-50. Default 20.",
              "examples": [
                "10"
              ],
              "pattern": "^\\d{1,2}$",
              "type": "string"
            },
            "max_spread_pp": {
              "default": "10",
              "description": "Optional maximum bid-ask spread in percentage points. Default 10.",
              "examples": [
                "10"
              ],
              "pattern": "^\\d+(\\.\\d+)?$",
              "type": "string"
            },
            "min_depth_usd": {
              "default": "50",
              "description": "Optional minimum USDC depth within 5 pp of the touch on BOTH sides. Default 50.",
              "examples": [
                "100"
              ],
              "pattern": "^\\d+(\\.\\d+)?$",
              "type": "string"
            },
            "min_edge_pp": {
              "default": "2",
              "description": "Optional minimum edge in percentage points (model vs executable bid/ask). Default 2.",
              "examples": [
                "3"
              ],
              "pattern": "^-?\\d+(\\.\\d+)?$",
              "type": "string"
            }
          },
          "required": [],
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "description": "Error responses are JSON {error: string}: 400 bad min_edge_pp / max_spread_pp / min_depth_usd / limit / kind (free); 404 order-book cache empty (free, never charged); 402 payment required; 502 upstream error.",
          "properties": {
            "cache_updated_iso": {
              "type": "string"
            },
            "closest": {
              "description": "Only when rows is empty: the 3 liquid markets closest to min_edge_pp",
              "items": {
                "properties": {
                  "ask": {
                    "description": "Best Yes ask (probability, 0-1)",
                    "type": "number"
                  },
                  "ask_size": {
                    "type": "number"
                  },
                  "asset": {
                    "type": "string"
                  },
                  "best_edge_pp": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "bid": {
                    "description": "Best Yes bid (probability, 0-1)",
                    "type": "number"
                  },
                  "bid_size": {
                    "type": "number"
                  },
                  "book_age_s": {
                    "type": "integer"
                  },
                  "book_ts": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "depth_usd": {
                    "description": "USDC notional resting within window_pp of the touch, top 5 levels",
                    "properties": {
                      "ask": {
                        "type": "number"
                      },
                      "bid": {
                        "type": "number"
                      },
                      "levels": {
                        "type": "integer"
                      },
                      "window_pp": {
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "edge_vs_ask_pp": {
                    "description": "(model_prob - ask) x 100: > 0 means you could buy Yes below model value",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "edge_vs_bid_pp": {
                    "description": "(bid - model_prob) x 100: > 0 means you could sell Yes above model value",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "expiry": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "hours_to_expiry": {
                    "type": "number"
                  },
                  "kind": {
                    "enum": [
                      "crypto",
                      "stocks"
                    ],
                    "type": "string"
                  },
                  "liquid": {
                    "description": "spread <= 10 pp (scan: max_spread_pp) and >= $50 depth on both sides (scan: min_depth_usd)",
                    "type": "boolean"
                  },
                  "mid": {
                    "type": "number"
                  },
                  "model_prob": {
                    "description": "Model P(price > strike at expiry), 0-1",
                    "type": [
                      "number",
                      "null"
     

This page as JSON