# SwapChan (io.github.TSavo/swapchan): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/io.github.TSavo%2Fswapchan/versions/latest)
- Connected to: https://mcp.swapchan.com/mcp
- Homepage: https://swapchan.com/
- Repository: https://github.com/TSavo/SwapCha.in
- Scoring rules: v2
- Tools: 74
- Average: 55.4 / 100 (Cloudy)
- Near-identical pairs: 4

This page shows how SwapChan (io.github.TSavo/swapchan)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 74 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 6180 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `chain_params`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chain.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `supported_chains`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chain.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `hash_tool`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: op, data, out_len, personal, text.
  - Minor: Says nothing about what it returns.
- `substrate_tool`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: op, address, account, prefix, hex, data, out_len, personal, text.
  - Minor: Says nothing about what it returns.
- `tron_tx`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: op, hex.
  - Minor: Says nothing about what it returns.
- `solana_address`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: op, program, seeds, owner, mint, token_program, address, name.
  - Minor: Says nothing about what it returns.
- `bytecode_inspect`: 38 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: code.
  - Minor: Says nothing about what it returns.
- `simulate_swap`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: quoteId, taker, from, to, data, value.
  - Minor: String arguments with no constraint or example: quoteId, taker, from, to, data, value, tx.
  - Minor: No `required` list, so every argument is optional.
- `typed_data_verify`: 40 / 100
  - Major: Arguments without a description: typed_data, signature, signer.
  - Minor: Says nothing about what it returns.
- `unwatch_token`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: itemId.
  - Minor: String arguments with no constraint or example: itemId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: watchId. Name the tool or the place that returns it, or models look it up first.
- `xpub_addresses`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: xpub, chain, kind, branch, start, count.
  - Minor: Says nothing about what it returns.
- `bolt11_decode`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: invoice.
- `combine_psbts`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: psbts.
- `create_address`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: deployer, nonce, salt, init_code_hash, init_code.
- `track_utxo_swap`: 43 / 100
  - Major: Arguments without a description: txid.
  - Minor: Says nothing about what it returns.
- `address_tool`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: op, address, chain, to, from, script, data, prefix, kind, hash.
- `multisig_address`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: threshold, network.
- `taproot_multisig_address`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: threshold, network.
- `evm_abi`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: op, sig, input, abi, types, output.
  - Minor: The meaning of the boolean argument output is unclear.
- `msg_verify`: 47 / 100
  - Major: Arguments without a description: address, message, sig, message_is_hex.
  - Minor: The meaning of the boolean argument message_is_hex is unclear.
- `swapchan_playbook`: 47 / 100
  - Major: Arguments without a description: workflow, full.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument full is unclear.
  - Minor: Says nothing about what it returns.
- `tx_status`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: hash.
  - Minor: String arguments with no constraint or example: hash.
- `find_money_status`: 49 / 100
  - Major: Arguments without a description: jobId.
  - Minor: Required identifiers whose description does not say where the value comes from: jobId. Name the tool or the place that returns it, or models look it up first.
- `rebalance_plan`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: targets, targets[].weight, minTradeUsd.
  - Minor: String arguments with no constraint or example: targets[].token.
  - Minor: The description mentions none of its 3 or more arguments.
- `whale_watch`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: address, minUsd.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `cancel_limit_order`: 51 / 100
  - Minor: Arguments without a description: uid.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId, uid. Name the tool or the place that returns it, or models look it up first.
- `signing_guide`: 51 / 100
  - Minor: Arguments without a description: chain.
  - Minor: No `required` list, so every argument is optional.
- `bridge_doctor`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: hash.
- `token_pools`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: address.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `read_chain`: 53 / 100
  - Major: Arguments without a description: op, address, token, owner, function, abi, args, slot, event, topics, fromBlock, toBlock, blockTag, block, hash, filters, encoding, limit.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `check_approvals`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: owner.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `contract_reader`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: address.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `get_yields`: 55 / 100
  - Major: Arguments without a description: asset, minTvlUsd, stablecoinOnly, limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument stablecoinOnly is unclear.
- `build_plan_tx`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_gas`: 57 / 100
  - Minor: Arguments without a description: chains.
  - Minor: No `required` list, so every argument is optional.
- `airdrop_check`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
- `best_time_to_swap`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `build_revoke_tx`: 59 / 100
  - Major: Arguments without a description: token, spender.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `explain_transaction`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `get_wallet_balances`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
- `wallet_history`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
- `watch_token`: 59 / 100
  - Major: Arguments without a description: items, items[].address, items[].upPct, items[].downPct, items[].above, items[].below, items[].swap, items[].swap.toToken.
  - Minor: String arguments with no constraint or example: items[].swap.toToken.
- `list_limit_orders`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: owner.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `token_info`: 60 / 100
  - Minor: Arguments without a description: address.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `token_risk`: 60 / 100
  - Minor: Arguments without a description: chain.
- `market_context`: 61 / 100
  - Major: Says nothing about when to use it, or when not to.
- `recovery_guide`: 61 / 100
  - Minor: No `required` list, so every argument is optional.
- `resolve_name`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
- `verify_tx`: 62 / 100
  - Major: Arguments without a description: expected.to, expected.recipient, expected.maxValue, expected.minOut, expected.quotedOut.
  - Minor: String arguments with no constraint or example: expected.to, expected.recipient, expected.maxValue, expected.minOut, expected.quotedOut.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `wallet_pnl`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_route_status`: 63 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: txHash.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: fromChainId, toChainId. Name the tool or the place that returns it, or models look it up first.
- `scan_movers`: 63 / 100
  - Minor: Arguments without a description: limit.
  - Minor: No `required` list, so every argument is optional.
- `scan_new_tokens`: 63 / 100
  - Minor: Arguments without a description: limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
- `scan_trending`: 63 / 100
  - Minor: Arguments without a description: limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
- `compare_routes`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: limit.
  - Minor: Required identifiers whose description does not say where the value comes from: fromChainId, toChainId. Name the tool or the place that returns it, or models look it up first.
- `get_supported_chains`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_supported_tokens`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `build_swap_link`: 66 / 100
  - Minor: Arguments without a description: fromToken, toToken, recipient, items[].fromToken, items[].toToken, items[].amount.
  - Minor: String arguments with no constraint or example: fromToken, toToken, recipient, items[].fromToken, items[].toToken, items[].amount.
  - Minor: No `required` list, so every argument is optional.
- `check_watches`: 67 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: watchId. Name the tool or the place that returns it, or models look it up first.
- `contract_encode_call`: 67 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `contract_read`: 67 / 100
- `find_money_batch`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_utxo_deposit`: 67 / 100
  - Minor: Arguments without a description: toToken, slippageBps.
  - Minor: String arguments with no constraint or example: toToken.
- `list_watches`: 67 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: watchId. Name the tool or the place that returns it, or models look it up first.
- `broadcast_tx`: 69 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `contract_approve_call`: 69 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `price_history`: 69 / 100
- `contract_abi`: 70 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `contract_build_creation`: 70 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `build_limit_order`: 72 / 100
  - Minor: String arguments with no constraint or example: buyToken.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: chainId. Name the tool or the place that returns it, or models look it up first.
- `build_swap_tx`: 74 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: fromChainId, toChainId. Name the tool or the place that returns it, or models look it up first.
- `build_send_tx`: 75 / 100
- `find_money`: 77 / 100
  - Minor: The description is long (803 words). It helps selection but costs steps and tokens.
- `get_quote`: 78 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: fromChainId, toChainId. Name the tool or the place that returns it, or models look it up first.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
