Skip to content
Docs / Overview
Select Foundation

Documentation

Everything you need to use Select Foundation's products, back a launch, or build on our APIs. token.select is the flagship, and where most people begin.

Live on Robinhood token.select
Token launches without the catches.
A fair-launch token launchpad. Contributors support projects up front and earn a share of trading fees for the life of the project. Team, Marketing, and Community allocations vest by contract.
Contribute to a Genesis

A token is only as strong as the community behind it, and on most launchpads that community thins out the moment people sell. token.select is built the other way around. The people who support a project earn a share of its trading fees for as long as it trades, so their reason to care does not disappear when they sell. It grows as the project grows.

That gives supporters a reason to show up early and to keep championing a project long after. You contribute during the Genesis window to earn a share of the project's fees for its lifetime, a reward that only pays off if the project survives, so the incentive is to help it get there. On many launchpads the majority of projects never reach live trading. A community with a lasting reason to participate is how a launch gets across that line.

token.select also takes nothing from contributions. Before a project migrates, the platform takes nothing from its supporters; every contribution goes into the project, not the platform. For a team, that is the real draw: not just a launch, but a community paid to stay. Everything else token.select does exists to make that trust possible: everyone contributes at the same price, there is no way to snipe or hide supply, team allocations vest by contract, and liquidity is locked.

Three things matter at a launch

Fair

No insiders, no sniping, no hidden advantages.

  • Flat bonding curve. The first contribution and the last pay the same price.
  • No early-access path and no way to buy before the window opens, so there is nothing to snipe.
  • A per-wallet cap spreads contributions across more wallets.
  • 100% refundable until the target is reached.

Transparent

No surprise unlocks, no fake circulating supply.

  • The full supply is published before launch.
  • Circulating supply is calculated on chain.
  • Team, Marketing, and Community allocations vest by contract.

Incentivised

Support projects early and keep earning as they grow.

  • Contributors earn protocol fees for the lifetime of the project.
  • Rewards are distributed pro rata to your contribution.
  • Fees come from real trading activity.
Foundation

The $SELECT Token

$SELECT sits at the centre of everything Select Foundation builds. It launches first, through token.select itself, and from then on every new project pairs a slice of its liquidity with $SELECT. The more the ecosystem grows, the more that flows back to it.

Total supply
1,000,000,000
Network
Robinhood Chain

How it works

  • $SELECT launches through the same Genesis flow as every other token on token.select. Contribute ETH while the Genesis window is open, receive $SELECT at the flat price, and earn a pro rata share of the $SELECT/ETH pool's trading fees after migration.
  • When the $SELECT target is hit, the contributed ETH pairs with 100% of the $SELECT LP allocation to seed a single $SELECT/ETH pool.
  • Every project launched afterwards opens a second pool that pairs it with $SELECT, seeded with 10% of its liquidity. That pool starts with only the project's own tokens, set just above the launch price, so it holds no $SELECT at first. As the project climbs, the buying pulls $SELECT in from the market to fill it. So every project that does well feeds steady demand for $SELECT, by the protocol itself, not by treasury buying.
Buys route through the project pools. The project/$SELECT pool pulls $SELECT off the market as the price climbs.

Allocation

The full $SELECT token allocation breakdown will be published before launch.

Addresses

$SELECT · Robinhood ChainPublishes at launch

The $SELECT address publishes when it launches on Robinhood Chain.

Protocol contracts · Robinhood Chain

Get Started

Quick Start

Four steps take you from first look to earning a share of trading fees.

Pick a path

Get Started

Robinhood Chain

token.select runs on Robinhood Chain, a fast Ethereum layer-2. If you've used an EVM chain before, this will feel familiar. If you haven't, here is everything you need to get set up and funded.

Network details

Most wallets let you add a network under Settings. Enter these:

Network nameRobinhood Chain
Chain ID4663
CurrencyETH
RPC URLhttps://rpc.mainnet.chain.robinhood.com
Block explorerrobinhoodchain.blockscout.com

Add it to your wallet

  • MetaMask, Rabby, Phantom, or any EVM wallet. Add a custom network with the details above, then switch to it.
  • Robinhood Wallet. Robinhood Chain is built in, so there is nothing to add.

Fund your wallet

Gas is paid in ETH, and you contribute to launches in ETH, so you need some ETH on Robinhood Chain. Bring it over in about a minute with any of these:

RouteSpeedGood for
Across or RelaySecondsThe fastest way to bring ETH across
Jumper (LI.FI)Seconds to minutesCompares routes and can swap on the way
StargateMinutesOmnichain transfers
Arbitrum canonical bridge~10 min inThe trustless default from Ethereum
i
Bring a little extra on your first bridge.You need a small amount of ETH for gas before you can do anything else, so cover both your first contribution and a few transactions.
Get Started

Account and Wallet

Sign in however suits you, with a wallet, an email, or a social account. If you don't bring your own wallet, we quietly create a self-custodied one for you through Privy, and you stay in control of it.

Sign in methods

Wallet (MetaMask, Rabby, Phantom, Robinhood Wallet, any EVM) Email Google X (Twitter) Telegram Farcaster

Two kinds of wallet

Sign-in pathWalletWho holds the keys
Wallet (MetaMask, Rabby, Robinhood Wallet, etc.)Your existing walletYou. We never see the key.
Email or socialPrivy-managed embedded walletYou. Keys are split client-side using Shamir's Secret Sharing. No party ever has the full key.

Either way you keep custody. The embedded wallet path just removes the seed-phrase step.

Your profile

Open Profile in the top right of the app. Five tabs sit across the top: Profile, Notifications, API keys, Agent policies, Billing.

  • Username. Your public display name. Edit and save.
  • Referral code. If you are a whitelisted referrer, your 8-character code appears here. A launcher can enter it on the Tokenomics step to credit you.
  • Wallet and Credits. Available credit balance, Fund Wallet, Manage Billing.
  • Account permissions. What your account is allowed to do (Create Projects, Create Content, Invite Users).

Account linking

You can link up to five identities to the same account. Wallet, Email, Gmail, X, Telegram. Sign in by email first and attach a wallet later, or attach an extra social as a recovery path. Each linked method becomes a way back in if you lose another one.

Multi-factor authentication

Open the Security and MFA section on Profile and press Set Up MFA. We strongly recommend this if your wallet is the Privy embedded wallet, because MFA is what protects your wallet if your primary login is compromised. With MFA on, a thief who hijacks your email or social can't sign transactions.

!
Recovery.Linking a second sign-in method is the simplest recovery path. If you lose access to your primary login, you can sign in with any other linked identity and the same wallet is there.
Get Started

Credits

Credits cover the AI generation inside token.select. Spend them in Mascot Studio while you build a launch, or in the standalone Studio any time. They never expire.

Topping up

Profile → Billing → Buy Credits. Payment goes through NowPayments, which accepts crypto. The Billing page shows your available balance, total earned, and a transaction history.

What they cost

Every generation surface shows the cost before you submit. Refunds are automatic if a generation fails or times out.

Where you spend them

  • Mascot Studio. Inside the launch flow. Six stages from a mascot character through to animated media.
  • Studio. Standalone, at /studio. For ongoing post-launch content. Anything you publish from Studio appears in the public Stream.
Use token.select

Contribute to a Genesis

Back a project while its Genesis window is open. The first contribution and the last one pay exactly the same price, and you can take a full refund any time before the token goes live.

How it works

1

Open a launching project

Explore → Launching projects, then open one.

2

Review the page

Target, per-wallet cap, team, roadmap, tokenomics. All on the project page.

3

Contribute

Enter an ETH amount inside your per-wallet cap. Sign. Your contribution is recorded on chain.

4

Wait for the window to close

When the target hits, the launch finalises and migrates to a live pool. Tokens distribute pro rata. The project goes live.

Refunds

You can refund 100% of your contribution any time before the target is hit. Once the target hits, the contract begins finalisation and refunds close.

If the project never hits its target inside the three-month Genesis window, the launch terminates and every contributor can claim a full refund.

Per-wallet cap

Each project sets a max per wallet. The contribute panel shows the cap and how much you have left.

Your share

Token distribution is pro rata. Contribute 1% of all contributions, receive 1% of the public allocation.

What you keep earning

After migration, contributors continue to earn a share of LP fees on every trade through the project's pool. See Fees for the split and Portfolio for how to claim.

Use token.select

Portfolio

Portfolio is where everything you've backed lives, alongside the fees you've earned. Claim across as many projects as you like in a single transaction.

What you see

Three stat cards across the top: Projects you've touched, total Contributed in ETH, and a Batch Claim selector. Two actions below: Check Claimable Fees and Claim Selected Fees.

Four tabs filter the project list: All, Genesis Window, Live, Archived.

Genesis Window rows

For projects mid-Genesis: project card with progress bar, percent funded, contributed vs target, and your contribution. From here you can open the project to top up or refund.

Live rows

For projects that have migrated: project card with your Contribution, your Holdings in tokens and USD, and two buttons.

  • Check Tokens. Fetch your current token balance from the project's contract.
  • Check Fees. Fetch the LP fees waiting for you on that project. The number rolls into the Batch Claim selector at the top.

Batch claim

Select up to 20 projects with claimable fees. Claim Selected Fees sweeps everything in a single transaction. Cheaper than claiming one by one.

i
Only token.select projects.Portfolio only shows projects you've touched on token.select. Tokens you bought elsewhere don't appear here.
Use token.select

Trade

A simple token-to-token swap, powered by Uniswap's Universal Router. It finds the best route for you across V2, V3, and V4, including paths that hop between them.

How a swap works

1

Pick sell and buy

MAX fills your full sell balance.

2

Get a quote

The Universal Router finds the best route across V2, V3, and V4. Cross-protocol paths are supported (for example V3 to unwrapped ETH to V4).

3

Sign and confirm

The first time you sell a given token you sign a Permit2 approval. One signature covers future swaps of that token through the same router.

Why $SELECT shows up in routes

Every project on token.select seeds two Uniswap pools at migration: project/ETH (90% of the LP allocation) and project/$SELECT (the remaining 10%). The Universal Router can hit either pool, or split across both, based on trade size, pool depth, price impact, and gas. See Token Mechanics for the detail.

Slippage

The router shows expected output before you sign. Lower-liquidity pools have wider spreads. Tighten slippage on bigger trades, especially in the first days after a project goes live when pool depth is shallow.

Use token.select

Claim Allocations

Once a project migrates, its vested allocations open as three streams, one each for Team, Marketing, and Community. You withdraw whatever has unlocked whenever you want.

Three streams

  • Team stream. Duration and start delay set at launch.
  • Marketing stream. Duration and start delay set at launch.
  • Community stream. Duration and start delay set at launch.

Vesting is anchored to migration. The contract enforces a minimum 24-hour start delay and a minimum 24-hour duration on every stream, so nothing releases in the first 24 hours after migration. Streams release linearly over their configured duration.

The claim page

Open Claim Allocations from the Admin tab on the project. Three sub-tabs across the top: Team, Marketing, Community. Each stream shows expected payout, withdrawn so far, remaining, recipient wallet, start and end dates.

Withdrawing

Press Withdraw. The vested-and-unclaimed amount moves to the recipient's wallet. You can withdraw any time. There's no schedule that forces frequent withdrawals.

i
Vesting is contract-enforced.Streams release linearly on the schedule set at launch. The team cannot accelerate, pause, or revoke.
Launch

Why launch here

Most launchpads let a team bundle the supply and dump on the people who showed up. token.select is built the other way around. Everyone who backs your launch earns a share of its trading fees for as long as the token trades, and keeps earning even after they sell, which gives a token the kind of community that actually sticks around.

Your community is paid to show up, and to stay

Everyone who contributes during your Genesis window earns a share of the project's trading fees, pro rata, for the life of the project. That share keeps paying whether or not they still hold the token, so their reason to support it does not vanish the moment they take profit. It is the single biggest reason launches here reach migration.

Fair by default, so buyers trust it

Fixed supply, a per-wallet cap during Genesis, and one price for everyone from the first contribution to the last. No sniping, no bundling, no insider-sized bags. Any team allocation vests on-chain over months, so you can't dump even if you wanted to. That is what makes people comfortable buying in.

Liquidity stays locked

Both of a project's pools stay locked in the contract for its entire life. Nobody can pull the liquidity, shrink it, or burn it, because the code does not allow it. There is no rug to pull.

Every launch feeds the wider ecosystem

Your token pairs with $SELECT under the hood. As your project climbs, it pulls steady demand into $SELECT, and that momentum flows back to every project on the platform. You get a second trading venue and shared upside without doing anything.

Bring a partner, grow together

Whitelisted referrers who send a launch earn a share of its fees for life. Their incentives line up with yours from day one, so the people promoting your token actually want it to win. See Referrals.

Ready to go? Head to Launch a Token.

Launch

Launch a Token

Two screens, one transaction, and your project is live. Liquidity is locked, your team tokens vest on-chain so buyers know you can't dump, and everyone who backs the launch keeps earning a share of trading fees for as long as the token trades, even after they sell.

Step 1. Build Project

Project name, ticker, category, tagline (150 char max), about (2,000 char max). Logo at 1080x1080 and banner at 1920x1080. Socials. Optional sections for Roadmap, Team, and Media.

The Card Preview on the right updates live as you type. Use Mascot Studio to generate visuals without leaving the flow.

Step 2. Tokenomics

Pick a mode at the top.

  • Default. A standard configuration is pre-filled. The fastest path.
  • Custom. Every parameter is editable.

Funding targets

  • Target (ETH). The total ETH a launch needs to migrate to live trading. Default 7 ETH.
  • Max per person (ETH). The per-wallet cap on contributions, set by the team.

Allocations

Total supply is fixed at 1,000,000,000. Five buckets. Team, Marketing, Community are sliders and vest. The public allocation and liquidity allocation auto-calculate to fill the rest.

BucketDefaultVests?Notes
Team10%Yes30-day cliff, then 6 months linear. Starts at migration.
Marketing10%Yes7-day cliff, then 3 months linear. Starts at migration.
Community10%Yes7-day cliff, then 3 months linear. Starts at migration.
Public allocation35%NoPro rata to contributors at finalisation.
LP (Liquidity Pool)35%NoPaired with the contributed ETH, locked.
i
Vesting is migration-anchored.Streams start when the token migrates to its live pool, not when you fire the launch transaction. The Vesting Starts dropdown counts from migration.

Referral code

Optional 8-character code field. Enter a whitelisted partner's code to credit them. Changes the LP fee split. See Referrals.

Launch now or Schedule launch

Two buttons at the bottom of the right panel.

  • Launch now. Fires the launch transaction immediately. The Genesis window opens at the next block.
  • Schedule launch. Opens a calendar and time picker. Must be at least 2 hours from now and within 30 days. The Genesis window then runs until the target is reached, up to a maximum of three months.
i
Tokenomics lock at launch.Name, symbol, supply, allocations, vesting durations, referral, and the launch schedule all freeze when the launch transaction is sent. Project presentation (description, media, roadmap, socials) stays editable.
Launch

Genesis Window

The Genesis window is the open contribution period, plus the on-chain moment that carries a project into live trading. It stays open until the target is met, for up to three months.

Launch txWindow opens ContributeRefundable Target hitRefund window closes MigrateLP seeded, vesting opens LiveTrading on Uniswap
Launch transaction. Contribute. Target hit. Migration. Live trading.

Phases

1

Launch transaction

The launcher pays the deployment fee. The factory deploys the project token. The Genesis window opens at the start block.

2

Contribution period

Contributors send ETH inside the per-wallet cap. Refunds available any time. Runs until the target hits or the three-month window expires.

3

Target hit

Refunds close. The contract begins finalisation.

4

Migration

The contributed ETH (minus the migration fee) pairs with the LP allocation and seeds the live Uniswap pool. Team, Marketing, and Community vesting streams open.

5

Live trading

The project enters Live. Contributors hold tokens. The $SELECT-paired pool starts collecting fees.

If the three months expires

The launch terminates. The project doesn't migrate. Every contributor can claim a 100% refund.

Launch

Referrals

Referrers are handpicked by the Select Foundation team for now. If that sounds like you, get in touch. We're keeping the program small while we get it right.

How they work

Whitelisted referrers get an 8-character referral code, shown on the Profile page. When a launcher enters that code on the Tokenomics step, the LP fee split on the project's pools changes for the life of the project. The referrer earns 10%, the team's share rises from 10% to 15%, and contributors take a slightly smaller pro rata share to make room.

Fee split with and without a referrer

RecipientNo referrerWith referrer
Project team10%15%
Referrern/a10%
Service fee20%20%
Contributors (pro rata)70%55%

Apply to become a referrer

Email accounts@envisionlabs.io.

Protocol

Token Mechanics

Every launch on token.select comes with the same on-chain guarantees, so buyers can trust it and you don't have to build any of it yourself. Supply is fixed, liquidity stays locked for the life of the project, and team tokens vest by contract so nobody can dump on the people who backed them. Underneath, your token pairs with $SELECT, which gives it a second venue and steady demand with no work on your side.

Supply

  • Total supply is 1,000,000,000 tokens.
  • Split across Team, Marketing, Community (vested), and the public allocation and liquidity (deployed at migration).
  • No inflation. No protocol-driven burns after launch.

Pairing with $SELECT

When a project migrates, it opens two pools. Most of the liquidity, 90%, goes into the project/ETH pool, where the price is set and most trading happens. The other 10% goes into a pool that pairs the project with $SELECT. That pool opens with only the project's own tokens, set in a concentrated range just above the launch price, so it holds no $SELECT yet. As the project climbs into that range, the buying pulls $SELECT in from the open market to fill it. The 90/10 split is fixed by the factory via ethPoolRatioBps.

Trader Universal RouterV2, V3, V4 Project / ETHPrice discovery Project / $SELECTRouting surface, fees flow Token out
The Universal Router can route through either pool, or split across both. Fees from the project/$SELECT pool accrue to the protocol.

LP positions

Both pools stay locked in the factory for the life of the project. There is no way to pull the liquidity out, shrink it, or burn it. The factory can only collect the trading fees, which go to the recipients in Fees.

Migration-anchored vesting

Team, Marketing, and Community allocations vest by contract. The clock starts at migration. Each bucket's start delay and duration are set at launch, with a contract-enforced minimum of 24 hours on both. Nobody can accelerate, pause, or revoke them.

What's immutable after launch

  • Token name, symbol, total supply.
  • Allocation percentages, vesting durations.
  • Genesis target and per-wallet cap.
  • Pool addresses, including the $SELECT-paired pool.
  • Referrer (if set).
Protocol

Fees

Fees are what keep the incentive flywheel turning and the infrastructure behind it running. There are two small fees at launch, then an ongoing share of trading fees that flows back to the people who built and backed the project.

Fee schedule

FeeWhenWho paysLive value
Deployment feeLaunch transactionLauncherRead from deploymentFee() on the Factory
Migration fee (flat)Target hit, migration beginsDeducted from the contributed ETHRead from migrationFee()
Migration fee (percentage)Target hit, migration beginsDeducted from the contributed ETHA percentage of the contributed ETH (migrationFeePercentage)
LP fee shareEvery trade on the project's poolTrader (standard Uniswap LP fee)Split four ways, see below

Live values come from the Factory contract. The in-app figure is always authoritative if it differs from anything quoted here.

LP fee split

Trades on either of a project's pools pay the standard Uniswap LP fee. The protocol collects that fee and distributes it across four recipients. The split changes if a referrer was set at launch.

RecipientNo referrerWith referrer
Project team10%15%
Referrern/a10%
Service fee20%20%
Contributors (pro rata)70%55%

The split above applies to a project's project/ETH pool. Fees from the project/$SELECT pool accrue to the protocol, in both the project token and $SELECT.

Claiming your share

Contributors claim their fees from Portfolio. Each project row has Check Fees. Selected rows can be claimed together using Claim Selected Fees.

Protocol

Contracts

Deployed addresses on Robinhood Chain.

Contract addresses publish when the contracts deploy on Robinhood Chain at launch.

$SELECT

$SELECT tokenPublishes at launch

Factory

The factory deploys new project tokens, holds the platform fee parameters, and indexes legitimate tokens launched through it. The factory sits behind a proxy. Interact via the proxy address.

Factory (proxy)Publishes at launch
ImplementationPublishes at launch

Other deployments

Token deployerPublishes at launch
Stream managerPublishes at launch
AllocationValidator (library)Publishes at launch
V3MathLib (library)Publishes at launch

Reading live values

Call these read functions on the Factory proxy.

  • deploymentFee(). Flat launch fee in wei.
  • migrationFee(). Flat migration fee in wei.
  • migrationFeePercentage(). Percentage cut of the contributed ETH at migration, in BPS.
  • serviceChargeRate(). Select's share of LP fees, in BPS.
  • creatorFeeNoReferrer() and creatorFeeWithReferrer(). Team's share of LP fees, in BPS.
  • referrerFee(). Referrer's share of LP fees, in BPS.
  • ethPoolRatioBps(). Share of LP allocation seeded into the project/ETH pool, in BPS. The remainder seeds the project/$SELECT pool.
  • selectToken(). Current $SELECT address used for pairing.
  • getDeployedTokensCount(), getAllDeployedTokens(), getDeployedTokensRange(start, end). Index of every token deployed through this factory.
  • authorizedReferrers(address). Whether an address is whitelisted as a referrer.
!
Verify before signing.Always check addresses against the project's own page before approving a transaction. Don't trust addresses an agent pasted in chat.
Security

Security Best Practices

Custody stays with you here, and a few simple habits keep your account and your funds safe. Here is how it works and what is worth doing.

Wallet custody

You have two flavours.

  • Bring your own wallet. MetaMask, Rabby, Phantom, Robinhood Wallet, or any EVM wallet through Privy's wallet flow. We never see the key. Standard self-custody.
  • Managed wallet via Privy. Created automatically when you sign in by email or social. Keys are split client-side using Shamir's Secret Sharing. You hold the device share, Privy holds an auth share, and an encrypted recovery share sits in escrow for the recovery flow. Keys reassemble briefly in an isolated client environment during signing and are never persisted whole. No party can sign on its own.

Either way, you remain in custody.

MFA

If your wallet is the managed Privy wallet, MFA is your main defence against a hijacked email or social login. Enable it at Profile → Security and MFA → Set Up MFA. With MFA on, a compromised primary login can't sign transactions on its own.

Recovery via account linking

Link more than one identity to the same account. Wallet, email, Gmail, X, Telegram. Each linked method is a way back into the same managed wallet. If your primary sign-in is lost, any other linked method recovers it.

API keys

If you create API keys for partner integrations or AI agents:

  • The key value is displayed exactly once. Store it in a secrets manager immediately. We can't show it again.
  • Pick the minimum scope. read is enough for browsing data. Add prepare_tx only when the agent needs to build calldata. webhook_admin is reserved for v1.1.
  • Set an expiry. Treat keys as temporary credentials.
  • Set a per-minute rate limit on the key.
  • Revoke a key the moment it leaves a controlled environment.

Agent spending caps

If you let an AI agent contribute on your behalf via the Agent Policies surface, the policy is your only on-chain guarantee.

  • Set a tight per-transaction limit.
  • Set a tight daily limit.
  • Use allowed token addresses to restrict the agent to specific projects.
  • Only flip Enable AI Agent Auto-Submission after you've watched the agent run under a small cap.
  • Revoke at the first sign of weird behaviour. Revocation is immediate.

Verify before you sign

Always check the address you're approving against the project's own page on token.select. Don't trust an address pasted by an agent in chat. Don't approve a token swap on a contract you haven't confirmed.

What to keep an eye on

  • Browser extensions that ask for clipboard or screen access while you're on the app.
  • Fake support DMs. Foundation team will never DM you first.
  • "Sign this and you'll get airdropped" prompts. We don't do that.
Developers and Partners

API Keys

API keys are how partners and agents get in. A single key gives you authenticated access to both the REST API and the MCP server, scoped to exactly what you need.

Create a key

Profile → API keys → fill the form.

  • Label. Optional. Something like "MCP server (local dev)".
  • Scopes. See below.
  • Expires at. Optional. Set one if the key is for a temporary integration.
  • Per-minute rate limit. Optional. Useful for protecting upstream services.

Press Create key. The value is shown once. Copy it to a secrets manager. We can't show it again.

Scopes

ScopeWhat it grants
readList projects, presales, market data. Safe default.
prepare_txCall /transactions/presale/*/prepare to generate unsigned calldata.
webhook_adminReserved for outbound webhook subscriptions in v1.1.

Use the key

Send the key as a bearer token in the Authorization header.

curl -H "Authorization: Bearer sk_live_..." \
     https://api.token.select/api/user-client/projects

Rotate and revoke

The Your keys list shows everything you've created. Revoke any key the moment it leaves a controlled environment. Revocation is immediate.

Developers and Partners

REST API

Read project data, list presales, search content, or prepare contribution calldata. The discovery endpoints are open to everyone, and anything that touches a wallet sits behind an API key.

Endpoint

Public endpoints are mounted under /api/user-client/. The OpenAPI 3.0 spec is at openapi.public.yaml.

Discovery (no auth)

MethodPathPurpose
GET/api/user-client/projectsList projects
GET/api/user-client/projects/{id}Project details
GET/api/user-client/projects/{projectId}/milestonesProject milestones
GET/api/user-client/projects/{id}/teamProject team
GET/api/user-client/projects/{projectId}/chat/messagesProject chat messages
GET/api/user-client/tokens/presaleList presale tokens
GET/api/user-client/tokens/{tokenAddress}/presalePresale details for a token
GET/api/user-client/projects/{projectId}/presale-metrics-rawRaw presale metrics
GET/api/user-client/contentList content
GET/api/user-client/searchCross-entity search
GET/api/user-client/feed/for-youPersonalised feed
GET/api/user-client/feed/latestLatest content
GET/healthAPI and database health

Transaction preparation (read + prepare_tx)

Send your API key as a bearer token. Returns unsigned calldata you sign with your own wallet.

MethodPathPurpose
POST/api/transactions/presale/{tokenAddress}/prepareBuild contribution calldata
POST/api/transactions/presale/{tokenAddress}/refund/prepareBuild refund calldata

Example

curl -H "Authorization: Bearer sk_live_..." \
     https://api.token.select/api/user-client/projects?limit=10

Need wider write access (claim flows, billing, content generation, project admin)? Those endpoints sit behind user sessions, not API keys. Talk to us if you need them as a partner.

Developers and Partners

MCP and Agents

token.select runs an MCP server so AI agents can read project state, prepare transactions, and, under a policy you set, contribute for you inside strict limits.

Protocol

  • Model Context Protocol, version 1.2.0.
  • Transports: SSE (hosted) and stdio (local).
  • Server name: token-select-mcp.

Connect an agent

Two paths to connect.

  1. Browser session. Open /mcp/auth while signed in. Click Attach Session. The platform returns an endpoint URL. Paste it into your MCP client's config.
  2. API key. Generate an API key on Profile → API keys with at least the read scope. Pass the key as a bearer token in the MCP client config. This is the persistent path for production agents.

What an agent can do

Read

List projects, fetch details, contributors, milestones, team, your contributions, project chat.

Discover

Search across projects and content. Pull personalised or chronological feeds.

Prepare transactions

Build contribution and refund calldata. Return prepared transactions for you to sign.

Execute under policy

With a session key bound to a policy, contribute autonomously within your per-transaction and daily caps.

Agent policies

A policy is the cap you give an agent. Open Profile → Agent policies and fill in:

  • Per-Tx Limit (wei). Max ETH per transaction.
  • Daily Limit (wei). Max ETH in a 24h window.
  • Allowed Token Addresses. Optional. Restrict to specific tokens.
  • Session Hint. Optional. Label for the agent session.
  • Enable AI Agent Auto-Submission. Toggle. When on, authorised agents can sign transactions automatically under the policy.

Press Create Policy. The policy appears under Existing Policies with today's usage. Revoke any time. Every spend is logged.

!
Start tight.Conservative caps first. Watch the agent. Raise deliberately. The cap is your only on-chain guarantee.

Tool reference

Around 40 tools across 8 categories. The live MCP server is the source of truth (your client lists schemas via tools/list at connection time).

Auth

  • get_auth_session_url
  • auth_login_instructions
  • set_auth_token
  • clear_auth_token
  • whoami_status

Discovery

  • list_projects
  • list_presale_tokens
  • search_all
  • feed_for_you
  • feed_latest

Project info

  • get_project_details
  • list_project_milestones
  • get_project_team
  • list_project_contributors
  • get_project_chat
  • get_project_chat_stream_url
  • get_project_contributions_and_refunds
  • get_refunds_by_address

Presale and token

  • get_presale_token
  • get_raw_presale_metrics
  • get_raw_presale_metrics_by_project
  • get_wallet_contribution_for_token
  • draft_token_config, validate_token_config

Content

  • list_content
  • get_content_details
  • list_content_comments

User state

  • get_my_contributions
  • get_my_contributions_for_project
  • get_my_contribution_stats
  • get_my_contributed_projects

Transaction preparation

  • prepare_presale_contribute_tx
  • prepare_presale_refund_tx

Agent policy

  • request_agent_spending_policy
  • authorize_policy_session_key
  • revoke_policy_session_key
  • list_agent_policies
  • revoke_agent_policy
  • list_agent_logs
  • execute_presale_contribution_via_policy
  • submit_agent_contribution
  • confirm_agent_contribution
  • agent_contribute_and_confirm
Resources

FAQ

The things people ask most, answered up front.

How does $SELECT launch?

Through the same Genesis flow as every other token on token.select. When the target hits, 100% of the contributed ETH is paired against $SELECT in a single pool. The full allocation breakdown publishes before launch.

How are LP fees split?

Project team 10%, or 15% with a referrer. Referrer (if set) 10%. Service fee 20%. Contributors get the rest pro rata: 70% without a referrer, 55% with one.

Why does $SELECT show up in my swap routes?

Every token launched on token.select seeds two Uniswap pools: 90% of its LP allocation into project/ETH, 10% into project/$SELECT. The Universal Router can hit either pool, or split across both, based on trade size, pool depth, price impact, and gas.

Who holds my keys if I sign in with email?

You do. Privy splits the key client-side using Shamir's Secret Sharing. No party has the full key. Reassembly happens briefly in an isolated client environment during signing.

Should I enable MFA?

If your wallet is the managed Privy wallet, yes. It's the main defence against a compromised email or social login.

What happens if a project misses its three-month Genesis window?

The launch terminates. Every contributor can claim a 100% refund.

Can I refund mid-Genesis?

Yes. Any time before the project migrates to a live pool, hit Refund on the contribute panel. You get 100% back.

Can a launcher change tokenomics after launch?

No. Name, symbol, supply, allocations, vesting, referrer, launch schedule, and pool addresses are frozen at the launch transaction. Presentation stays editable.

How does vesting work?

Team, Marketing, and Community allocations stream linearly. The clock starts at migration, with a contract-enforced minimum 24-hour start delay and duration. Claim them from the project's Admin page, under Claim Allocations.

How do I become a referrer?

Email accounts@envisionlabs.io. We whitelist partners individually.

Where do API keys appear after I create them?

The value is shown once on creation, then never again. Store it immediately. Revoke from the same page if anything goes wrong.

Can I let an agent contribute without me signing every time?

Yes, once you've created an agent policy with caps and enabled AI Agent Auto-Submission. Revoke any time. Every action is logged.