TON MCP Raw CLI Mode
Run any TON wallet MCP tool directly from the command line. The binary invokes the tool, prints the JSON result to stdout, and exits.
Invocation Modes
| Command |
Description |
npx @ton/mcp@alpha |
stdio MCP server (for Claude Desktop / MCP clients) |
npx @ton/mcp@alpha --http [port] |
HTTP MCP server |
npx @ton/mcp@alpha <tool_name> [--arg value ...] |
Raw CLI: call one tool and exit |
Use exactly one mode for a given workflow: either MCP server mode (stdio/--http) or raw CLI. Do not combine them in the same task/session.
Raw CLI Usage
# No arguments
npx @ton/mcp@alpha get_balance
# Named arguments (--key value)
npx @ton/mcp@alpha get_transactions --limit 5
npx @ton/mcp@alpha get_jetton_balance --jettonAddress EQAbc...
# All values are passed as plain strings; JSON objects/arrays are also accepted
npx @ton/mcp@alpha get_transactions --limit 10
npx @ton/mcp@alpha send_ton --toAddress UQA... --amount 0.1 --comment "hi"
Arguments are passed as --key value pairs. Objects/arrays ({...} / [...]) are JSON-parsed; everything else is kept as a plain string.
Output
All tools print JSON to stdout. Errors are printed to stderr and the process exits with code 1.
# Capture output for scripting
BALANCE=$(npx @ton/mcp@alpha get_balance)
echo $BALANCE | jq '.balance'
Environment Variables
The CLI respects the same environment variables as the server:
| Variable |
Description |
NETWORK |
mainnet (default) or testnet |
MNEMONIC |
24-word mnemonic for single-wallet mode |
PRIVATE_KEY |
Hex-encoded private key (alternative to mnemonic) |
WALLET_VERSION |
v5r1 (default), v4r2, or agentic |
TONCENTER_API_KEY |
Optional Toncenter API key |
TON_CONFIG_PATH |
Path to config file (default: ~/.config/ton/config.json) |
Without MNEMONIC or PRIVATE_KEY, the CLI uses the local config registry at ~/.config/ton/config.json (registry mode). In registry mode, wallet-scoped tools accept an optional --walletSelector to target a specific wallet by id, name, or address.
Tool Reference
Wallet & Balance
| Tool |
Required args |
Optional args |
get_wallet |
— |
--walletSelector |
get_balance |
— |
--walletSelector |
get_balance_by_address |
--address |
--walletSelector |
get_jetton_balance |
--jettonAddress |
--walletSelector |
get_jettons |
— |
--walletSelector |
get_jettons_by_address |
--address |
--limit, --offset, --walletSelector |
get_jetton_info |
--jettonAddress |
--walletSelector |
get_transactions |
— |
--limit, --walletSelector |
get_transaction_status |
--normalizedHash |
--walletSelector |
get_known_jettons |
— |
— |
Wallet Registry (config-registry mode only)
| Tool |
Required args |
Optional args |
list_wallets |
— |
— |
get_current_wallet |
— |
— |
set_active_wallet |
--walletSelector |
— |
remove_wallet |
--walletSelector |
— |
Transfers
| Tool |
Required args |
Optional args |
send_ton |
--toAddress, --amount |
--comment, --walletSelector |
send_jetton |
--toAddress, --jettonAddress, --amount |
--comment, --walletSelector |
send_nft |
--nftAddress, --toAddress |
--comment, --walletSelector |
send_raw_transaction |
--messages |
--validUntil, --fromAddress, --walletSelector |
emulate_transaction |
--messages |
--validUntil, --walletSelector |
Swaps
| Tool |
Required args |
Optional args |
get_swap_quote |
--fromToken, --toToken, --amount |
--slippageBps, --walletSelector |
NFTs
| Tool |
Required args |
Optional args |
get_nfts |
— |
--limit, --offset, --walletSelector |
get_nfts_by_address |
--address |
--limit, --offset, --walletSelector |
get_nft |
--nftAddress |
--walletSelector |
DNS
| Tool |
Required args |
Optional args |
resolve_dns |
--domain |
--walletSelector |
back_resolve_dns |
--address |
--walletSelector |
Example Session
# Check wallet address and network
npx @ton/mcp@alpha get_wallet
# Check TON balance
npx @ton/mcp@alpha get_balance
# List all tokens
npx @ton/mcp@alpha get_jettons
# Last 10 transactions
npx @ton/mcp@alpha get_transactions --limit 10
# Get balance of a specific jetton
npx @ton/mcp@alpha get_jetton_balance --jettonAddress EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs
# Resolve a .ton domain
npx @ton/mcp@alpha resolve_dns --domain foundation.ton
# In registry mode: check balances for a named wallet
npx @ton/mcp@alpha get_balance --walletSelector "my-hot-wallet"
# In registry mode: list all registered wallets
npx @ton/mcp@alpha list_wallets
# Send TON (always confirm with user first)
npx @ton/mcp@alpha send_ton --toAddress UQA... --amount 0.5 --comment "payment"
# Swap quote
npx @ton/mcp@alpha get_swap_quote --fromToken TON --toToken EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs --amount 1
Notes
- Use
emulate_transaction to dry-run any transaction before sending — it returns expected balance changes, fees, and high-level actions
- Always confirm with the user before running
send_ton, send_jetton, send_nft, or send_raw_transaction;
- For confirmations and small option sets, prefer the host client's structured confirmation/choice UI when available; otherwise use a short natural-language yes/no prompt and never require an exact magic word;
- After sending, poll
get_transaction_status --normalizedHash <hash> until status is completed or failed (unless the user asks to skip).
- In registry mode the active wallet from
~/.config/ton/config.json is used by default.
1---2name: ton-cli-23description: Use this skill when invoking TON MCP tools directly from the command line. It calls any TON wallet tool via `npx @ton/mcp@alpha <tool_name> [--arg value ...]` without starting an MCP server session. Also use when querying wallet info, checking balances, sending transactions, or running raw TON MCP commands from the terminal.4---56# TON MCP Raw CLI Mode78Run any TON wallet MCP tool directly from the command line. The binary invokes the tool, prints the JSON result to stdout, and exits.910## Invocation Modes1112| Command | Description |13| ------- | ----------- |14| `npx @ton/mcp@alpha` | stdio MCP server (for Claude Desktop / MCP clients) |15| `npx @ton/mcp@alpha --http [port]` | HTTP MCP server |16| `npx @ton/mcp@alpha <tool_name> [--arg value ...]` | **Raw CLI: call one tool and exit** |1718Use exactly one mode for a given workflow: either MCP server mode (`stdio`/`--http`) or raw CLI. Do not combine them in the same task/session.1920## Raw CLI Usage2122```bash23# No arguments24npx @ton/mcp@alpha get_balance2526# Named arguments (--key value)27npx @ton/mcp@alpha get_transactions --limit 528npx @ton/mcp@alpha get_jetton_balance --jettonAddress EQAbc...2930# All values are passed as plain strings; JSON objects/arrays are also accepted31npx @ton/mcp@alpha get_transactions --limit 1032npx @ton/mcp@alpha send_ton --toAddress UQA... --amount 0.1 --comment "hi"33```3435Arguments are passed as `--key value` pairs. Objects/arrays (`{...}` / `[...]`) are JSON-parsed; everything else is kept as a plain string.3637## Output3839All tools print JSON to **stdout**. Errors are printed to **stderr** and the process exits with code `1`.4041```bash42# Capture output for scripting43BALANCE=$(npx @ton/mcp@alpha get_balance)44echo $BALANCE | jq '.balance'45```4647## Environment Variables4849The CLI respects the same environment variables as the server:5051| Variable | Description |52| -------- | ----------- |53| `NETWORK` | `mainnet` (default) or `testnet` |54| `MNEMONIC` | 24-word mnemonic for single-wallet mode |55| `PRIVATE_KEY` | Hex-encoded private key (alternative to mnemonic) |56| `WALLET_VERSION` | `v5r1` (default), `v4r2`, or `agentic` |57| `TONCENTER_API_KEY` | Optional Toncenter API key |58| `TON_CONFIG_PATH` | Path to config file (default: `~/.config/ton/config.json`) |5960Without `MNEMONIC` or `PRIVATE_KEY`, the CLI uses the local config registry at `~/.config/ton/config.json` (registry mode). In registry mode, wallet-scoped tools accept an optional `--walletSelector` to target a specific wallet by id, name, or address.6162## Tool Reference6364### Wallet & Balance6566| Tool | Required args | Optional args |67| ---- | ------------- | ------------- |68| `get_wallet` | — | `--walletSelector` |69| `get_balance` | — | `--walletSelector` |70| `get_balance_by_address` | `--address` | `--walletSelector` |71| `get_jetton_balance` | `--jettonAddress` | `--walletSelector` |72| `get_jettons` | — | `--walletSelector` |73| `get_jettons_by_address` | `--address` | `--limit`, `--offset`, `--walletSelector` |74| `get_jetton_info` | `--jettonAddress` | `--walletSelector` |75| `get_transactions` | — | `--limit`, `--walletSelector` |76| `get_transaction_status` | `--normalizedHash` | `--walletSelector` |77| `get_known_jettons` | — | — |7879### Wallet Registry (config-registry mode only)8081| Tool | Required args | Optional args |82| ---- | ------------- | ------------- |83| `list_wallets` | — | — |84| `get_current_wallet` | — | — |85| `set_active_wallet` | `--walletSelector` | — |86| `remove_wallet` | `--walletSelector` | — |8788### Transfers8990| Tool | Required args | Optional args |91| ---- | ------------- | ------------- |92| `send_ton` | `--toAddress`, `--amount` | `--comment`, `--walletSelector` |93| `send_jetton` | `--toAddress`, `--jettonAddress`, `--amount` | `--comment`, `--walletSelector` |94| `send_nft` | `--nftAddress`, `--toAddress` | `--comment`, `--walletSelector` |95| `send_raw_transaction` | `--messages` | `--validUntil`, `--fromAddress`, `--walletSelector` |96| `emulate_transaction` | `--messages` | `--validUntil`, `--walletSelector` |9798### Swaps99100| Tool | Required args | Optional args |101| ---- | ------------- | ------------- |102| `get_swap_quote` | `--fromToken`, `--toToken`, `--amount` | `--slippageBps`, `--walletSelector` |103104### NFTs105106| Tool | Required args | Optional args |107| ---- | ------------- | ------------- |108| `get_nfts` | — | `--limit`, `--offset`, `--walletSelector` |109| `get_nfts_by_address` | `--address` | `--limit`, `--offset`, `--walletSelector` |110| `get_nft` | `--nftAddress` | `--walletSelector` |111112### DNS113114| Tool | Required args | Optional args |115| ---- | ------------- | ------------- |116| `resolve_dns` | `--domain` | `--walletSelector` |117| `back_resolve_dns` | `--address` | `--walletSelector` |118119## Example Session120121```bash122# Check wallet address and network123npx @ton/mcp@alpha get_wallet124125# Check TON balance126npx @ton/mcp@alpha get_balance127128# List all tokens129npx @ton/mcp@alpha get_jettons130131# Last 10 transactions132npx @ton/mcp@alpha get_transactions --limit 10133134# Get balance of a specific jetton135npx @ton/mcp@alpha get_jetton_balance --jettonAddress EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs136137# Resolve a .ton domain138npx @ton/mcp@alpha resolve_dns --domain foundation.ton139140# In registry mode: check balances for a named wallet141npx @ton/mcp@alpha get_balance --walletSelector "my-hot-wallet"142143# In registry mode: list all registered wallets144npx @ton/mcp@alpha list_wallets145146# Send TON (always confirm with user first)147npx @ton/mcp@alpha send_ton --toAddress UQA... --amount 0.5 --comment "payment"148149# Swap quote150npx @ton/mcp@alpha get_swap_quote --fromToken TON --toToken EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs --amount 1151```152153## Notes154155- Use `emulate_transaction` to dry-run any transaction before sending — it returns expected balance changes, fees, and high-level actions156- Always confirm with the user before running `send_ton`, `send_jetton`, `send_nft`, or `send_raw_transaction`;157- For confirmations and small option sets, prefer the host client's structured confirmation/choice UI when available; otherwise use a short natural-language yes/no prompt and never require an exact magic word;158- After sending, poll `get_transaction_status --normalizedHash <hash>` until status is `completed` or `failed` (unless the user asks to skip).159- In registry mode the active wallet from `~/.config/ton/config.json` is used by default.