Koskamo

TorrentSwap MCP

An official MCP server provided by TorrentSwap that enables AI agents to perform no-account, cross-chain cryptocurrency swaps. It allows agents to list assets, get live quotes, validate addresses, create swaps, and track status across multiple networks and protocols without requiring API keys or user accounts.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

TorrentSwap MCP logo, by TorrentSwapVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by TorrentSwap
MCP endpoint (Streamable HTTP)
https://torrentswap.com/mcp
Vendor documentation

What you can do with it

  • List all supported swappable assets and their IDs
  • Get live cross-chain quotes ranked by amount received
  • Validate destination and refund addresses for specific networks
  • Create swaps and track their status from deposit to completion

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
torrentswap 1.1.0
MCP protocol
2025-06-18
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

TorrentSwap swaps crypto across chains without an account (BTC, ETH, SOL, USDT, USDC, TRX, ZEC, LTC, DOGE and more, on 17 networks). Fees: all included in every quote. Flow: 1. list_assets to get asset ids (e.g. "bitcoin-btc", "ethereum-eth", "tron-usdt"). 2. get_quote with sellAssetId, buyAssetId and sellAmount (a decimal string in the sell asset's units). Routes are ranked by amount received; each names the protocol that executes it. 3. Show the user the route (protocol, expectedReceive, minimumReceived, estimated time). Ask the user for the destination address (network of the buy asset) and a refund address (network of the sell asset); never invent or guess addresses. Use validate_address if unsure. 4. Only after the user confirms, call create_swap with the chosen quoteToken within ~2 minutes of quoting. It returns a one-time depositAddress. 5. The USER sends exactly sellAmount of the sell asset to depositAddress in ONE transaction before expiresAt. Never ask for private keys or seed phrases; you do not move funds yourself. 6. get_swap_status with the swapId to follow progress (awaiting_deposit → confirming → exchanging → sending → completed, or refunded / expired).

Tools

6 advertised

list_assets — List swappable assets
Advertised by the server during the last successful anonymous check.
Advertised read-only

List assets TorrentSwap can swap, with the id to use in get_quote, ticker, network and decimals. Any two different assets can be swapped. Optional query/network filters.

list_assets input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Optional filter by ticker or name, e.g. \"usdt\" or \"bitcoin\"."
    },
    "network": {
      "type": "string",
      "description": "Optional filter by network id or name, e.g. \"tron\" or \"solana\"."
    }
  },
  "additionalProperties": false
}
list_assets annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_providers — List swap providers
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the cross-chain protocols TorrentSwap routes through (NEAR Intents, Chainflip, Flashnet, THORChain, Pact Swap and more), with how each executes and how it holds funds. Use the ids to filter get_quote.

list_providers input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_providers annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_quote — Get cross-chain swap quotes
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get live quotes for swapping one asset to another (cross-chain or same-chain). Returns routes ranked by amount received, each with a quoteToken, the executing protocol, expectedReceive, minimumReceived and estimated time. All fees (network, protocol and platform) are included.

get_quote input schema
{
  "type": "object",
  "required": [
    "sellAssetId",
    "buyAssetId",
    "sellAmount"
  ],
  "properties": {
    "slippage": {
      "type": "number",
      "maximum": 5,
      "minimum": 0.1,
      "description": "Maximum slippage in percent. Default 1.5."
    },
    "providers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Optional: only return routes from these provider ids, e.g. [\"NEAR\", \"FLASHNET\"]. From list_providers."
    },
    "buyAssetId": {
      "type": "string",
      "description": "Asset to receive, e.g. \"ethereum-eth\". From list_assets."
    },
    "sellAmount": {
      "type": "string",
      "description": "Amount to send as a decimal string in the sell asset's units, e.g. \"0.05\"."
    },
    "sellAssetId": {
      "type": "string",
      "description": "Asset to send, e.g. \"bitcoin-btc\". From list_assets."
    }
  },
  "additionalProperties": false
}
get_quote annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
validate_address — Validate a wallet address
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check that an address is valid for the network of an asset before creating a swap (checksums included). Returns the canonical form.

validate_address input schema
{
  "type": "object",
  "required": [
    "assetId",
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Address to check."
    },
    "assetId": {
      "type": "string",
      "description": "Asset the address will receive, e.g. \"tron-usdt\". Determines the network."
    }
  },
  "additionalProperties": false
}
validate_address annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
create_swap — Create a swap (deposit address)
Advertised by the server during the last successful anonymous check.
Open-world

Create a swap from a quoteToken returned by get_quote. Returns a one-time depositAddress, the exact amount to send, expiresAt and a swapId for tracking. Only call after the user confirmed the route and both addresses. The swap only happens when the user sends the funds. Repeating the call with the same quoteToken and addresses returns the same deposit address.

create_swap input schema
{
  "type": "object",
  "required": [
    "quoteToken",
    "destinationAddress",
    "refundAddress"
  ],
  "properties": {
    "quoteToken": {
      "type": "string",
      "description": "quoteToken of the chosen route (valid for about 2 minutes)."
    },
    "refundAddress": {
      "type": "string",
      "description": "Address on the sell asset's network that receives a refund if the swap cannot complete."
    },
    "destinationAddress": {
      "type": "string",
      "description": "Address that receives the bought asset, on the buy asset's network."
    }
  },
  "additionalProperties": false
}
create_swap annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_swap_status — Check swap status
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Check the progress of a swap by swapId: awaiting_deposit, confirming, exchanging, sending, completed, refunded, failed or expired.

get_swap_status input schema
{
  "type": "object",
  "required": [
    "swapId"
  ],
  "properties": {
    "swapId": {
      "type": "string",
      "description": "swapId returned by create_swap."
    }
  },
  "additionalProperties": false
}
get_swap_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
967 ms
95th percentile latency
967 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 967 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http torrentswap-mcp https://torrentswap.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add torrentswap-mcp --url https://torrentswap.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable torrentswap-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "torrentswap-mcp": {
      "url": "https://torrentswap.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "torrentswap-mcp": {
      "type": "streamableHttp",
      "url": "https://torrentswap.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start torrentswap-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "torrentswap-mcp": {
      "type": "http",
      "url": "https://torrentswap.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http torrentswap-mcp https://torrentswap.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "torrentswap-mcp": {
      "url": "https://torrentswap.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "torrentswap-mcp": {
      "serverUrl": "https://torrentswap.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like TorrentSwap MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run TorrentSwap MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing