Server definition
- Hash
- sha256:8d89749507db95cbde8d212b998950bb4c73a3d58407e0fda1e74b06be3c6746
- What it is
- What a remote MCP server returned when asked what it offers: 47 tools
The blob, as servednamed by its sha256
{
"instructions": "Gate Agentic Wallet MCP Server — authenticate, query balances, sign transactions, and trade across EVM chains and Solana. For any protected wallet or transaction action, decide capability by visible tools rather than the server label. CRITICAL: After a successful login (dex_auth_google_login_poll or dex_auth_gate_login_poll returns status 'ok'), store the mcp_token from login_result. You MUST pass this mcp_token in the mcp_token parameter of EVERY subsequent protected tool call. Without it, all protected calls will fail with 403. If a protected tool fails because mcp token is missing, expired, invalid, or the session access token is missing, start Google login recovery via dex_auth_google_login_start/dex_auth_google_login_poll when available, then retry the original protected action once. In user-visible replies, do not print MCP tool names (dex_*); use plain-language section titles and summaries. After dex_wallet_get_wallet_type: always show walletAddress, walletType, gateUid in a table; if OAuth binding is required, show nextSteps; gateOAuthUrl/flow id when for_withdraw_to_exchange=true (withdraw) or for_gate_oauth_bind=true (non–Gate-native wallet bind/rebind). For transfers and withdraw-to-exchange: collect and show main parameters (and optional dex_tx_transfer_preview for fees); do not call dex_wallet_sign_transaction or dex_tx_send_raw_transaction until the user explicitly confirms (e.g. confirm). Only claim that wallet capability is missing after confirming that both the required protected tools and auth tools are unavailable.",
"tools": [
{
"description": "Register agentic wallet addresses with the wallet service.",
"inputSchema": {
"properties": {
"mcp_token": {
"description": "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",
"type": "string"
},
"wallets": {
"description": "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, and optional accountKey/accountFormat.",
"properties": {},
"type": "object"
}
},
"required": [
"wallets"
],
"type": "object"
},
"name": "dex_agentic_report",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"auto_replace_binding": {
"description": "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 calling BW.",
"type": "boolean"
},
"flow_id": {
"description": "Flow ID returned by dex_auth_gate_login_start",
"type": "string"
}
},
"required": [
"flow_id"
],
"type": "object"
},
"name": "dex_auth_gate_login_poll",
"outputSchema": null
},
{
"description": "Start Gate device OAuth; returns verification_url. Pass link_mcp_token on a Google session to bind Gate UID without replacing mcp_token.",
"inputSchema": {
"properties": {
"link_mcp_token": {
"description": "Current Google wallet mcp_token for bind-only Gate OAuth; omit for standalone Gate login",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "dex_auth_gate_login_start",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"flow_id": {
"description": "Flow ID returned by dex_auth_google_login_start",
"type": "string"
}
},
"required": [
"flow_id"
],
"type": "object"
},
"name": "dex_auth_google_login_poll",
"outputSchema": null
},
{
"description": "Returns browser verification URL for Google device OAuth.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "dex_auth_google_login_start",
"outputSchema": null
},
{
"description": "Exchange Gate OAuth code for MCP token. [write] On success, immediately replace any stored mcp_token — new token is tied to a different account.",
"inputSchema": {
"properties": {
"code": {
"description": "Gate OAuth authorization code",
"type": "string"
},
"redirect_url": {
"description": "Gate OAuth redirect URL used in the authorization request",
"type": "string"
}
},
"required": [
"code",
"redirect_url"
],
"type": "object"
},
"name": "dex_auth_login_gate_wallet",
"outputSchema": null
},
{
"description": "Exchange Google OAuth code for MCP token. [write] On success, immediately replace any stored mcp_token — new token is tied to a different account.",
"inputSchema": {
"properties": {
"code": {
"description": "Google OAuth authorization code",
"type": "string"
},
"redirect_url": {
"description": "Google OAuth redirect URL used in the authorization request",
"type": "string"
}
},
"required": [
"code",
"redirect_url"
],
"type": "object"
},
"name": "dex_auth_login_google_wallet",
"outputSchema": null
},
{
"description": "Revoke the MCP session identified by mcp_token.",
"inputSchema": {
"properties": {
"mcp_token": {
"description": "MCP session token to revoke",
"type": "string"
}
},
"required": [
"mcp_token"
],
"type": "object"
},
"name": "dex_auth_logout",
"outputSchema": null
},
{
"description": "Returns chain config (networkKey, accountKey, chainID). Use the returned chain value in all subsequent transfer/sign/broadcast tools.",
"inputSchema": {
"properties": {
"chain": {
"description": "Chain name or alias (matching is case-insensitive). Use the returned `chain` value for all subsequent tools on that network.",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
}
},
"required": [
"chain"
],
"type": "object"
},
"name": "dex_chain_config",
"outputSchema": null
},
{
"description": "OHLCV candles by period and window. Volume aggregates→get_tx_stats. Pool events→get_pair_liquidity.",
"inputSchema": {
"properties": {
"chain": {
"description": "Chain name. Supported: bsc, base, eth, solana, arbitrum, polygon, avalanche, fantom, zksync, linea, optimism, sui, blast, tron, merlin, world, eni, bera, gatelayer, ton",
"type": "string"
},
"end_time": {
"description": "End time (unix seconds); default: now",
"type": "string"
},
"limit": {
"description": "Max number of candles (default 100, max 1000)",
"type": "string"
},
"pair_address": {
"description": "Optional pair address",
"type": "string"
},
"period": {
"description": "K-line period: seconds (e.g. 300, 3600) or 1m, 5m, 1h, 4h, 1d",
"type": "string"
},
"start_time": {
"description": "Start time (unix seconds); default: 100 periods before end_time",
"type": "string"
},
"token_address": {
"description": "Token contract address",
"type": "string"
}
},
"required": [
"chain",
"token_address",
"period"
],
"type": "object"
},
"name": "dex_market_get_kline",
"outputSchema": null
},
{
"description": "AMM pool deposit and withdrawal events. Candlesticks→get_kline. Volume stats→get_tx_stats.",
"inputSchema": {
"properties": {
"chain": {
"description": "Chain name. Supported: bsc, base, eth, solana, arbitrum, polygon, avalanche, fantom, zksync, linea, optimism, sui, blast, tron, merlin, world, eni, bera, gatelayer, ton",
"type": "string"
},
"page_index": {
"description": "Page index (default 1)",
"type": "string"
},
"page_size": {
"description": "Page size (default 15, max 15)",
"type": "string"
},
"pair_address": {
"description": "Optional pair address",
"type": "string"
},
"token_address": {
"description": "Token contract address",
"type": "string"
}
},
"required": [
"chain",
"token_address"
],
"type": "object"
},
"name": "dex_market_get_pair_liquidity",
"outputSchema": null
},
{
"description": "Per-interval buy/sell volume and tx counts (5m–24h). Candlesticks→get_kline. Pool events→get_pair_liquidity.",
"inputSchema": {
"properties": {
"chain": {
"description": "Chain name. Supported: bsc, base, eth, solana, arbitrum, polygon, avalanche, fantom, zksync, linea, optimism, sui, blast, tron, merlin, world, eni, bera, gatelayer, ton",
"type": "string"
},
"pair_address": {
"description": "Optional pair address",
"type": "string"
},
"token_address": {
"description": "Token contract address",
"type": "string"
}
},
"required": [
"chain",
"token_address"
],
"type": "object"
},
"name": "dex_market_get_tx_stats",
"outputSchema": null
},
{
"description": "Proxy a JSON-RPC call to a blockchain node.",
"inputSchema": {
"properties": {
"chain": {
"description": "Chain name (e.g., ETH, BSC, SOL, ARB, POLYGON)",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"method": {
"description": "RPC method name (e.g., eth_blockNumber, eth_getBalance, getLatestBlockhash)",
"type": "string"
},
"params": {
"description": "RPC method parameters as JSON array",
"type": "array"
}
},
"required": [
"chain",
"method"
],
"type": "object"
},
"name": "dex_rpc_call",
"outputSchema": null
},
{
"description": "Price, market snapshot, metadata, optional top holders. Security audit→get_risk_info.",
"inputSchema": {
"properties": {
"address": {
"description": "Token contract address",
"type": "string"
},
"chain": {
"description": "Blockchain network",
"type": "string"
},
"include_holders": {
"description": "Include top holders (true/false, default true)",
"type": "string"
}
},
"required": [
"chain",
"address"
],
"type": "object"
},
"name": "dex_token_get_coin_info",
"outputSchema": null
},
{
"description": "Tokens launched within a given time window; chain optional for all networks.",
"inputSchema": {
"properties": {
"chain": {
"description": "Optional chain filter; omit for all chains",
"type": "string"
},
"end": {
"description": "End of creation time range (RFC3339, e.g. 2025-01-02T00:00:00Z)",
"type": "string"
},
"limit": {
"description": "Max number of tokens (1-100, default 20)",
"type": "string"
},
"start": {
"description": "Start of creation time range (RFC3339, e.g. 2025-01-01T00:00:00Z)",
"type": "string"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"name": "dex_token_get_coins_range_by_created_at",
"outputSchema": null
},
{
"description": "Contract security audit (honeypot, tax, ownership flags). Price and market stats→get_coin_info.",
"inputSchema": {
"properties": {
"address": {
"description": "Token contract address",
"type": "string"
},
"chain": {
"description": "Chain name. Supported: bsc, polygon, avalanche, arbitrum, optimism, base, fantom, linea, zksync, world, gatelayer, merlin, blast, eni, bera, solana, ton, sui, tron",
"type": "string"
},
"ignore": {
"description": "Set to true to hide empty risk items",
"type": "string"
},
"lan": {
"description": "Language code (e.g. en, zh)",
"type": "string"
}
},
"required": [
"chain",
"address"
],
"type": "object"
},
"name": "dex_token_get_risk_info",
"outputSchema": null
},
{
"description": "Receivable assets on target chain for a source token. Same-chain trading→list_swap_tokens.",
"inputSchema": {
"properties": {
"account_id": {
"description": "User account ID. Only used when wallet is empty, to look up wallet addresses.",
"type": "string"
},
"chain": {
"description": "Target chain identifier, e.g. bsc, arbitrum, polygon",
"type": "string"
},
"search": {
"description": "Search keyword (token symbol or contract address) to filter results",
"type": "string"
},
"search_auth": {
"description": "When searching, only return certified tokens. Only effective when search is non-empty.",
"type": "boolean"
},
"source_address": {
"description": "Source token contract address on the source chain",
"type": "string"
},
"source_chain": {
"description": "Source chain identifier, e.g. eth, bsc, solana",
"type": "string"
},
"wallet": {
"description": "User wallet address(es), comma-separated. Used to show balances and favorites.",
"type": "string"
}
},
"required": [
"source_chain",
"source_address",
"chain"
],
"type": "object"
},
"name": "dex_token_list_cross_chain_bridge_tokens",
"outputSchema": null
},
{
"description": "Tradable assets on a chain; tag selects favorites or recommendations. Bridge targets→list_cross_chain_bridge_tokens.",
"inputSchema": {
"properties": {
"account_id": {
"description": "User account ID. Only used when wallet is empty.",
"type": "string"
},
"chain": {
"description": "Chain identifier, e.g. eth, bsc, solana, arbitrum. Omit to query all chains.",
"type": "string"
},
"ignore_bridge": {
"description": "Ignore cross-chain bridge restrictions, only filter by chain. Default false.",
"type": "boolean"
},
"search": {
"description": "Search keyword (token symbol or contract address)",
"type": "string"
},
"search_auth": {
"description": "When searching, only return certified tokens. Only effective when search is non-empty.",
"type": "boolean"
},
"tag": {
"description": "List type: empty for normal token list; 'favorite' for user favorites (requires wallet/account_id); 'recommend' for system recommended tokens.",
"enum": [
"",
"favorite",
"recommend"
],
"type": "string"
},
"wallet": {
"description": "User wallet address(es), comma-separated. Used for favorites and balance display.",
"type": "string"
},
"web3_key": {
"description": "Chain web3_key identifier. Only used when chain is empty, auto-maps to chain.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "dex_token_list_swap_tokens",
"outputSchema": null
},
{
"description": "Top movers by 24h price change; direction selects gainers vs losers. Single token→get_coin_info.",
"inputSchema": {
"properties": {
"chain": {
"description": "Optional chain filter",
"type": "string"
},
"direction": {
"description": "'desc' for top gainers, 'asc' for top losers",
"type": "string"
},
"top_n": {
"description": "Number of tokens (1-100, default 10)",
"type": "string"
}
},
"required": [
"direction"
],
"type": "object"
},
"name": "dex_token_ranking",
"outputSchema": null
},
{
"description": "Build ERC20/SPL approve or revoke tx (does not broadcast). Sign with dex_wallet_sign_transaction after user confirmation.",
"inputSchema": {
"properties": {
"action": {
"description": "Action type: 'approve' (default) or 'revoke' (revoke all approvals, Solana only)",
"type": "string"
},
"amount": {
"description": "Approval amount (human-readable). Set to '0' to revoke approval (EVM), set to 'unlimited' or 'max' for maximum allowance",
"type": "string"
},
"chain": {
"description": "Chain name (default ETH). Based on backend chain configuration.",
"type": "string"
},
"max_fee_per_gas": {
"description": "EVM: override max fee per gas (wei)",
"type": "string"
},
"max_priority_fee_per_gas": {
"description": "EVM: override max priority fee per gas (wei)",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"nonce": {
"description": "EVM: transaction nonce. Omit to auto-fetch current nonce.",
"type": "string"
},
"owner": {
"description": "Owner address (your wallet address)",
"type": "string"
},
"priority_fee_micro_lamports": {
"description": "Solana: priority fee (micro-lamports per compute unit)",
"type": "string"
},
"spender": {
"description": "Spender address (EVM: spender contract address; Solana: delegate account address)",
"type": "string"
},
"token_contract": {
"description": "EVM: ERC20 contract address (required for EVM)",
"type": "string"
},
"token_decimals": {
"description": "Token decimals (e.g. 6, 18, 9)",
"type": "string"
},
"token_mint": {
"description": "Solana: SPL Token mint address (required for Solana)",
"type": "string"
}
},
"required": [
"owner",
"spender",
"amount",
"token_decimals"
],
"type": "object"
},
"name": "dex_tx_approve_preview",
"outputSchema": null
},
{
"description": "Fetch transaction detail by on-chain hash. → swap_detail for swap order detail by order ID.",
"inputSchema": {
"properties": {
"from_wallet": {
"description": "Optional sender wallet address filter",
"type": "string"
},
"hash_id": {
"description": "Transaction hash ID",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
}
},
"required": [
"hash_id"
],
"type": "object"
},
"name": "dex_tx_detail",
"outputSchema": null
},
{
"description": "Estimate on-chain gas price and gas limit for a given tx.",
"inputSchema": {
"properties": {
"chain": {
"description": "Chain name or alias; resolved via dex_chain_config before calling upstream.",
"type": "string"
},
"data": {
"description": "Transaction calldata (hex)",
"type": "string"
},
"from": {
"description": "Sender address",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"network": {
"description": "Network name",
"type": "string"
},
"to": {
"description": "Recipient address",
"type": "string"
},
"value": {
"description": "Transfer value in wei",
"type": "string"
}
},
"required": [
"chain",
"from",
"to"
],
"type": "object"
},
"name": "dex_tx_gas",
"outputSchema": null
},
{
"description": "Solana only: build fresh native SOL unsigned tx with latest blockhash; avoids Blockhash not found. Sign immediately. → transfer_preview for full summary first.",
"inputSchema": {
"properties": {
"amount": {
"description": "Amount in SOL, e.g. 0.0001",
"type": "string"
},
"from": {
"description": "Sender address (base58)",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"priority_fee_micro_lamports": {
"description": "Optional priority fee (micro-lamports per compute unit). Try 1000-10000 if broadcast returns replacement transaction underpriced.",
"type": "string"
},
"to": {
"description": "Recipient address (base58)",
"type": "string"
}
},
"required": [
"from",
"to",
"amount"
],
"type": "object"
},
"name": "dex_tx_get_sol_unsigned",
"outputSchema": null
},
{
"description": "List wallet transaction history (transfers). → swap_history_list for swap/bridge orders. → tx_detail for single tx by hash.",
"inputSchema": {
"properties": {
"account_id": {
"description": "Account ID",
"type": "string"
},
"address": {
"description": "Wallet address filter",
"type": "string"
},
"cursor": {
"description": "Pagination cursor",
"type": "string"
},
"end_time": {
"description": "End time (Unix seconds or ISO8601)",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"page_num": {
"description": "Page number (1-based)",
"type": "string"
},
"page_size": {
"description": "Page size (default 20)",
"type": "string"
},
"start_time": {
"description": "Start time (Unix seconds or ISO8601)",
"type": "string"
}
},
"required": [
"account_id"
],
"type": "object"
},
"name": "dex_tx_list",
"outputSchema": null
},
{
"description": "Broadcast a signed tx to the chain. [write] Requires user confirmation after transfer preview and prior signing via dex_wallet_sign_transaction. account_id/address are auto-filled from the login session when omitted.",
"inputSchema": {
"properties": {
"account_id": {
"description": "Account ID (for history_data); optional when logged in — resolved from session",
"type": "string"
},
"action_type": {
"description": "Action type (history_data.action_type)",
"type": "string"
},
"address": {
"description": "Sender wallet address (history_data.address); optional when logged in — resolved from session wallet for the chain",
"type": "string"
},
"chain": {
"description": "Chain name: must match dex_chain_config response `chain` (canonical). Aliases are resolved via chain config before calling upstream.",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"memo": {
"description": "Memo (history_data.memo)",
"type": "string"
},
"network": {
"description": "Network name",
"type": "string"
},
"nonce": {
"description": "Nonce (history_data.nonce)",
"type": "number"
},
"signed_tx": {
"description": "Signed transaction data. For EVM chains: hex string (0x prefix added automatically). For other chains (e.g. Solana): use chain-specific format",
"type": "string"
},
"token_addr": {
"description": "Token contract address (history_data.token_addr)",
"type": "string"
},
"token_name": {
"description": "Token name (history_data.token_name)",
"type": "string"
},
"token_short_name": {
"description": "Token symbol, e.g. USDT (history_data.token_short_name)",
"type": "string"
},
"trans_balance": {
"description": "Display amount (history_data.trans_balance)",
"type": "string"
},
"trans_balance_usd": {
"description": "USD value (history_data.trans_balance_usd)",
"type": "string"
},
"trans_gas_fee": {
"description": "Gas fee display (history_data.trans_gas_fee)",
"type": "string"
},
"trans_min_unit_amount": {
"description": "Amount in smallest unit (history_data.trans_min_unit_amount)",
"type": "string"
},
"trans_min_unit_gas_fee": {
"description": "Gas fee in smallest unit (history_data.trans_min_unit_gas_fee)",
"type": "string"
},
"trans_oppo_address": {
"description": "Counterparty address, e.g. recipient (history_data.trans_oppo_address)",
"type": "string"
},
"trans_time": {
"description": "Transaction time ISO8601 (default: now)",
"type": "string"
},
"trans_type": {
"description": "Transaction type (history_data.trans_type)",
"type": "string"
}
},
"required": [
"chain",
"signed_tx"
],
"type": "object"
},
"name": "dex_tx_send_raw_transaction",
"outputSchema": null
},
{
"description": "Returns check-in fields for a swap stage (approve or swap). Call after prepare and before terminal tx-checkin script.",
"inputSchema": {
"properties": {
"mcp_token": {
"description": "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 checks this argument first, then the HTTP Authorization header (Bearer mcp_pat_...) — often the same string configured as headers.Authorization on your MCP server in local MCP client config. If there is no token yet, run auth start + poll first. If expired, try dex_auth_refresh_token; if that fails, log in again.",
"type": "string"
},
"stage": {
"description": "Preview stage: 'approve' or 'swap'",
"type": "string"
},
"swap_session_id": {
"description": "Swap session ID returned by dex_tx_swap_prepare",
"type": "string"
}
},
"required": [
"swap_session_id",
"stage",
"mcp_token"
],
"type": "object"
},
"name": "dex_tx_swap_checkin_preview",
"outputSchema": null
},
{
"description": "Fetch swap order detail by order ID from swap_submit. → tx_detail for detail by on-chain hash.",
"inputSchema": {
"properties": {
"mcp_token": {
"description": "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",
"type": "string"
},
"tx_order_id": {
"description": "Transaction order ID from dex_tx_swap_submit",
"type": "string"
}
},
"required": [
"tx_order_id"
],
"type": "object"
},
"name": "dex_tx_swap_detail",
"outputSchema": null
},
{
"description": "List swap/bridge order history with pagination; includes single-chain and cross-chain. → tx_list for transfer history.",
"inputSchema": {
"properties": {
"account_id": {
"description": "Account ID (wallet address)",
"type": "string"
},
"dst_chain": {
"description": "Destination chain ID filter. 0 or omit for all chains",
"type": "number"
},
"end_time": {
"description": "End time filter (ISO8601 format)",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"page_num": {
"description": "Page number (0-based, default 0)",
"type": "number"
},
"page_size": {
"description": "Page size (default 20)",
"type": "number"
},
"src_chain": {
"description": "Source chain ID filter (e.g. 1=ETH, 56=BSC). 0 or omit for all chains",
"type": "number"
},
"start_time": {
"description": "Start time filter (ISO8601 format, e.g. 2025-01-01T00:00:00Z)",
"type": "string"
}
},
"required": [
"account_id"
],
"type": "object"
},
"name": "dex_tx_swap_history_list",
"outputSchema": null
},
{
"description": "Stage a swap session (server-side build only); returns swap_session_id. Does not sign or submit. Call after quote confirmed by user.",
"inputSchema": {
"properties": {
"account_id": {
"description": "User account ID (UUID)",
"type": "string"
},
"amount": {
"description": "Human-readable amount (e.g. '0.01')",
"type": "string"
},
"chain_id_in": {
"description": "Source chain ID (e.g. 1=ETH, 56=BSC, 501=Solana)",
"type": "number"
},
"chain_id_out": {
"description": "Destination chain ID. Same as chain_id_in for single-chain swap",
"type": "number"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"native_in": {
"description": "⚠️ 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: ETH, BNB, MATIC, AVAX, SOL — these are the chain's gas coins, native_in=1. Contract tokens: USDT, USDC, WETH, WBNB, DAI, etc. — these are ERC20/BEP20/SPL tokens, native_in=0. NOTE: BNB = native coin (native=1), WBNB = wrapped contract token (native=0). User saying 'BNB' means the native coin unless they explicitly say 'WBNB'. Same for ETH vs WETH, SOL vs WSOL. When native_in=1, token_in is auto-normalized to '-'.",
"type": "number"
},
"native_out": {
"description": "⚠️ 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: ETH, BNB, MATIC, AVAX, SOL — these are the chain's gas coins, native_out=1. Contract tokens: USDT, USDC, WETH, WBNB, DAI, etc. — these are ERC20/BEP20/SPL tokens, native_out=0. NOTE: BNB = native coin (native=1), WBNB = wrapped contract token (native=0). User saying 'BNB' means the native coin unless they explicitly say 'WBNB'. Same for ETH vs WETH, SOL vs WSOL. When native_out=1, token_out is auto-normalized to '-'. CROSS-CHAIN EXAMPLE: USDT(BSC) → SOL(Solana): native_in=0 (USDT is contract token), native_out=1 (SOL is native coin). CROSS-CHAIN EXAMPLE: ETH(Ethereum) → USDT(BSC): native_in=1 (ETH is native coin), native_out=0 (USDT is contract token).",
"type": "number"
},
"slippage": {
"description": "Slippage as decimal (0.01=1%, 0.1=10%)",
"type": "number"
},
"to_wallet": {
"description": "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. Omit for single-chain swaps — defaults to user_wallet.",
"type": "string"
},
"token_in": {
"description": "Source token address. Use '-' for native coin",
"type": "string"
},
"token_out": {
"description": "Destination token address",
"type": "string"
},
"user_wallet": {
"description": "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 (chain_id=501). NEVER use an EVM address (0x...) for Solana or a Solana address for EVM chains. For cross-chain swaps this is the FROM (source) chain address.",
"type": "string"
}
},
"required": [
"chain_id_in",
"chain_id_out",
"token_in",
"token_out",
"amount",
"slippage",
"user_wallet",
"native_in",
"native_out",
"account_id"
],
"type": "object"
},
"name": "dex_tx_swap_prepare",
"outputSchema": null
},
{
"description": "Returns swap route and pricing. Call before swap_prepare; show result to user before proceeding. → transfer_preview for direct token send (not exchange).",
"inputSchema": {
"properties": {
"amount": {
"description": "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.",
"type": "string"
},
"chain_id_in": {
"description": "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, must equal chain_id_out.",
"type": "number"
},
"chain_id_out": {
"description": "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.",
"type": "number"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"native_in": {
"description": "⚠️ 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: ETH, BNB, MATIC, AVAX, SOL — these are the chain's gas coins, native_in=1. Contract tokens: USDT, USDC, WETH, WBNB, DAI, etc. — these are ERC20/BEP20/SPL tokens, native_in=0. NOTE: BNB = native coin (native=1), WBNB = wrapped contract token (native=0). User saying 'BNB' means the native coin unless they explicitly say 'WBNB'. Same for ETH vs WETH, SOL vs WSOL. When native_in=1, token_in is auto-normalized to '-'.",
"type": "number"
},
"native_out": {
"description": "⚠️ 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: ETH, BNB, MATIC, AVAX, SOL — these are the chain's gas coins, native_out=1. Contract tokens: USDT, USDC, WETH, WBNB, DAI, etc. — these are ERC20/BEP20/SPL tokens, native_out=0. NOTE: BNB = native coin (native=1), WBNB = wrapped contract token (native=0). User saying 'BNB' means the native coin unless they explicitly say 'WBNB'. Same for ETH vs WETH, SOL vs WSOL. When native_out=1, token_out is auto-normalized to '-'. CROSS-CHAIN EXAMPLE: USDT(BSC) → SOL(Solana): native_in=0 (USDT is contract token), native_out=1 (SOL is native coin). CROSS-CHAIN EXAMPLE: ETH(Ethereum) → USDT(BSC): native_in=1 (ETH is native coin), native_out=0 (USDT is contract token).",
"type": "number"
},
"slippage": {
"description": "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. Default: 0.03 (3%).",
"type": "number"
},
"to_wallet": {
"description": "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_get_addresses: use addresses[\"SOL\"] if dest is Solana, addresses[\"EVM\"] if dest is EVM. Omit for single-chain swaps — defaults to user_wallet.",
"type": "string"
},
"token_in": {
"description": "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 USDT). Obtain from user input, wallet token list (wallet_get_token_list), or known token mappings. If native_in=1, this field will be auto-set to \"-\".",
"type": "string"
},
"token_out": {
"description": "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 native_out=1, this field will be auto-set to \"-\". For cross-chain swaps, use the token's contract address on the destination chain.",
"type": "string"
},
"user_wallet": {
"description": "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/Polygon/Arbitrum/Base/Avalanche) or addresses[\"SOL\"] for Solana (chain_id=501). NEVER pass an EVM address (0x...) for Solana transactions or vice versa. For cross-chain swaps this is the FROM (source) chain address.",
"type": "string"
}
},
"required": [
"chain_id_in",
"chain_id_out",
"token_in",
"token_out",
"amount",
"slippage",
"user_wallet",
"native_in",
"native_out"
],
"type": "object"
},
"name": "dex_tx_swap_quote",
"outputSchema": null
},
{
"description": "[write] Sign the ERC20 approve tx for a staged EVM swap. Requires need_approved=true in prepare result.",
"inputSchema": {
"properties": {
"checkin_token": {
"description": "Approve-stage checkin_token returned by the local skill check-in script after dex_tx_swap_checkin_preview(stage='approve')",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"swap_session_id": {
"description": "Swap session ID returned by dex_tx_swap_prepare",
"type": "string"
}
},
"required": [
"swap_session_id",
"checkin_token"
],
"type": "object"
},
"name": "dex_tx_swap_sign_approve",
"outputSchema": null
},
{
"description": "[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.",
"inputSchema": {
"properties": {
"checkin_token": {
"description": "Swap-stage checkin_token returned by the local skill check-in script after dex_tx_swap_checkin_preview(stage='swap')",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"swap_session_id": {
"description": "Swap session ID returned by dex_tx_swap_prepare",
"type": "string"
}
},
"required": [
"swap_session_id",
"checkin_token"
],
"type": "object"
},
"name": "dex_tx_swap_sign_swap",
"outputSchema": null
},
{
"description": "[write] Broadcast a staged swap to the chain. Does not sign. Requires all signing steps complete (sign_approve if EVM+approval, then sign_swap).",
"inputSchema": {
"properties": {
"mcp_token": {
"description": "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",
"type": "string"
},
"swap_session_id": {
"description": "Swap session ID returned by dex_tx_swap_prepare",
"type": "string"
}
},
"required": [
"swap_session_id"
],
"type": "object"
},
"name": "dex_tx_swap_submit",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"amount": {
"description": "Amount in token units. Precision depends on token/decimals. Examples: '1', '0.5', '0.000001'",
"type": "string"
},
"chain": {
"description": "Chain name or alias (default ETH). Resolved to canonical name from chain config; downstream sign/broadcast should use the same logical chain.",
"type": "string"
},
"from": {
"description": "Sender (your wallet) address",
"type": "string"
},
"max_fee_per_gas": {
"description": "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.",
"type": "string"
},
"max_priority_fee_per_gas": {
"description": "EVM only: override max priority fee per gas (wei). When replacing, set ≥1.1× previous max_priority_fee_per_gas.",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"nonce": {
"description": "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.",
"type": "string"
},
"priority_fee_micro_lamports": {
"description": "Solana only: optional priority fee (micro-lamports per compute unit). Use 1000-10000 if broadcast returns replacement transaction underpriced.",
"type": "string"
},
"to": {
"description": "Recipient address",
"type": "string"
},
"token": {
"description": "Token symbol for display (default USDT). Use ETH/NATIVE for native; USDT for USDT; or use token_contract/token_mint for any token.",
"type": "string"
},
"token_contract": {
"description": "EVM: ERC20 contract address for arbitrary token. When set, token_decimals is used (default 18). Solana: unused.",
"type": "string"
},
"token_decimals": {
"description": "Token decimals (e.g. 6, 18). Required when using token_contract (EVM) or token_mint (Solana); default 18 for ERC20, 9 for SOL.",
"type": "string"
},
"token_mint": {
"description": "Solana: SPL token mint address for SPL transfer. When set, token_decimals is required. EVM: unused.",
"type": "string"
}
},
"required": [
"from",
"to",
"amount"
],
"type": "object"
},
"name": "dex_tx_transfer_preview",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"body": {
"description": "Optional request body",
"type": "string"
},
"headers": {
"description": "Optional JSON object of request headers",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"method": {
"description": "HTTP method; default GET",
"type": "string"
},
"url": {
"description": "Same URL as dex_tx_x402_fetch",
"type": "string"
},
"x402_payment_required_b64": {
"description": "Optional: PAYMENT-REQUIRED header base64; when omitted, one outbound request is made and must return 402",
"type": "string"
},
"x402_preferred_network": {
"description": "Same as dex_tx_x402_fetch",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "dex_tx_x402_checkin_preview",
"outputSchema": null
},
{
"description": "[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.",
"inputSchema": {
"properties": {
"body": {
"description": "Optional request body",
"type": "string"
},
"checkin_token": {
"description": "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.",
"type": "string"
},
"headers": {
"description": "Optional JSON object of request headers",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"method": {
"description": "HTTP method; default GET",
"type": "string"
},
"url": {
"description": "Request URL (CoinGecko x402: https://pro-api.coingecko.com/api/v3/x402/...)",
"type": "string"
},
"x402_payment_required_b64": {
"description": "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).",
"type": "string"
},
"x402_preferred_network": {
"description": "Optional: base, eth, solana, eip155:8453, ... — restrict which accept.network is used. CoinGecko Pro /x402/ defaults to base when omitted.",
"type": "string"
}
},
"required": [
"url",
"checkin_token"
],
"type": "object"
},
"name": "dex_tx_x402_fetch",
"outputSchema": null
},
{
"description": "Bind Gate exchange UID to session. Standalone Gate session only; gateUid must equal login_result.gate_uid from Gate OAuth. → replace_binding to rebind.",
"inputSchema": {
"properties": {
"gateUid": {
"description": "Must equal login_result.gate_uid from Gate OAuth that created this session",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
}
},
"required": [
"gateUid"
],
"type": "object"
},
"name": "dex_wallet_bind_exchange_uid",
"outputSchema": null
},
{
"description": "Returns address map by chain type (EVM, SOL, etc.). Call before transfer/swap tools to get the sender address.",
"inputSchema": {
"properties": {
"account_id": {
"description": "Account ID",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
}
},
"required": [
"account_id"
],
"type": "object"
},
"name": "dex_wallet_get_addresses",
"outputSchema": null
},
{
"description": "Returns current Gate UID binding for the session wallet.",
"inputSchema": {
"properties": {
"mcp_token": {
"description": "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",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "dex_wallet_get_bindings",
"outputSchema": null
},
{
"description": "Token balances and prices with pagination; filter by network_keys. → get_total_asset for portfolio summary only.",
"inputSchema": {
"properties": {
"account_id": {
"description": "Account ID (optional, auto-detected from login session)",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"network_keys": {
"description": "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.",
"type": "string"
},
"page": {
"description": "Page number, default 1",
"type": "number"
},
"page_size": {
"description": "Page size, default 20",
"type": "number"
}
},
"required": [],
"type": "object"
},
"name": "dex_wallet_get_token_list",
"outputSchema": null
},
{
"description": "Total portfolio value and 24h change. → get_token_list for per-token balance detail.",
"inputSchema": {
"properties": {
"account_id": {
"description": "Account ID (optional, auto-detected from login session)",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "dex_wallet_get_total_asset",
"outputSchema": null
},
{
"description": "Returns walletAddress, walletType, gateUid. With for_withdraw_to_exchange or for_gate_oauth_bind, also starts Gate OAuth when gateUid is missing.",
"inputSchema": {
"properties": {
"account_id": {
"description": "Account ID; used with session to resolve EVM address if wallet_address omitted",
"type": "string"
},
"for_gate_oauth_bind": {
"description": "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",
"type": "boolean"
},
"for_withdraw_to_exchange": {
"description": "Withdraw-to-exchange: when gateUid is missing, start Gate device OAuth (Google: link binding)",
"type": "boolean"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"wallet_address": {
"description": "EVM wallet address to classify",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "dex_wallet_get_wallet_type",
"outputSchema": null
},
{
"description": "Google sessions only: starts Gate OAuth to bind Gate exchange UID to this session. mcp_token stays unchanged after poll.",
"inputSchema": {
"properties": {
"mcp_token": {
"description": "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",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "dex_wallet_google_gate_bind_start",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"mcp_token": {
"description": "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",
"type": "string"
},
"newUid": {
"description": "Must equal login_result.gate_uid from latest Gate OAuth (stamped on session)",
"type": "string"
}
},
"required": [
"newUid"
],
"type": "object"
},
"name": "dex_wallet_replace_binding",
"outputSchema": null
},
{
"description": "Sign a 32-byte hex message with wallet key. [write] Requires checkin_token from terminal tx-checkin. → sign_transaction for raw tx signing.",
"inputSchema": {
"properties": {
"chain": {
"description": "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 chain \"EVM\" or lowercase \"sol\" for Solana.",
"type": "string"
},
"checkin_token": {
"description": "From successful tx-checkin response: the checkin_token string (terminal CLI stdout JSON). Must match the signing intent in the same flow.",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"message": {
"description": "Message to sign (hex)",
"type": "string"
}
},
"required": [
"message",
"chain",
"checkin_token"
],
"type": "object"
},
"name": "dex_wallet_sign_message",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"chain": {
"description": "Chain name: must match dex_chain_config response `chain` (canonical). Aliases are resolved via chain config.",
"type": "string"
},
"checkin_token": {
"description": "From successful tx-checkin response: the checkin_token string (terminal CLI stdout JSON). Must match the signing intent in the same flow.",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"raw_tx": {
"description": "Raw transaction data",
"type": "string"
}
},
"required": [
"raw_tx",
"chain",
"checkin_token"
],
"type": "object"
},
"name": "dex_wallet_sign_transaction",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"amount": {
"description": "Required. Human-readable amount (same units as on-chain transfer); must be ≥ exchange min_deposit_amount",
"type": "string"
},
"chain_name": {
"description": "Chain name, e.g. BSC, ETH",
"type": "string"
},
"coin_symbol": {
"description": "Coin symbol, e.g. USDT",
"type": "string"
},
"mcp_token": {
"description": "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",
"type": "string"
},
"token_address": {
"description": "Optional. ERC20 contract for gate-deposit; empty for native. If omitted, USDT is resolved from chain_name; other symbols may require this field",
"type": "string"
}
},
"required": [
"chain_name",
"coin_symbol",
"amount"
],
"type": "object"
},
"name": "dex_withdraw_deposit_address",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:8d89749507db95cbde8d212b998950bb4c73a3d58407e0fda1e74b06be3c6746 | sha256sum