Agent 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 tokenToolParamsDescriptionwallet.info—Wallet address, TON balance, account statuswallet.jettons—All token balances (USDT, NOT, DOGS, etc.)wallet.transactions``limit? (number)Recent transaction historywallet.nfts—NFTs owned by the wallet
ToolParamsDescriptiontransfer.request``to, amountNano, payload?, stateInit?Queue a TON transfer for owner approvaltransfer.status``idCheck status: pending, confirmed, rejected, expiredtransfer.pending—List all pending transfer requests
ToolParamsDescriptionlookup.resolve_name``domainResolve .ton domain to address. ALWAYS use before transfer when user gives a .ton namelookup.price``currencies?TON price in USD/EUR/etc.
ToolParamsDescriptiondex.create_order``fromToken, toToken, amount, pricePlace a limit order. Price is human-readable (e.g. 20 = "1 USDT = 20 AGNT")dex.pairs—List available trading pairs
ToolParamsDescriptionagent_wallet.deploy—Deploy a dedicated wallet contract. WARNING: agent can spend funds without approvalagent_wallet.transfer``walletAddress, to, amountNanoSend TON directly from agent walletagent_wallet.info``walletAddress?Balance, seqno, status. Omit address to list all
ToolParamsDescriptionauth.request``label?Generate a one-time auth linkauth.get_token``authIdRetrieve token after user connects wallet
Amounts are in nanoTON: 1 TON = 1,000,000,000 nanoTON
TONnanoTON0.11000000000.5500000000110000000001010000000000
Token decimals: TON/NOT/DOGS/BUILD/AGNT/PX/CBBTC = 9 decimals. USDT/XAUT0 = 6 decimals.
text
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
text
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.
text
dex.create_order({ fromToken: "NOT", toToken: "TON", amount: "10000", price: 0.000289 })
→ Order placed on open4dev DEX. Approve in your wallet app.
text
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.