Creating tokens
Launch a token on an EVM chain or Solana.
A launch has two halves: build an unsigned payload from your metadata, then sign and submit it. This guide covers the build; see Wallets & signing for the second half.
Supported chains
Chains are identified by CAIP-2. Pass these ids in the
chains array. This table is generated from the SDK's chain metadata, so it always matches what
@printr/sdk actually supports.
| Chain | CAIP-2 | Native |
|---|---|---|
| Ethereum | eip155:1 | ETH |
| BNB | eip155:56 | BNB |
| Unichain | eip155:130 | ETH |
| Monad | eip155:143 | MON |
| HyperEVM | eip155:999 | HYPE |
| Mantle | eip155:5000 | MNT |
| MegaETH | eip155:4326 | ETH |
| Base | eip155:8453 | ETH |
| Plasma | eip155:9745 | XPL |
| Arbitrum | eip155:42161 | ETH |
| Avalanche | eip155:43114 | AVAX |
| Solana | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | SOL |
A token may target multiple chains in one launch — pass several CAIP-2 ids in chains.
Walkthrough
Estimate the cost (optional)
import { , } from "@printr/sdk";
const = ({
: .,
: .,
});Use the printr_quote MCP tool (or the API) to itemize per-chain cost before committing.
Prepare the image
- Max size 500KB (base64).
- JPEG recommended — PNGs are usually too large; convert first.
- Pass either
image(base64/URL) orimage_path(local file, resolved and compressed for you).
Build the unsigned payload
import { } from "@printr/sdk";
const = await (
{
: ["eip155:8453:0xYourAddress"],
: "My Token",
: "MINE",
: "A cross-chain token.",
: ["eip155:8453"],
: { : 10 },
: "./logo.jpg",
},
,
);buildToken returns a ResultAsync with the unsigned transaction payload.
Sign and submit
Hand the payload to a signer — browser or keystore. See Wallets & signing.
Where creator fees go is controlled by fee_sink
(dev | stake_pool | buyback | liquidity_pool), defaulting to dev (the creator wallet).