{
  "name": "thorchain-swap",
  "description": "Read-only THORChain quote, liquidity-pool, and network-status tools. The server never holds keys, signs, or submits transactions.",
  "version": "0.4.1",
  "serverInfo": {
    "name": "thorchain-swap",
    "title": "THORChain Swap",
    "version": "0.4.1"
  },
  "protocolVersion": "2025-06-18",
  "serverUrl": "https://swap.thorchain.org/mcp",
  "endpoint": "https://swap.thorchain.org/mcp",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://swap.thorchain.org/mcp"
  },
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://swap.thorchain.org/mcp"
    }
  ],
  "authentication": {
    "type": "none"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": {
      "listChanged": false,
      "subscribe": false
    }
  },
  "tools": [
    {
      "name": "get_swap_quote",
      "title": "Get Swap Quote",
      "description": "Fetch a THORChain swap quote for an asset pair. Assets use CHAIN.SYMBOL notation (e.g. BTC.BTC, ETH.ETH, ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48). Amount is in 1e8 base units (1 BTC = 100000000). Quotes are indicative and expire quickly; the returned memo and inbound address must not be reused after expiry.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "from_asset",
          "to_asset",
          "amount"
        ],
        "properties": {
          "from_asset": {
            "type": "string",
            "description": "Source asset, e.g. BTC.BTC"
          },
          "to_asset": {
            "type": "string",
            "description": "Destination asset, e.g. ETH.ETH"
          },
          "amount": {
            "type": "string",
            "description": "Amount to swap in 1e8 base units"
          },
          "destination": {
            "type": "string",
            "description": "Optional destination address; required for a quote with a usable memo"
          },
          "streaming_interval": {
            "type": "string",
            "description": "Optional streaming swap interval in blocks"
          }
        },
        "additionalProperties": false
      },
      "_meta": {
        "ui": {
          "resourceUri": "ui://thorchain-swap/swap-quote",
          "visibility": [
            "model",
            "app"
          ]
        }
      }
    },
    {
      "name": "list_pools",
      "title": "List Liquidity Pools",
      "description": "List THORChain liquidity pools with status, depths (1e8 base units), and USD asset price. Filter by pool status or by chain/asset to avoid pulling the full list.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      },
      "inputSchema": {
        "type": "object",
        "required": [],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "Available",
              "Staged",
              "Suspended"
            ],
            "description": "Only return pools in this state. Available pools are the tradable ones."
          },
          "asset": {
            "type": "string",
            "description": "Case-insensitive filter on the pool asset. A bare chain returns that chain only (ETH matches every ETH.* pool, not BASE.ETH); a CHAIN.SYMBOL value matches by prefix, so BTC.BTC returns one pool and ETH.USDC finds the contract-suffixed pool."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Maximum number of pools to return, largest RUNE depth first. Omit to return every match."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_network_status",
      "title": "Get Network Status",
      "description": "Return current THORChain network parameters, including outbound fees, bond and reserve totals, and halt-related gas information. Pass `fields` to return only the keys you need.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      },
      "inputSchema": {
        "type": "object",
        "required": [],
        "properties": {
          "fields": {
            "type": "array",
            "description": "Subset of top-level keys to return, e.g. [\"native_outbound_fee_rune\", \"outbound_fee_multiplier\"]. Omit for the full object.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 40
          }
        },
        "additionalProperties": false
      }
    }
  ],
  "resources": [
    {
      "uri": "ui://thorchain-swap/swap-quote",
      "name": "swap_quote_view",
      "title": "Swap Quote View",
      "description": "Renders a THORChain swap quote: expected output, fees, slippage, memo, inbound address, and expiry.",
      "mimeType": "text/html;profile=mcp-app"
    }
  ],
  "documentation": "https://swap.thorchain.org/AGENTS.md"
}