# Gate DEX MCP (remote · api.gatemcp.ai)

Gate DEX MCP for wallet auth, transfers, swaps, token info, market data, and RPC access.

- Trust score: 57/100 (low)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `api.gatemcp.ai`: 57/100 (this document), [markdown](https://verifymcp.io/servers/gateio-dev-gate-dex/mcp-dex.md), [page](https://verifymcp.io/servers/gateio-dev-gate-dex/mcp-dex)

## Channel facts

- Endpoint: `https://api.gatemcp.ai/mcp/dex`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.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-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (dex_agentic_report).
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - 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**: 50/100
  - 71% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (fair).
  - Context-footprint check failed: tool/resource definitions use about 9735 tokens (~167/item across 58 items; 47 tools + 11 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http gateio-dev-gate-dex https://api.gatemcp.ai/mcp/dex
```

### Codex

```toml
[mcp_servers.gateio-dev-gate-dex]
url = "https://api.gatemcp.ai/mcp/dex"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gateio-dev-gate-dex": {
      "type": "remote",
      "url": "https://api.gatemcp.ai/mcp/dex",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add gateio-dev-gate-dex --url https://api.gatemcp.ai/mcp/dex --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  gateio-dev-gate-dex:
    url: "https://api.gatemcp.ai/mcp/dex"
```

### Other

```json
{
  "mcpServers": {
    "gateio-dev-gate-dex": {
      "type": "http",
      "url": "https://api.gatemcp.ai/mcp/dex"
    }
  }
}
```

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-08-02 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 56, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 57, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 56, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 55, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 54)

First indexed and scored.

## MCP tools (47)

### `dex_agentic_report` (~119 tokens)

Register agentic wallet addresses with the wallet service.

Input parameters:

- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `wallets` (object, required): Array of wallet info objects. Each wallet contains walletID and accounts array. Each account contains accountID and chainAddressList array. Each chainAddress contains networkKey, chains, chainAddress…

### `dex_auth_gate_login_poll` (~130 tokens)

Poll Gate OAuth; returns pending/ok/error. [write] On ok: replace mcp_token unless linked_to_google_session is true. Pass auto_replace_binding=true to rebind exchange UID on new Gate session.

Input parameters:

- `auto_replace_binding` (boolean): If true and status is ok: when new session walletType is not gate_mcp/gate_quick, call BW POST /v1/wallet/inner/rebind (same as dex_wallet_replace_binding). Gate-native sessions are blocked without c…
- `flow_id` (string, required): Flow ID returned by dex_auth_gate_login_start

### `dex_auth_gate_login_start` (~66 tokens)

Start Gate device OAuth; returns verification_url. Pass link_mcp_token on a Google session to bind Gate UID without replacing mcp_token.

Input parameters:

- `link_mcp_token` (string): Current Google wallet mcp_token for bind-only Gate OAuth; omit for standalone Gate login

### `dex_auth_google_login_poll` (~67 tokens)

Poll Google OAuth flow; returns pending/ok/error. [write] On ok: immediately replace stored mcp_token with login_result.mcp_token — new token is tied to a different account.

Input parameters:

- `flow_id` (string, required): Flow ID returned by dex_auth_google_login_start

### `dex_auth_google_login_start` (~20 tokens)

Returns browser verification URL for Google device OAuth.

### `dex_auth_login_gate_wallet` (~70 tokens)

Exchange Gate OAuth code for MCP token. [write] On success, immediately replace any stored mcp_token — new token is tied to a different account.

Input parameters:

- `code` (string, required): Gate OAuth authorization code
- `redirect_url` (string, required): Gate OAuth redirect URL used in the authorization request

### `dex_auth_login_google_wallet` (~70 tokens)

Exchange Google OAuth code for MCP token. [write] On success, immediately replace any stored mcp_token — new token is tied to a different account.

Input parameters:

- `code` (string, required): Google OAuth authorization code
- `redirect_url` (string, required): Google OAuth redirect URL used in the authorization request

### `dex_auth_logout` (~34 tokens)

Revoke the MCP session identified by mcp_token.

Input parameters:

- `mcp_token` (string, required): MCP session token to revoke

### `dex_chain_config` (~116 tokens)

Returns chain config (networkKey, accountKey, chainID). Use the returned chain value in all subsequent transfer/sign/broadcast tools.

Input parameters:

- `chain` (string, required): Chain name or alias (matching is case-insensitive). Use the returned `chain` value for all subsequent tools on that network.
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403

### `dex_market_get_kline` (~220 tokens)

OHLCV candles by period and window. Volume aggregates→get_tx_stats. Pool events→get_pair_liquidity.

Input parameters:

- `chain` (string, required): Chain name. Supported: bsc, base, eth, solana, arbitrum, polygon, avalanche, fantom, zksync, linea, optimism, sui, blast, tron, merlin, world, eni, bera, gatelayer, ton
- `end_time` (string): End time (unix seconds); default: now
- `limit` (string): Max number of candles (default 100, max 1000)
- `pair_address` (string): Optional pair address
- `period` (string, required): K-line period: seconds (e.g. 300, 3600) or 1m, 5m, 1h, 4h, 1d
- `start_time` (string): Start time (unix seconds); default: 100 periods before end_time
- `token_address` (string, required): Token contract address

### `dex_market_get_pair_liquidity` (~150 tokens)

AMM pool deposit and withdrawal events. Candlesticks→get_kline. Volume stats→get_tx_stats.

Input parameters:

- `chain` (string, required): Chain name. Supported: bsc, base, eth, solana, arbitrum, polygon, avalanche, fantom, zksync, linea, optimism, sui, blast, tron, merlin, world, eni, bera, gatelayer, ton
- `page_index` (string): Page index (default 1)
- `page_size` (string): Page size (default 15, max 15)
- `pair_address` (string): Optional pair address
- `token_address` (string, required): Token contract address

### `dex_market_get_tx_stats` (~127 tokens)

Per-interval buy/sell volume and tx counts (5m–24h). Candlesticks→get_kline. Pool events→get_pair_liquidity.

Input parameters:

- `chain` (string, required): Chain name. Supported: bsc, base, eth, solana, arbitrum, polygon, avalanche, fantom, zksync, linea, optimism, sui, blast, tron, merlin, world, eni, bera, gatelayer, ton
- `pair_address` (string): Optional pair address
- `token_address` (string, required): Token contract address

### `dex_rpc_call` (~132 tokens)

Proxy a JSON-RPC call to a blockchain node.

Input parameters:

- `chain` (string, required): Chain name (e.g., ETH, BSC, SOL, ARB, POLYGON)
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `method` (string, required): RPC method name (e.g., eth_blockNumber, eth_getBalance, getLatestBlockhash)
- `params` (array): RPC method parameters as JSON array

### `dex_token_get_coin_info` (~68 tokens)

Price, market snapshot, metadata, optional top holders. Security audit→get_risk_info.

Input parameters:

- `address` (string, required): Token contract address
- `chain` (string, required): Blockchain network
- `include_holders` (string): Include top holders (true/false, default true)

### `dex_token_get_coins_range_by_created_at` (~131 tokens)

Tokens launched within a given time window; chain optional for all networks.

Input parameters:

- `chain` (string): Optional chain filter; omit for all chains
- `end` (string, required): End of creation time range (RFC3339, e.g. 2025-01-02T00:00:00Z)
- `limit` (string): Max number of tokens (1-100, default 20)
- `start` (string, required): Start of creation time range (RFC3339, e.g. 2025-01-01T00:00:00Z)

### `dex_token_get_risk_info` (~133 tokens)

Contract security audit (honeypot, tax, ownership flags). Price and market stats→get_coin_info.

Input parameters:

- `address` (string, required): Token contract address
- `chain` (string, required): Chain name. Supported: bsc, polygon, avalanche, arbitrum, optimism, base, fantom, linea, zksync, world, gatelayer, merlin, blast, eni, bera, solana, ton, sui, tron
- `ignore` (string): Set to true to hide empty risk items
- `lan` (string): Language code (e.g. en, zh)

### `dex_token_list_cross_chain_bridge_tokens` (~178 tokens)

Receivable assets on target chain for a source token. Same-chain trading→list_swap_tokens.

Input parameters:

- `account_id` (string): User account ID. Only used when wallet is empty, to look up wallet addresses.
- `chain` (string, required): Target chain identifier, e.g. bsc, arbitrum, polygon
- `search` (string): Search keyword (token symbol or contract address) to filter results
- `search_auth` (boolean): When searching, only return certified tokens. Only effective when search is non-empty.
- `source_address` (string, required): Source token contract address on the source chain
- `source_chain` (string, required): Source chain identifier, e.g. eth, bsc, solana
- `wallet` (string): User wallet address(es), comma-separated. Used to show balances and favorites.

### `dex_token_list_swap_tokens` (~223 tokens)

Tradable assets on a chain; tag selects favorites or recommendations. Bridge targets→list_cross_chain_bridge_tokens.

Input parameters:

- `account_id` (string): User account ID. Only used when wallet is empty.
- `chain` (string): Chain identifier, e.g. eth, bsc, solana, arbitrum. Omit to query all chains.
- `ignore_bridge` (boolean): Ignore cross-chain bridge restrictions, only filter by chain. Default false.
- `search` (string): Search keyword (token symbol or contract address)
- `search_auth` (boolean): When searching, only return certified tokens. Only effective when search is non-empty.
- `tag` (string): List type: empty for normal token list; 'favorite' for user favorites (requires wallet/account_id); 'recommend' for system recommended tokens.
- `wallet` (string): User wallet address(es), comma-separated. Used for favorites and balance display.
- `web3_key` (string): Chain web3_key identifier. Only used when chain is empty, auto-maps to chain.

### `dex_token_ranking` (~83 tokens)

Top movers by 24h price change; direction selects gainers vs losers. Single token→get_coin_info.

Input parameters:

- `chain` (string): Optional chain filter
- `direction` (string, required): 'desc' for top gainers, 'asc' for top losers
- `top_n` (string): Number of tokens (1-100, default 10)

### `dex_tx_approve_preview` (~359 tokens)

Build ERC20/SPL approve or revoke tx (does not broadcast). Sign with dex_wallet_sign_transaction after user confirmation.

Input parameters:

- `action` (string): Action type: 'approve' (default) or 'revoke' (revoke all approvals, Solana only)
- `amount` (string, required): Approval amount (human-readable). Set to '0' to revoke approval (EVM), set to 'unlimited' or 'max' for maximum allowance
- `chain` (string): Chain name (default ETH). Based on backend chain configuration.
- `max_fee_per_gas` (string): EVM: override max fee per gas (wei)
- `max_priority_fee_per_gas` (string): EVM: override max priority fee per gas (wei)
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `nonce` (string): EVM: transaction nonce. Omit to auto-fetch current nonce.
- `owner` (string, required): Owner address (your wallet address)
- `priority_fee_micro_lamports` (string): Solana: priority fee (micro-lamports per compute unit)
- `spender` (string, required): Spender address (EVM: spender contract address; Solana: delegate account address)
- `token_contract` (string): EVM: ERC20 contract address (required for EVM)
- `token_decimals` (string, required): Token decimals (e.g. 6, 18, 9)
- `token_mint` (string): Solana: SPL Token mint address (required for Solana)

### `dex_tx_detail` (~100 tokens)

Fetch transaction detail by on-chain hash. → swap_detail for swap order detail by order ID.

Input parameters:

- `from_wallet` (string): Optional sender wallet address filter
- `hash_id` (string, required): Transaction hash ID
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403

### `dex_tx_gas` (~140 tokens)

Estimate on-chain gas price and gas limit for a given tx.

Input parameters:

- `chain` (string, required): Chain name or alias; resolved via dex_chain_config before calling upstream.
- `data` (string): Transaction calldata (hex)
- `from` (string, required): Sender address
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `network` (string): Network name
- `to` (string, required): Recipient address
- `value` (string): Transfer value in wei

### `dex_tx_get_sol_unsigned` (~172 tokens)

Solana only: build fresh native SOL unsigned tx with latest blockhash; avoids Blockhash not found. Sign immediately. → transfer_preview for full summary first.

Input parameters:

- `amount` (string, required): Amount in SOL, e.g. 0.0001
- `from` (string, required): Sender address (base58)
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `priority_fee_micro_lamports` (string): Optional priority fee (micro-lamports per compute unit). Try 1000-10000 if broadcast returns replacement transaction underpriced.
- `to` (string, required): Recipient address (base58)

### `dex_tx_list` (~174 tokens)

List wallet transaction history (transfers). → swap_history_list for swap/bridge orders. → tx_detail for single tx by hash.

Input parameters:

- `account_id` (string, required): Account ID
- `address` (string): Wallet address filter
- `cursor` (string): Pagination cursor
- `end_time` (string): End time (Unix seconds or ISO8601)
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `page_num` (string): Page number (1-based)
- `page_size` (string): Page size (default 20)
- `start_time` (string): Start time (Unix seconds or ISO8601)

### `dex_tx_send_raw_transaction` (~447 tokens)

Broadcast a signed tx to the chain. [write] Requires user confirmation after transfer preview and prior signing via dex_wallet_sign_transaction.

Input parameters:

- `account_id` (string): Account ID (for history_data)
- `action_type` (string): Action type (history_data.action_type)
- `address` (string): Sender wallet address (history_data.address)
- `chain` (string, required): Chain name: must match dex_chain_config response `chain` (canonical). Aliases are resolved via chain config before calling upstream.
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `memo` (string): Memo (history_data.memo)
- `network` (string): Network name
- `nonce` (number): Nonce (history_data.nonce)
- `signed_tx` (string, required): Signed transaction data. For EVM chains: hex string (0x prefix added automatically). For other chains (e.g. Solana): use chain-specific format
- `token_addr` (string): Token contract address (history_data.token_addr)
- `token_name` (string): Token name (history_data.token_name)
- `token_short_name` (string): Token symbol, e.g. USDT (history_data.token_short_name)
- `trans_balance` (string): Display amount (history_data.trans_balance)
- `trans_balance_usd` (string): USD value (history_data.trans_balance_usd)
- `trans_gas_fee` (string): Gas fee display (history_data.trans_gas_fee)
- `trans_min_unit_amount` (string): Amount in smallest unit (history_data.trans_min_unit_amount)
- `trans_min_unit_gas_fee` (string): Gas fee in smallest unit (history_data.trans_min_unit_gas_fee)
- `trans_oppo_address` (string): Counterparty address, e.g. recipient (history_data.trans_oppo_address)
- `trans_time` (string): Transaction time ISO8601 (default: now)
- `trans_type` (string): Transaction type (history_data.trans_type)

### `dex_tx_swap_checkin_preview` (~184 tokens)

Returns check-in fields for a swap stage (approve or swap). Call after prepare and before terminal tx-checkin script.

Input parameters:

- `mcp_token` (string, required): MCP session token (required in the tool schema). After Google or Gate wallet login, read it from login_result when dex_auth_google_login_poll or dex_auth_gate_login_poll returns success. The server c…
- `stage` (string, required): Preview stage: 'approve' or 'swap'
- `swap_session_id` (string, required): Swap session ID returned by dex_tx_swap_prepare

### `dex_tx_swap_detail` (~96 tokens)

Fetch swap order detail by order ID from swap_submit. → tx_detail for detail by on-chain hash.

Input parameters:

- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `tx_order_id` (string, required): Transaction order ID from dex_tx_swap_submit

### `dex_tx_swap_history_list` (~229 tokens)

List swap/bridge order history with pagination; includes single-chain and cross-chain. → tx_list for transfer history.

Input parameters:

- `account_id` (string, required): Account ID (wallet address)
- `dst_chain` (number): Destination chain ID filter. 0 or omit for all chains
- `end_time` (string): End time filter (ISO8601 format)
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `page_num` (number): Page number (0-based, default 0)
- `page_size` (number): Page size (default 20)
- `src_chain` (number): Source chain ID filter (e.g. 1=ETH, 56=BSC). 0 or omit for all chains
- `start_time` (string): Start time filter (ISO8601 format, e.g. 2025-01-01T00:00:00Z)

### `dex_tx_swap_prepare` (~839 tokens)

Stage a swap session (server-side build only); returns swap_session_id. Does not sign or submit. Call after quote confirmed by user.

Input parameters:

- `account_id` (string, required): User account ID (UUID)
- `amount` (string, required): Human-readable amount (e.g. '0.01')
- `chain_id_in` (number, required): Source chain ID (e.g. 1=ETH, 56=BSC, 501=Solana)
- `chain_id_out` (number, required): Destination chain ID. Same as chain_id_in for single-chain swap
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `native_in` (number, required): ⚠️ CRITICAL — Must be set correctly, wrong value causes transaction failure or fund loss. Simply check: is token_in a native/gas coin? If yes, set 1; if it's a contract token, set 0. Native coins: ET…
- `native_out` (number, required): ⚠️ CRITICAL — Must be set correctly, wrong value causes transaction failure or fund loss. Simply check: is token_out a native/gas coin? If yes, set 1; if it's a contract token, set 0. Native coins: E…
- `slippage` (number, required): Slippage as decimal (0.01=1%, 0.1=10%)
- `to_wallet` (string): Destination chain receiving address. ONLY required for CROSS-CHAIN swaps where chain_id_in and chain_id_out belong to different address groups (e.g. EVM→Solana). Obtain from dex_wallet_get_addresses.…
- `token_in` (string, required): Source token address. Use '-' for native coin
- `token_out` (string, required): Destination token address
- `user_wallet` (string, required): User's wallet address matching the SOURCE CHAIN. MUST be chain-specific: call dex_wallet_get_addresses(account_id) to get addresses, use addresses["EVM"] for EVM chains or addresses["SOL"] for Solana…

### `dex_tx_swap_quote` (~1192 tokens)

Returns swap route and pricing. Call before swap_prepare; show result to user before proceeding. → transfer_preview for direct token send (not exchange).

Input parameters:

- `amount` (string, required): Human-readable amount of source token to swap, e.g. "0.001" for 0.001 BNB, "1" for 1 USDT. Do NOT convert to smallest unit (wei/lamports). Obtained directly from user's chat message.
- `chain_id_in` (number, required): Source chain ID. Use well-known IDs: ETH=1, BSC=56, Polygon=137, Arbitrum=42161, Base=8453, Avalanche=43114, Solana=501. Only call dex_chain_config for uncommon/unknown chains. For single-chain swap,…
- `chain_id_out` (number, required): Destination chain ID. Use same well-known IDs as chain_id_in. For single-chain swap, set equal to chain_id_in. For cross-chain swap, set to the target chain's ID.
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `native_in` (number, required): ⚠️ CRITICAL — Must be set correctly, wrong value causes transaction failure or fund loss. Simply check: is token_in a native/gas coin? If yes, set 1; if it's a contract token, set 0. Native coins: ET…
- `native_out` (number, required): ⚠️ CRITICAL — Must be set correctly, wrong value causes transaction failure or fund loss. Simply check: is token_out a native/gas coin? If yes, set 1; if it's a contract token, set 0. Native coins: E…
- `slippage` (number, required): Slippage tolerance as decimal ratio: 0.01 = 1%, 0.03 = 3%. Valid range: 0.001 (0.1%) to 0.499 (49.9%). If the user already specified slippage, use it directly. Only ask to confirm when not provided.…
- `to_wallet` (string): Destination chain receiving address. ONLY required for CROSS-CHAIN swaps where chain_id_in and chain_id_out belong to different address groups (e.g. EVM→Solana or Solana→EVM). Obtain from dex_wallet_…
- `token_in` (string, required): Source token contract address. Use "-" for native coins (ETH, BNB, MATIC, etc.). For ERC20/BEP20 tokens, provide the full contract address (e.g. 0x55d398326f99059ff775485246999027b3197955 for BSC USD…
- `token_out` (string, required): Destination token contract address. Use "-" for native coins. For ERC20/BEP20 tokens, provide the full contract address. Obtain from user input, wallet_get_token_list, or known token mappings. If nat…
- `user_wallet` (string, required): User's wallet address matching the SOURCE CHAIN. CRITICAL: You MUST use the chain-specific address — call dex_wallet_get_addresses(account_id) first, then use addresses["EVM"] for EVM chains (ETH/BSC…

### `dex_tx_swap_sign_approve` (~136 tokens)

[write] Sign the ERC20 approve tx for a staged EVM swap. Requires need_approved=true in prepare result.

Input parameters:

- `checkin_token` (string, required): Approve-stage checkin_token returned by the local skill check-in script after dex_tx_swap_checkin_preview(stage='approve')
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `swap_session_id` (string, required): Swap session ID returned by dex_tx_swap_prepare

### `dex_tx_swap_sign_swap` (~146 tokens)

[write] Sign the main swap tx for a staged session. EVM: call sign_approve first if need_approved=true. Solana: generates a fresh signable payload.

Input parameters:

- `checkin_token` (string, required): Swap-stage checkin_token returned by the local skill check-in script after dex_tx_swap_checkin_preview(stage='swap')
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `swap_session_id` (string, required): Swap session ID returned by dex_tx_swap_prepare

### `dex_tx_swap_submit` (~110 tokens)

[write] Broadcast a staged swap to the chain. Does not sign. Requires all signing steps complete (sign_approve if EVM+approval, then sign_swap).

Input parameters:

- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `swap_session_id` (string, required): Swap session ID returned by dex_tx_swap_prepare

### `dex_tx_transfer_preview` (~528 tokens)

Build unsigned transfer tx; displays summary (sender, recipient, amount, gas). Returns unsigned_tx_hex and txBundle for check-in. Does not broadcast. Wait for user confirmation before signing. → swap_quote/swap_prepare for token exchange.

Input parameters:

- `amount` (string, required): Amount in token units. Precision depends on token/decimals. Examples: '1', '0.5', '0.000001'
- `chain` (string): Chain name or alias (default ETH). Resolved to canonical name from chain config; downstream sign/broadcast should use the same logical chain.
- `from` (string, required): Sender (your wallet) address
- `max_fee_per_gas` (string): EVM only: override max fee per gas (wei). Use when replacing a pending tx: set ≥1.1× the previous max_fee_per_gas to fix replacement transaction underpriced.
- `max_priority_fee_per_gas` (string): EVM only: override max priority fee per gas (wei). When replacing, set ≥1.1× previous max_priority_fee_per_gas.
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `nonce` (string): Transaction nonce. Omit to use current chain nonce (eth_getTransactionCount), ensuring tx can be mined and found on explorer; wrong nonce causes tx to fail or not appear.
- `priority_fee_micro_lamports` (string): Solana only: optional priority fee (micro-lamports per compute unit). Use 1000-10000 if broadcast returns replacement transaction underpriced.
- `to` (string, required): Recipient address
- `token` (string): Token symbol for display (default USDT). Use ETH/NATIVE for native; USDT for USDT; or use token_contract/token_mint for any token.
- `token_contract` (string): EVM: ERC20 contract address for arbitrary token. When set, token_decimals is used (default 18). Solana: unused.
- `token_decimals` (string): Token decimals (e.g. 6, 18). Required when using token_contract (EVM) or token_mint (Solana); default 18 for ERC20, 9 for SOL.
- `token_mint` (string): Solana: SPL token mint address for SPL transfer. When set, token_decimals is required. EVM: unused.

### `dex_tx_x402_checkin_preview` (~276 tokens)

Prepare Gate Verify tx_checkin for x402 (EVM exact / EIP-3009 only): returns tx_checkin.message (64-hex digest) and x402_payment_required_b64 without signing. Flow: 1) this tool 2) Gate Verify tx_checkin with returned tx_checkin fields 3) dex_tx_x402_fetch with same url/body/headers, checkin_token, and the same x402_payment_required_b64. If x402_payment_required_b64 is omitted, performs one HTTP call and requires HTTP 402.

Input parameters:

- `body` (string): Optional request body
- `headers` (string): Optional JSON object of request headers
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `method` (string): HTTP method; default GET
- `url` (string, required): Same URL as dex_tx_x402_fetch
- `x402_payment_required_b64` (string): Optional: PAYMENT-REQUIRED header base64; when omitted, one outbound request is made and must return 402
- `x402_preferred_network` (string): Same as dex_tx_x402_fetch

### `dex_tx_x402_fetch` (~419 tokens)

[write] Send an HTTP request to the given URL. If the server responds with 402 Payment Required, pay via x402 (Coinbase-style: USDC EIP-3009 / Permit2 on EVM, SPL on Solana), retry with PAYMENT-SIGNATURE. REQUIRED: Gate Verify tx_checkin before signing; pass checkin_token. For EVM EIP-3009, use dex_tx_x402_checkin_preview first so the agent does not build digest manually; then pass checkin_token and the same x402_payment_required_b64 from preview. CoinGecko Pro x402: do not send x-cg-pro-api-key; default network Base unless x402_preferred_network=solana.

Input parameters:

- `body` (string): Optional request body
- `checkin_token` (string, required): From Gate Verify MCP tool tx_checkin success (e.g. structuredContent.data.checkin_token or data.checkin_token). Required before every call so GV can verify signing.
- `headers` (string): Optional JSON object of request headers
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `method` (string): HTTP method; default GET
- `url` (string, required): Request URL (CoinGecko x402: https://pro-api.coingecko.com/api/v3/x402/...)
- `x402_payment_required_b64` (string): Optional: base64 PAYMENT-REQUIRED header payload from the same 402 as EIP-3009 tx-checkin. When set, skips the first HTTP call and pays using this snapshot (digest/checkin_token must match).
- `x402_preferred_network` (string): Optional: base, eth, solana, eip155:8453, ... — restrict which accept.network is used. CoinGecko Pro /x402/ defaults to base when omitted.

### `dex_wallet_bind_exchange_uid` (~114 tokens)

Bind Gate exchange UID to session. Standalone Gate session only; gateUid must equal login_result.gate_uid from Gate OAuth. → replace_binding to rebind.

Input parameters:

- `gateUid` (string, required): Must equal login_result.gate_uid from Gate OAuth that created this session
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403

### `dex_wallet_get_addresses` (~94 tokens)

Returns address map by chain type (EVM, SOL, etc.). Call before transfer/swap tools to get the sender address.

Input parameters:

- `account_id` (string, required): Account ID
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403

### `dex_wallet_get_bindings` (~69 tokens)

Returns current Gate UID binding for the session wallet.

Input parameters:

- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403

### `dex_wallet_get_token_list` (~174 tokens)

Token balances and prices with pagination; filter by network_keys. → get_total_asset for portfolio summary only.

Input parameters:

- `account_id` (string): Account ID (optional, auto-detected from login session)
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `network_keys` (string): Optional. Comma-separated network keys to filter (e.g. ETH,SOL,ARB). Omit or leave empty for all networks. Do not pass a separate chain field — use network_keys only.
- `page` (number): Page number, default 1
- `page_size` (number): Page size, default 20

### `dex_wallet_get_total_asset` (~97 tokens)

Total portfolio value and 24h change. → get_token_list for per-token balance detail.

Input parameters:

- `account_id` (string): Account ID (optional, auto-detected from login session)
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403

### `dex_wallet_get_wallet_type` (~210 tokens)

Returns walletAddress, walletType, gateUid. With for_withdraw_to_exchange or for_gate_oauth_bind, also starts Gate OAuth when gateUid is missing.

Input parameters:

- `account_id` (string): Account ID; used with session to resolve EVM address if wallet_address omitted
- `for_gate_oauth_bind` (boolean): Bind/rebind Gate exchange: when walletType is NOT gate_mcp/gate_quick, start Gate OAuth (Google: link); when already Gate-native with gateUid, returns nextSteps only
- `for_withdraw_to_exchange` (boolean): Withdraw-to-exchange: when gateUid is missing, start Gate device OAuth (Google: link binding)
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `wallet_address` (string): EVM wallet address to classify

### `dex_wallet_google_gate_bind_start` (~84 tokens)

Google sessions only: starts Gate OAuth to bind Gate exchange UID to this session. mcp_token stays unchanged after poll.

Input parameters:

- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403

### `dex_wallet_replace_binding` (~121 tokens)

Rebind Gate exchange UID. [write] newUid must equal login_result.gate_uid from a fresh Gate OAuth. Blocked for gate_mcp/gate_quick sessions and Google sessions.

Input parameters:

- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `newUid` (string, required): Must equal login_result.gate_uid from latest Gate OAuth (stamped on session)

### `dex_wallet_sign_message` (~204 tokens)

Sign a 32-byte hex message with wallet key. [write] Requires checkin_token from terminal tx-checkin. → sign_transaction for raw tx signing.

Input parameters:

- `chain` (string, required): Chain: dex_chain_config name/alias (e.g. ETH, BSC, SOL), or pass EVM / SOL directly for the signing family. Unknown names are rejected via chain config; web3_business_wallet sign-message receives cha…
- `checkin_token` (string, required): From successful tx-checkin response: the checkin_token string (terminal CLI stdout JSON). Must match the signing intent in the same flow.
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `message` (string, required): Message to sign (hex)

### `dex_wallet_sign_transaction` (~168 tokens)

Sign a raw unsigned transaction. [write] Requires user confirmation after transfer preview and checkin_token from terminal tx-checkin. → dex_tx_send_raw_transaction to broadcast.

Input parameters:

- `chain` (string, required): Chain name: must match dex_chain_config response `chain` (canonical). Aliases are resolved via chain config.
- `checkin_token` (string, required): From successful tx-checkin response: the checkin_token string (terminal CLI stdout JSON). Must match the signing intent in the same flow.
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `raw_tx` (string, required): Raw transaction data

### `dex_withdraw_deposit_address` (~197 tokens)

Fetch Gate exchange deposit address for the session-bound Gate UID. [write] amount must be ≥ min_deposit_amount; do not pass uid — it is resolved from the session.

Input parameters:

- `amount` (string, required): Required. Human-readable amount (same units as on-chain transfer); must be ≥ exchange min_deposit_amount
- `chain_name` (string, required): Chain name, e.g. BSC, ETH
- `coin_symbol` (string, required): Coin symbol, e.g. USDT
- `mcp_token` (string): MCP session token obtained from login (dex_auth_google_login_poll or dex_auth_gate_login_poll). MUST be provided in every call to this tool after login; omitting it will result in 403
- `token_address` (string): Optional. ERC20 contract for gate-deposit; empty for native. If omitted, USDT is resolved from chain_name; other symbols may require this field

## Diagnostics

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

## Score history

- 2026-08-03: 57
- 2026-08-02: 57
- 2026-08-01: 56
- 2026-07-31: 56
- 2026-07-30: 57
- 2026-07-29: 56
- 2026-07-28: 55
- 2026-07-27: 55
- 2026-07-26: 54

## Links

- Remote endpoint: https://api.gatemcp.ai/mcp/dex
- Repository: https://github.com/gate/gate-mcp
- Changelog RSS feed: https://verifymcp.io/servers/gateio-dev-gate-dex/mcp-dex/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/gateio-dev-gate-dex/mcp-dex/changelog.json
- HTML version of this page: https://verifymcp.io/servers/gateio-dev-gate-dex/mcp-dex
