Install
openclaw skills install tongatewayAccess TON blockchain tools to check wallet info, tokens, send transfers, resolve .ton names, trade on DEX, and manage autonomous agent wallets.
openclaw skills install tongatewayAgent Gateway gives you 16 tools to interact with TON blockchain. Check balances, view tokens/NFTs, send transfers, resolve .ton names, place DEX orders, and deploy autonomous agent wallets.
MCP package: @tongateway/mcp (install via npx -y @tongateway/mcp)
If you get "No token configured" errors, authenticate first:
auth.request — you'll get a one-time linkauth.get_token with the authId — you'll get a token| Tool | Params | Description |
|---|---|---|
wallet.info | — | Wallet address, TON balance, account status |
wallet.jettons | — | All token balances (USDT, NOT, DOGS, etc.) |
wallet.transactions | limit? (number) | Recent transaction history |
wallet.nfts | — | NFTs owned by the wallet |
| Tool | Params | Description |
|---|---|---|
transfer.request | to, amountNano, payload?, stateInit? | Queue a TON transfer for owner approval |
transfer.status | id | Check status: pending, confirmed, rejected, expired |
transfer.pending | — | List all pending transfer requests |
| Tool | Params | Description |
|---|---|---|
lookup.resolve_name | domain | Resolve .ton domain to address. ALWAYS use before transfer when user gives a .ton name |
lookup.price | currencies? | TON price in USD/EUR/etc. |
| Tool | Params | Description |
|---|---|---|
dex.create_order | fromToken, toToken, amount, price | Place a limit order. Price is human-readable (e.g. 20 = "1 USDT = 20 AGNT") |
dex.pairs | — | List available trading pairs |
| Tool | Params | Description |
|---|---|---|
agent_wallet.deploy | — | Deploy a dedicated wallet contract. WARNING: agent can spend funds without approval |
agent_wallet.transfer | walletAddress, to, amountNano | Send TON directly from agent wallet |
agent_wallet.info | walletAddress? | Balance, seqno, status. Omit address to list all |
| Tool | Params | Description |
|---|---|---|
auth.request | label? | Generate a one-time auth link |
auth.get_token | authId | Retrieve token after user connects wallet |
Amounts are in nanoTON: 1 TON = 1,000,000,000 nanoTON
| TON | nanoTON |
|---|---|
| 0.1 | 100000000 |
| 0.5 | 500000000 |
| 1 | 1000000000 |
| 10 | 10000000000 |
Token decimals: TON/NOT/DOGS/BUILD/AGNT/PX/CBBTC = 9 decimals. USDT/XAUT0 = 6 decimals.
wallet.info()
→ Address: 0:9d43...0c02, Balance: 823.18 TON, Status: active
wallet.jettons()
→ USDT: 107.79, NOT: 3,186,370.60, BUILD: 45,277.57
lookup.resolve_name({ domain: "alice.ton" })
→ alice.ton → 0:83df...31a8
transfer.request({ to: "0:83df...31a8", amountNano: "500000000" })
→ Transfer request created. Approve in your wallet app.
dex.create_order({ fromToken: "NOT", toToken: "TON", amount: "10000", price: 0.000289 })
→ Order placed on open4dev DEX. Approve in your wallet app.
agent_wallet.deploy()
→ Agent Wallet deployed at EQCT1...
agent_wallet.transfer({ walletAddress: "EQCT1...", to: "0:abc...", amountNano: "500000000" })
→ Transfer executed. No approval needed.
lookup.resolve_name when the user gives a .ton domain~/.tongateway/token across restartsSee SECURITY.md for full security model details.