Integrate

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.

$curl https://api.vectr.bot/config
See the events
  • Chain 4663Robinhood Chain
  • 4 contractsverified source
  • 8 eventswhole lifecycle
  • REST + SSEno polling needed
  • MCPlaunch from an agent
  • No API keyfor anything here
System map
contracts and the events that move a token between them
Addresses

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

    01

    Launches tokens, emits TokenLaunched

    0xB2f232389a4EE9285ceeE5E7c1706a0484437873
  • FeeCollector

    02

    Splits every trade fee, holds creator balances

    0x18c547Ae4CEabC7cB42a189EA3E9037090e98908
  • Migrator

    03

    Creates the Uniswap V3 pool at graduation

    0x384EEd2Ba540146FB09E4EE228B454091913F837
  • LP Locker

    04

    Holds the LP position, no withdrawal path

    0xcf489e55a1167Cf883e0EE43D2354fdFc82b2B58
curl https://api.vectr.bot/config
→ { "chainId": 4663, "contracts": { "factory": "0x…", "feeCollector": "0x…", "migrator": "0x…", "lpLocker": "0x…" }, "fees": { "curve": { "creatorBps": …, "protocolBps": … } }, "uniswap": { … } }
Discover

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.

Onchain01

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.

API02

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.

# Launches and trades, newest first
curl "https://api.vectr.bot/tokens/activity?limit=20"
# Live feed
curl -N https://api.vectr.bot/tokens/stream
# One token: price, mcap, curve state, creator, quote asset
curl https://api.vectr.bot/tokens/0xTOKEN
Events

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.

  1. Launch

    One event on the factory. Everything else keys off the curve address it gives you.

    • 01TokenLaunchedFactory

      A 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
  2. Trade

    Per curve. Index by the address set you learned from TokenLaunched.

    • 02BuyCurve

      Every curve buy. quoteIn is gross, fee is the slice the FeeCollector took.

      Buy(address buyer, uint256 quoteIn, uint256 tokensOut, uint256 fee)
      topic00xbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d
    • 03SellCurve

      Every curve sell. quoteOut is net of fee.

      Sell(address seller, uint256 tokensIn, uint256 quoteOut, uint256 fee)
      topic00x846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc0
    • 04FeeCollectedFeeCollector

      Emitted 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
  3. Claim

    The creator wallet pulls. Nothing is pushed.

    • 05CreatorFeeClaimedFeeCollector

      A creator, or the agent holding the creator wallet, pulled accrued fees.

      CreatorFeeClaimed(address creator, address asset, uint256 amount)
      topic00x2b9a4b971a1b7ec880d82d754dfc29969048892f65278be59641f7f7161cf714
  4. Graduate

    Three events, three contracts, one block. Curve trading stops, the pool takes over.

    • 06GraduatedCurve

      The curve hit its threshold and handed reserves to the migrator. Curve trading stops here.

      Graduated(address token, uint256 quoteMigrated, uint256 tokensMigrated)
      topic00x1c858049e704460ab9455025be4078f9e746e3fd426a56040d06389edb8197db
    • 07PoolCreatedMigrator

      The Uniswap V3 pool exists. Route post-graduation trades here.

      PoolCreated(address token, address pool, uint256 quoteLiquidity, uint256 tokenLiquidity)
      topic00xd569a23a8cff45c641c5d5e4fb55b5e15e918f9acf0fc42b4909adc31f5f806c
    • 08PositionLockedLP Locker

      The 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.

Curve

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.

  1. 01
    Quote
    GET /tokens/:token/quote

    Net-of-fee output for a buy or sell amount.

  2. 02
    Build
    POST /tokens/:token/build-tx

    An unsigned transaction with slippage applied.

  3. 03
    Sign
    your user's wallet

    Nothing here signs. The recipient wallet does.

# The API prices and builds the transaction. The response is unsigned; your user signs it.
curl "https://api.vectr.bot/tokens/0xTOKEN/quote?type=buy&amount=0.1"
curl -X POST https://api.vectr.bot/tokens/0xTOKEN/build-tx -H "Content-Type: application/json" -d '{"type":"buy","amount":"0.1","slippage":1,"recipient":"0xUSER"}'
# slippage is a percent. recipient is the wallet that signs; after graduation the router delivers output there.

Or call the curve directly

Reads
  • token()address

    The ERC-20 this curve prices

  • quoteAsset()address

    Pairing asset. Zero address means the native coin

  • creator()address

    Receives the creator share of every trade

  • graduated()bool

    True once reserves moved to Uniswap

  • getPrice()uint256

    Spot price in quote units, scaled by priceScale()

  • getMarketCap()uint256

    Price times total supply, quote units

  • realQuoteReserves()uint256

    Quote actually held by the curve

  • realTokenReserves()uint256

    Tokens still for sale on the curve

  • graduationThreshold()uint256

    Quote reserve that triggers migration

  • getBuyQuote(uint256 quoteIn)uint256 tokensOut

    Net of fee, use for minTokensOut

  • getSellQuote(uint256 tokenAmount)uint256 quoteOut

    Net of fee, use for minQuoteOut

Writes
  • 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

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.

Factory writes
  • 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 }.

Factory reads
  • getAllTokens()address[]

    Every token ever launched, in order

  • tokenCount()uint256

    Length of the list above

  • getTokenCurve(address token)address

    The curve for a token, zero if not ours

  • getQuoteAssets()address[]

    Pairing assets the factory knows

  • isQuoteAssetEnabled(address asset)bool

    Whether a launch can be quoted in it today

# Enabled pairing assets, with virtual init and graduation threshold per asset
curl https://api.vectr.bot/quote-assets
# Gas estimate for a launch from a given wallet
curl "https://api.vectr.bot/launch/estimate-fee?from=0xWALLET"
From an agent, through MCP

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().

"mcpServers": { "vectr": { "command": "npx", "args": ["-y", "@vectr/mcp"] } }
# Then, in any MCP client:
vectr_agent "launch a token called Nightshift with symbol NIGHT paired with ETH"
MCP setup
Creator fees

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.

FeeCollector writes
  • 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.

# Accrued, claimable creator fees for a wallet, per asset
curl https://api.vectr.bot/launch/fees/0xWALLET
# Earnings history and projection
curl "https://api.vectr.bot/launch/earnings/0xWALLET?days=30"
Building a terminal, router or agent framework on Vectr?

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.

Keep going