One seed. Ten chains. USDT-first.
An open-source Next.js wallet template built on Tether's Wallet Development Kit. Solana, TRON, TON, Ethereum, BSC, Polygon, Arbitrum, Base, and Optimism — all from a single BIP-39 seed. Designed for human users and AI agents alike.















+3Ten chains from one seed
Solana via @tetherto/wdk-wallet-solana, TRON and TON via their own modules, plus five EVM chains sharing a single WalletManagerEvm with per-chain RPCs.


USDT-first surface
Tether's canonical USDT deployments are first-class on every chain that has one. XAUt surfaces on Ethereum and TRON.
Encrypted local vault
AES-GCM with 250,000-iteration PBKDF2, all via WebCrypto. The seed never leaves the device — not even to a backend, because there isn't one.
AI-agent-ready→
Built-in MCP server at /api/mcp exposes read tools to any agent that speaks the Model Context Protocol. Walk-through in /agents.
Watch any address
Read-only tracking across all ten chains via raw RPC, no keys required. Perfect for portfolio dashboards and treasury views.
Mainnet ↔ Testnet
A single toggle re-binds every chain to its testnet, with faucet shortcuts on zero-balance accounts. Default is testnet to keep first-run risk-free.
Built on Tether WDK. Programmable from any AI agent.
The same @tetherto/wdk integration that powers the wallet UI is exposed to AI agents through an open Model Context Protocol server. Same chains, same RPCs, same address resolution. Zero glue code, zero seed exposure.
Compatible with any MCP client — Claude Desktop, Cursor, Continue, Cline, Windsurf, or your own runtime.
Read the agent guideimport { openWallet, sendToken } from "@/lib/wdk-client";
import { networkSpec } from "@/lib/chains";
// One seed, every chain — same SDK the wallet UI uses.
const wdk = await openWallet(seed, "mainnet");
const usdt = networkSpec("polygon", "mainnet")
.tetherTokens.find(t => t.symbol === "USDT")!;
await sendToken(wdk, "polygon", usdt.address, recipient, 100_000_000n);