# SwapChan (remote · mcp.swapchan.com)

Cross-chain swap quotes + unsigned txs, plus free wallet, tx, gas, name, approval and yield readers.

- Trust score: 62/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-22

## Components

- remote · `mcp.swapchan.com`: 62/100 (this document), [markdown](https://verifymcp.io/servers/tsavo-swapchan/mcp.md), [page](https://verifymcp.io/servers/tsavo-swapchan/mcp)

## Channel facts

- Endpoint: `https://mcp.swapchan.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-22.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 52/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 4690 tokens (~360/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 90% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 1 category.** A category scored 0 because we could not verify it: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the SwapChan MCP server?

SwapChan is a hosted endpoint at https://mcp.swapchan.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http tsavo-swapchan 'https://mcp.swapchan.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "tsavo-swapchan": {
      "url": "https://mcp.swapchan.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "tsavo-swapchan": {
      "type": "http",
      "url": "https://mcp.swapchan.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.tsavo-swapchan]
url = "https://mcp.swapchan.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tsavo-swapchan": {
      "type": "remote",
      "url": "https://mcp.swapchan.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add tsavo-swapchan --url 'https://mcp.swapchan.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  tsavo-swapchan:
    url: "https://mcp.swapchan.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "tsavo-swapchan": {
      "Transport": "http",
      "Url": "https://mcp.swapchan.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add tsavo-swapchan -t streamable-http -u 'https://mcp.swapchan.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "tsavo-swapchan": {
      "type": "http",
      "url": "https://mcp.swapchan.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-22 (score 62)

First indexed and scored.

## MCP tools (13)

### `get_supported_chains` (~58 tokens)

Supported chains

List the chains SwapChan routes on, each with its chain-chan mascot. Swap-chan says: pick your departure gate! Result includes `display` markdown with chan images and a swapchan.com link: show it to the user.

### `get_supported_tokens` (~171 tokens)

Supported tokens

List tokens SwapChan knows (address, symbol, decimals), optionally for one chain or filtered by symbol/name. Swap-chan keeps the coin purse tidy. Result includes `display` markdown with chan images and a swapchan.com link: show it to the user.

Input parameters:

- `chainId` (integer): Chain id: 1 Ethereum, 8453 Base, 42161 Arbitrum, 10 Optimism, 137 Polygon, 56 BNB Chain, 43114 Avalanche, 59144 Linea, 534352 Scroll, 792703809 Solana, 8253038 Bitcoin, 728126428 Tron. Non-EVM chains…
- `search` (string): Case-insensitive symbol or name filter, e.g. "usdc"

### `get_quote` (~801 tokens)

Best quote

Get SwapChan's single best quote (most value landing in the wallet after gas and fees) for a same-chain or cross-chain swap. Read-only, no transaction. Swap-chan checks every counter so you don't have to. Result includes `display` markdown with chan images and a swapchan.com link: show it to the user.

Input parameters:

- `amount` (string): Human-readable amount of fromToken to sell, e.g. "1.5". Provide this OR amountBaseUnits.
- `amountBaseUnits` (string): Exact amount in the token's smallest unit (wei). Provide this OR amount.
- `fromChainId` (integer, required): Chain id: 1 Ethereum, 8453 Base, 42161 Arbitrum, 10 Optimism, 137 Polygon, 56 BNB Chain, 43114 Avalanche, 59144 Linea, 534352 Scroll, 792703809 Solana, 8253038 Bitcoin, 728126428 Tron. Non-EVM chains…
- `fromToken` (string, required): Token address. Native gas token: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE on EVM chains (ETH, POL...), 11111111111111111111111111111111 for SOL, bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8 for BTC, T…
- `partner` (string): Optional SwapChan partner/affiliate id (from swapchan.com/partners). Quotes are attributed to it and the swapUrl carries ?ref= so the partner earns 5 bp (half of SwapChan's fee). Agent builders: regi…
- `recipient` (string): Address that receives the output on toChainId. Required for real execution when the destination is a different VM (e.g. EVM -> Solana/Bitcoin/Tron); omitted = indicative quote only.
- `ref` (string): Alias of `partner`.
- `slippageBps` (integer): Max slippage in basis points (50 = 0.5%). Default 50, cap 300.
- `toChainId` (integer, required): Destination chain id. Same as fromChainId for a same-chain swap; different for a cross-chain route.
- `toToken` (string, required): Token address. Native gas token: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE on EVM chains (ETH, POL...), 11111111111111111111111111111111 for SOL, bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8 for BTC, T…

### `compare_routes` (~843 tokens)

Compare routes

Compare every route SwapChan found, ranked best-first by net USD received, across aggregators and bridges. Pass extra destination chains in alsoToChainIds to compare same-chain vs cross-chain outcomes side by side. Swap-chan lines up the whole cast. Result includes `display` markdown with chan images and a swapchan.com link: show it to the user.

Input parameters:

- `alsoToChainIds` (array): Extra destination chains to compare. toToken must then be valid on each (e.g. native token).
- `amount` (string): Human-readable amount of fromToken to sell, e.g. "1.5". Provide this OR amountBaseUnits.
- `amountBaseUnits` (string): Exact amount in the token's smallest unit (wei). Provide this OR amount.
- `fromChainId` (integer, required): Chain id: 1 Ethereum, 8453 Base, 42161 Arbitrum, 10 Optimism, 137 Polygon, 56 BNB Chain, 43114 Avalanche, 59144 Linea, 534352 Scroll, 792703809 Solana, 8253038 Bitcoin, 728126428 Tron. Non-EVM chains…
- `fromToken` (string, required): Token address. Native gas token: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE on EVM chains (ETH, POL...), 11111111111111111111111111111111 for SOL, bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8 for BTC, T…
- `limit` (integer)
- `partner` (string): Optional SwapChan partner/affiliate id (from swapchan.com/partners). Quotes are attributed to it and the swapUrl carries ?ref= so the partner earns 5 bp (half of SwapChan's fee). Agent builders: regi…
- `recipient` (string): Address that receives the output on toChainId. Required for real execution when the destination is a different VM (e.g. EVM -> Solana/Bitcoin/Tron); omitted = indicative quote only.
- `ref` (string): Alias of `partner`.
- `slippageBps` (integer): Max slippage in basis points (50 = 0.5%). Default 50, cap 300.
- `toChainId` (integer, required): Destination chain id. Same as fromChainId for a same-chain swap; different for a cross-chain route.
- `toToken` (string, required): Token address. Native gas token: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE on EVM chains (ETH, POL...), 11111111111111111111111111111111 for SOL, bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8 for BTC, T…

### `build_swap_tx` (~885 tokens)

Build unsigned swap transaction

Build the UNSIGNED transaction for the best (or chosen) route, plus any ERC-20 approval needed first and an eth_call simulation when an RPC is configured. Never signs, never broadcasts, never asks for keys: hand the result to the user's wallet. Swap-chan packs the bag; you carry it through the gate. Result includes `display` markdown with chan images and a swapchan.com link: show it to the user.

Input parameters:

- `amount` (string): Human-readable amount of fromToken to sell, e.g. "1.5". Provide this OR amountBaseUnits.
- `amountBaseUnits` (string): Exact amount in the token's smallest unit (wei). Provide this OR amount.
- `fromChainId` (integer, required): Chain id: 1 Ethereum, 8453 Base, 42161 Arbitrum, 10 Optimism, 137 Polygon, 56 BNB Chain, 43114 Avalanche, 59144 Linea, 534352 Scroll, 792703809 Solana, 8253038 Bitcoin, 728126428 Tron. Non-EVM chains…
- `fromToken` (string, required): Token address. Native gas token: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE on EVM chains (ETH, POL...), 11111111111111111111111111111111 for SOL, bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8 for BTC, T…
- `partner` (string): Optional SwapChan partner/affiliate id (from swapchan.com/partners). Quotes are attributed to it and the swapUrl carries ?ref= so the partner earns 5 bp (half of SwapChan's fee). Agent builders: regi…
- `provider` (string): Force a specific provider from compare_routes instead of the best route
- `quoteId` (string): Reuse a quoteId from get_quote/compare_routes (still re-quotes if it expired)
- `recipient` (string): Address that receives the output on toChainId. Required for real execution when the destination is a different VM (e.g. EVM -> Solana/Bitcoin/Tron); omitted = indicative quote only.
- `ref` (string): Alias of `partner`.
- `slippageBps` (integer): Max slippage in basis points (50 = 0.5%). Default 50, cap 300.
- `taker` (string, required): Wallet address that will sign and send the transaction
- `toChainId` (integer, required): Destination chain id. Same as fromChainId for a same-chain swap; different for a cross-chain route.
- `toToken` (string, required): Token address. Native gas token: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE on EVM chains (ETH, POL...), 11111111111111111111111111111111 for SOL, bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8 for BTC, T…

### `get_route_status` (~280 tokens)

Route status

Track a submitted swap or cross-chain transfer by source tx hash: pending, done, failed or not_found, plus the destination tx hash once it lands. Swap-chan waves from the arrival gate. Result includes `display` markdown with chan images and a swapchan.com link: show it to the user.

Input parameters:

- `fromChainId` (integer, required): Chain id: 1 Ethereum, 8453 Base, 42161 Arbitrum, 10 Optimism, 137 Polygon, 56 BNB Chain, 43114 Avalanche, 59144 Linea, 534352 Scroll, 792703809 Solana, 8253038 Bitcoin, 728126428 Tron. Non-EVM chains…
- `provider` (string, required): Provider name from the quote (e.g. "across", "lifi")
- `toChainId` (integer, required): Chain id: 1 Ethereum, 8453 Base, 42161 Arbitrum, 10 Optimism, 137 Polygon, 56 BNB Chain, 43114 Avalanche, 59144 Linea, 534352 Scroll, 792703809 Solana, 8253038 Bitcoin, 728126428 Tron. Non-EVM chains…
- `txHash` (string, required)

### `build_limit_order` (~277 tokens)

Build a limit order

Build a gasless CoW Protocol limit order (sell an ERC-20 for at least a target amount, valid until expiry). Returns EIP-712 typed data for the user's wallet to sign, the ERC-20 approve tx for CoW's vault relayer if the allowance is short, the current market amount for reference, and how to submit the signature. Never signs or submits. Result includes `display` markdown with chan images: show it to the user.

Input parameters:

- `buyAmount` (string): Minimum human amount to receive (the limit). Provide this OR limitPrice.
- `buyToken` (string, required): Token to receive
- `chainId` (integer, required): Chain id where CoW runs: 1 Ethereum, 8453 Base, 42161 Arbitrum, 137 Polygon, 56 BNB, 43114 Avalanche, 59144 Linea
- `expiresInHours` (number): Default 168 (7 days)
- `limitPrice` (string): Price in buyToken per 1 sellToken. Provide this OR buyAmount.
- `owner` (string, required): Wallet that signs and owns the order
- `sellAmount` (string, required): Human amount to sell, e.g. "100"
- `sellToken` (string, required): ERC-20 to sell (not the native token; wrap first)

### `list_limit_orders` (~114 tokens)

List limit orders

List a wallet's CoW limit orders on one chain with status (open, fulfilled, cancelled, expired), amounts filled and an explorer link. Result includes `display` markdown with chan images: show it to the user.

Input parameters:

- `chainId` (integer, required): Chain id where CoW runs: 1 Ethereum, 8453 Base, 42161 Arbitrum, 137 Polygon, 56 BNB, 43114 Avalanche, 59144 Linea
- `owner` (string, required): EVM address

### `cancel_limit_order` (~123 tokens)

Cancel a limit order

Get the EIP-712 OrderCancellations typed data to cancel a CoW limit order off-chain (gasless). The owner signs it; POST {chainId, orderUids:[uid], signature} to /limit/cancel on the SwapChan API. Never signs.

Input parameters:

- `chainId` (integer, required): Chain id where CoW runs: 1 Ethereum, 8453 Base, 42161 Arbitrum, 137 Polygon, 56 BNB, 43114 Avalanche, 59144 Linea
- `uid` (string, required)

### `scan_new_tokens` (~217 tokens)

Scan new tokens

Newest token pairs (GeckoTerminal new pools + DexScreener latest profiles), youngest first. Each token has price, liquidity, volume, price change, age, a quick risk badge (low/medium/high + flags) and a swapUrl that opens a prefilled best-price swap on swapchan.com. Extremely risky asset class: always show the risk level, flags and disclaimer, and suggest token_risk before swapping. Result includes `display` markdown with Swap-chan and the chain-chan: show it to the user.

Input parameters:

- `chain` (string): Chain to scan. "all" = Solana, Base, BNB and Ethereum.
- `limit` (integer)
- `maxAgeHours` (number): Only pairs created within this many hours.
- `minLiquidityUsd` (number): Minimum pool liquidity in USD (default 10000).
- `minVolumeUsd` (number): Minimum 24h volume in USD.
- `window` (string): Price-change window used for movers and shown in results.

### `scan_trending` (~218 tokens)

Scan trending tokens

Trending tokens (GeckoTerminal trending pools + DexScreener top boosts), most boosted/traded first. Each token has price, liquidity, volume, price change, age, a quick risk badge (low/medium/high + flags) and a swapUrl that opens a prefilled best-price swap on swapchan.com. Extremely risky asset class: always show the risk level, flags and disclaimer, and suggest token_risk before swapping. Result includes `display` markdown with Swap-chan and the chain-chan: show it to the user.

Input parameters:

- `chain` (string): Chain to scan. "all" = Solana, Base, BNB and Ethereum.
- `limit` (integer)
- `maxAgeHours` (number): Only pairs created within this many hours.
- `minLiquidityUsd` (number): Minimum pool liquidity in USD (default 10000).
- `minVolumeUsd` (number): Minimum 24h volume in USD.
- `window` (string): Price-change window used for movers and shown in results.

### `scan_movers` (~213 tokens)

Scan big movers

Tokens with the biggest absolute price change over `window` among new and trending pairs. Each token has price, liquidity, volume, price change, age, a quick risk badge (low/medium/high + flags) and a swapUrl that opens a prefilled best-price swap on swapchan.com. Extremely risky asset class: always show the risk level, flags and disclaimer, and suggest token_risk before swapping. Result includes `display` markdown with Swap-chan and the chain-chan: show it to the user.

Input parameters:

- `chain` (string): Chain to scan. "all" = Solana, Base, BNB and Ethereum.
- `limit` (integer)
- `maxAgeHours` (number): Only pairs created within this many hours.
- `minLiquidityUsd` (number): Minimum pool liquidity in USD (default 10000).
- `minVolumeUsd` (number): Minimum 24h volume in USD.
- `window` (string): Price-change window used for movers and shown in results.

### `token_risk` (~164 tokens)

Token risk check

Deep automated risk check for one token. Solana: Jupiter audit (mint/freeze authority, top-holder concentration, organic score, verified) + RugCheck report (LP locked, risks). EVM: GoPlus (honeypot, buy/sell tax, mintable, proxy, owner powers, verified source). Plus liquidity/age/FDV heuristics from DexScreener. Returns level low/medium/high/unknown, flags, raw checks, market data and a swapUrl. Heuristics can miss scams: always pass on the disclaimer. Result includes `display` markdown with chan images: show it to the user.

Input parameters:

- `address` (string, required): Token mint (Solana) or contract address (EVM).
- `chain` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/tsavo-swapchan/mcp#diagnostics

## Score history

- 2026-10-22: 62

## Common questions

### What is the SwapChan MCP server?

SwapChan is an MCP server listed in the public MCP registry as io.github.TSavo/swapchan. Cross-chain swap quotes + unsigned txs, plus free wallet, tx, gas, name, approval and yield readers. This page covers its hosted endpoint (https://mcp.swapchan.com/mcp).

### Is the SwapChan MCP server safe to use?

SwapChan scores 62 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the SwapChan MCP server expose?

SwapChan exposes 13 tools: get_supported_chains, get_supported_tokens, get_quote, compare_routes, build_swap_tx, and 8 more. Their descriptions and schemas cost roughly 4,364 tokens of context every time the server is loaded.

### Does the SwapChan MCP server require authentication?

No. We connected to SwapChan without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the SwapChan MCP server still maintained?

SwapChan is still listed as active in the MCP registry. We last reached this channel on 22 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.swapchan.com/mcp
- Repository: https://github.com/TSavo/SwapCha.in
- Website: https://swapchan.com/
- Changelog RSS feed: https://verifymcp.io/servers/tsavo-swapchan/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/tsavo-swapchan/mcp.json
- HTML version of this page: https://verifymcp.io/servers/tsavo-swapchan/mcp
