The MCP server
Read launches and build unsigned transactions from an assistant. Run it locally today.
What is live today
TREND runs on its own dev validator. The mainnet programs are not deployed: their ids are reserved and no launch exists there. Statement as of 2026-10-10.
apps/mcp in the repository is a Model Context Protocol server. It gives an assistant
research, quoting and unsigned transaction building over stdio.
What it is and is not
- It reads state and builds unsigned transactions. Tools whose names begin
paired_build_return base64 for your own wallet to sign and submit. - It never holds, accepts or derives a private key. There is no code path in it that signs. The wallet it is given is a public address that says whose balances to read and who pays the fee.
- Step 1 of a launch creation arrives partly signed by the new mint's own throwaway key. That key holds no authority afterwards.
- It refuses to start in its shared (HTTP) mode when a wallet address is configured.
Status
| State | |
|---|---|
| Run it locally from the repository | Available |
A published package (npx) | Planned. Not published |
| A remote endpoint | Planned. Not exposed, and it needs its own security review first |
Today you clone the repository, build, and point your client at the built file. The tool names are paired_*, the
product's earlier name. They are planned to change to trend_* before a first public release, which will break anyone
using the old names.
Run it
pnpm install --filter @trend/mcp
pnpm --filter @trend/mcp build
claude mcp add trend \
--env PAIRED_WALLET=<your public address> \
--env PAIRED_API_URL=https://api.dev.trend.fun \
-- node /absolute/path/to/repository/apps/mcp/dist/index.js| Variable | Default | What it is |
|---|---|---|
PAIRED_API_URL | the dev API | The API deployment to talk to |
PAIRED_WALLET | none | A public address used when a tool needs one |
PAIRED_TIMEOUT_MS | 30000 | Per-request timeout. Quotes and builds read live pool reserves, so do not set it low |
Without a wallet address the research tools all work; the ones that need to know whose money it is say how to supply one.
Tools
| Tool | Does |
|---|---|
paired_list_launches | Browse a feed: new, trending, almost-paired, graduated, all |
paired_search_launches | Find a launch by ticker, name or address |
paired_get_launch | One launch: recipe, state, 24 hour stats, migration |
paired_list_assets | The component registry with measured prices |
paired_check_asset | Whether a mint can be a component and whether it is routable |
paired_get_chart | Candles |
paired_get_trades | Recent trades for a launch, or across the chain |
paired_get_holders | Holders, read from the chain |
paired_market_stats | Totals, SOL/USD, cluster, program id |
paired_wallet_portfolio | A wallet's launch positions |
paired_wallet_balances | A wallet's token balances |
paired_quote_trade | Price a trade. Stores nothing |
paired_build_trade | Quote and build in one call: unsigned |
paired_preview_launch | Check parameters for a new launch |
paired_build_create_launch | Unsigned ordered plan that creates a launch |
paired_build_transfer | Unsigned SOL or token transfer |
paired_submit_transaction | Relay bytes you already signed |
paired_transaction_status | Submitted, confirmed or failed |
Three behaviours to know before you wire an agent to it. Tickers are not unique, so pass an address when trading.
paired_build_trade quotes and builds in one call, because a quote lives 30 seconds and a model's turn between two calls
can be longer. A build can return a plan of several steps: sign and land them in order.