About ton-send
ton-send is a skill for transferring TON and jettons, with support for TON DNS resolution. It includes transaction simulation, confirmation, and status-polling steps.
Key features
- 01Send TON and jettons
- 02Resolve TON DNS domains
- 03Simulate transactions and inspect expected changes
- 04Require confirmation before sending
- 05Poll transaction status
Use cases
- 01Transfer TON to an address
- 02Send to a .ton or .t.me domain
- 03Check jetton balance before transfer
- 04Preview transaction effects before sending
MCP support
The skill uses MCP tools for TON and jetton transfers, transaction simulation, and forward and reverse DNS resolution.
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ ton-org/ skills --skill ton-sendAfter installing, type/ton-sendin Claude Code to confirm it loaded.
Details
From the project READMESend TON & Tokens
Transfer TON or jettons to any address. Supports TON DNS resolution for .ton and .t.me domains.
MCP Tools
| Tool | Required | Optional |
|---|---|---|
send_ton | toAddress, amount | comment, walletSelector |
send_jetton | toAddress, jettonAddress, amount | comment, walletSelector |
emulate_transaction | messages | validUntil |
resolve_dns | domain | — |
back_resolve_dns | address | — |
Workflows
Send TON
- If the user provides a DNS name (e.g.,
foundation.ton,user.t.me) instead of a raw address, callresolve_dnsfirst - Ask one short yes/no confirmation that restates the amount and recipient
- Call
send_tonwith address and amount - Poll
get_transaction_statuswith the returnednormalizedHashuntil status iscompletedorfailed(seeton-balanceskill). User can ask to skip polling.
Send Jetton (Token)
- If user mentions a token by name, call
get_known_jettons(seeton-balanceskill) to find thejettonAddress - Call
get_jetton_balanceto verify sufficient balance - Ask one short yes/no confirmation before sending
- Call
send_jettonwith thejettonAddress,toAddress, andamount - Poll
get_transaction_statusuntil completed or failed
Notes
- Amounts are human-readable (e.g.,
"1.5"= 1.5 TON,"100"= 100 tokens) - Use
emulate_transactionto dry-run any transaction before sending — it returns expected balance changes (TON and jetton), fees, and high-level actions so you can verify the outcome - Always confirm with the user before executing a transfer; prefer the host client's structured confirmation UI when available, otherwise accept natural-language yes/no and do not require a fixed confirmation phrase
- After sending, poll
get_transaction_statusby default. User can specify whether to check status. - If no wallet is configured, use the
ton-create-walletskill first
Comments
Markdown supported