{
  "id": "surf.exchange.markets",
  "object": "tool",
  "name": "Exchange Trading Pairs",
  "summary": "Returns trading pairs available on an exchange.",
  "description": "Returns trading pairs available on an exchange. Filters: type (spot, swap, future, option) or free-text search. Included fields: pair name, base/quote currencies, market type, active status, and default fee rates. Use the returned pair values as the pair parameter in other exchange endpoints.\n\nRaw surf#exchange/markets endpoint: input is { body, queryParams, pathParams } as the provider documents them (https://docs.asksurf.ai/data-api/exchange/markets).",
  "category": "lookup",
  "hosted_by": "Surf",
  "runtime": "partner",
  "side_effects": false,
  "status": "live",
  "credits": 0,
  "price": null,
  "providers": [
    {
      "id": "surf",
      "name": "Surf",
      "price": null,
      "own_key_only": true
    }
  ],
  "mcp_name": "surf_exchange_markets",
  "input_schema": {
    "type": "object",
    "properties": {
      "queryParams": {
        "type": "object",
        "properties": {
          "exchange": {
            "default": "binance",
            "type": "string",
            "enum": [
              "binance",
              "okx",
              "bybit",
              "bitget",
              "coinbase",
              "kraken",
              "gate",
              "htx",
              "kucoin",
              "mexc",
              "upbit",
              "bitfinex",
              "bitstamp",
              "deribit",
              "bitmex",
              "bithumb",
              "hyperliquid"
            ],
            "description": "Exchange identifier. Defaults to binance. Pass a specific venue to list that exchange only."
          },
          "type": {
            "type": "string",
            "enum": [
              "spot",
              "swap",
              "future",
              "option",
              "perpetual",
              "perp"
            ],
            "description": "Market type filter. Use perpetual or perp for perpetual contracts (alias for swap). Example: spot."
          },
          "base": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by base currency. Example: ETH."
          },
          "quote": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by quote currency. Example: USDT."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Fuzzy search in pair/base/quote. Example: ETH."
          },
          "limit": {
            "default": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 5000,
            "description": "Max results. Example: 100. Defaults to 100."
          }
        },
        "additionalProperties": false
      }
    },
    "required": [],
    "additionalProperties": false
  },
  "kind": "endpoint"
}