Plug into Vectr.
Five contracts, eight events.
For terminals, indexers, routers and agent frameworks. The addresses, events, function signatures and endpoints needed to discover every Vectr launch on Robinhood Chain, index every trade, route a swap through a curve, and launch a token from your own app or agent.
- Chain 4663Robinhood Chain
- 4 contractsverified source
- 8 eventswhole lifecycle
- REST + SSEno polling needed
- MCPlaunch from an agent
- No API keyfor anything here
The contracts you index
Source is verified on the explorer for each address, and the ABI is on its Contract tab. These values come from GET /config at render time. Read that endpoint in your integration instead of hard-coding them.
- Chain
- Robinhood Chain
- Chain id
- 4663
- Native coin
- ETH
- RPC
- https://rpc.mainnet.chain.robinhood.com
Factory
01Launches tokens, emits TokenLaunched
FeeCollector
02Splits every trade fee, holds creator balances
Migrator
03Creates the Uniswap V3 pool at graduation
LP Locker
04Holds the LP position, no withdrawal path
Find every Vectr token
Two ways, pick by how you already work. Onchain, watch one event on the factory. Offchain, poll or stream the API.
Subscribe to TokenLaunched on the factory. The three indexed topics are token, curve and creator, so you can filter by any of them. For a backfill, call getAllTokens() and then getTokenCurve(token) for each.
GET /tokens/activity returns the latest launches and trades. GET /tokens/stream is a server-sent event feed of every indexed trade and price tick, no polling.
What to index, in lifecycle order
Eight events cover the whole life of a token: launch, every trade and its fee, the creator claiming, graduation, the pool, and the lock.
Launch
One event on the factory. Everything else keys off the curve address it gives you.
- 01
TokenLaunchedFactoryA new token and its bonding curve are deployed. token, curve and creator are indexed.
TokenLaunched(address token, address curve, address creator, address quoteAsset, string name, string symbol, string metadataURI, string subjectHandle)topic00x1bfe686d55245af5e3e3e2eba4841252eae92b2135761fa063c34661cf0d3985
Trade
Per curve. Index by the address set you learned from TokenLaunched.
- 02
BuyCurveEvery curve buy. quoteIn is gross, fee is the slice the FeeCollector took.
Buy(address buyer, uint256 quoteIn, uint256 tokensOut, uint256 fee)topic00xbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d - 03
SellCurveEvery curve sell. quoteOut is net of fee.
Sell(address seller, uint256 tokensIn, uint256 quoteOut, uint256 fee)topic00x846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc0 - 04
FeeCollectedFeeCollectorEmitted alongside each Buy and Sell. asset is the zero address for the native coin.
FeeCollected(address curve, address creator, address asset, uint256 platformFee, uint256 creatorFee)topic00xf51d4f85b9c67a6999073394e680d7eaba2ae56553370c00088941bf662f6b52
Claim
The creator wallet pulls. Nothing is pushed.
- 05
CreatorFeeClaimedFeeCollectorA creator, or the agent holding the creator wallet, pulled accrued fees.
CreatorFeeClaimed(address creator, address asset, uint256 amount)topic00x2b9a4b971a1b7ec880d82d754dfc29969048892f65278be59641f7f7161cf714
Graduate
Three events, three contracts, one block. Curve trading stops, the pool takes over.
- 06
GraduatedCurveThe curve hit its threshold and handed reserves to the migrator. Curve trading stops here.
Graduated(address token, uint256 quoteMigrated, uint256 tokensMigrated)topic00x1c858049e704460ab9455025be4078f9e746e3fd426a56040d06389edb8197db - 07
PoolCreatedMigratorThe Uniswap V3 pool exists. Route post-graduation trades here.
PoolCreated(address token, address pool, uint256 quoteLiquidity, uint256 tokenLiquidity)topic00xd569a23a8cff45c641c5d5e4fb55b5e15e918f9acf0fc42b4909adc31f5f806c - 08
PositionLockedLP LockerThe LP position NFT is inside the locker. The locker has no withdrawal function.
PositionLocked(address token, uint256 tokenId)topic00x2cabb2a2973327d5863ceb4707e9441851243897e86d587ee35943599752eb54
Buy and Sell are emitted by each curve, so index them by address set: every curve address you learned from TokenLaunched. FeeCollected on the FeeCollector carries the curve address indexed, which gives you per-token fee totals without touching the curves.
Read state, quote, and trade
Every curve trade carries a 0.97% fee: 0.30% to the creator wallet, 0.67% to the platform. Quotes below are already net of it.
- 01Quote
GET /tokens/:token/quoteNet-of-fee output for a buy or sell amount.
- 02Build
POST /tokens/:token/build-txAn unsigned transaction with slippage applied.
- 03Sign
your user's walletNothing here signs. The recipient wallet does.
Or call the curve directly
token()addressThe ERC-20 this curve prices
quoteAsset()addressPairing asset. Zero address means the native coin
creator()addressReceives the creator share of every trade
graduated()boolTrue once reserves moved to Uniswap
getPrice()uint256Spot price in quote units, scaled by priceScale()
getMarketCap()uint256Price times total supply, quote units
realQuoteReserves()uint256Quote actually held by the curve
realTokenReserves()uint256Tokens still for sale on the curve
graduationThreshold()uint256Quote reserve that triggers migration
getBuyQuote(uint256 quoteIn)uint256 tokensOutNet of fee, use for minTokensOut
getSellQuote(uint256 tokenAmount)uint256 quoteOutNet of fee, use for minQuoteOut
buy(uint256 amountIn, uint256 minTokensOut)payable. Native quote: amountIn must equal msg.value. ERC-20 quote: approve the curve first, send no value.
buyFor(uint256 amountIn, uint256 minTokensOut, address recipient)Same as buy, tokens go to recipient. For terminals and routers trading on behalf of a user.
sell(uint256 tokenAmount, uint256 minQuoteOut)Approve the curve for tokenAmount first.
After graduated() flips true the curve rejects trades. Route to the Uniswap V3 pool from PoolCreated at the 1.00% fee tier, using the standard SwapRouter02 and QuoterV2 addresses listed on the contracts page.
Launch from your app or your agent
One factory call deploys the token and its curve. The pairing asset can be ETH or any enabled tokenized stock, 197 enabled right now.
launchToken(string name, string symbol, string metadataURI, string subjectHandle, address quoteAsset)Returns (token, curve). msg.sender becomes the creator and earns the creator fee. quoteAsset must be enabled.
launchTokenAndBuy(..., InitialBuy initialBuy)payable. Launch plus the creator's first buy in one transaction. InitialBuy is { amount, minTokensOut }.
getAllTokens()address[]Every token ever launched, in order
tokenCount()uint256Length of the list above
getTokenCurve(address token)addressThe curve for a token, zero if not ours
getQuoteAssets()address[]Pairing assets the factory knows
isQuoteAssetEnabled(address asset)boolWhether a launch can be quoted in it today
The MCP server exposes one tool, vectr_agent, that takes a natural-language instruction. A launch instruction returns a built transaction that the user confirms before anything is signed. The wallet that signs becomes the creator, so if the agent's own wallet signs, the agent earns the creator fee on every trade of its token and can claim it with claimCreatorFees().
Where the money sits and how it leaves
Fees accrue inside the FeeCollector per creator and per asset. Nothing is pushed. The creator wallet pulls.
claimCreatorFees()Pull accrued native-coin fees to the caller. Only the creator wallet has a balance.
claimCreatorFeesToken(address asset)Same for an ERC-20 quote asset such as a stock token.
Everything above is permissionless. If you are routing launches or trades through your own product and want to talk about attribution, listings or a deeper integration, write to us.