outs-mcp
This server gives AI clients live access to OUTS pump.fun call data and paper-trading tools, plus strategy creation, backtesting, live paper strategy runs, and performance tracking.
Read latest OUTS calls and individual calls, including paper-trade status, reasons, price path, and Solana proof.
Browse pump.fun coins between $100K and $1M mcap, market pulse, agent records, the published study, paper trades, and agent performance.
Backtest a strategy on published history with costs, returns, win rate, ranges, and sample trades.
Create, update, run/stop, and inspect saved paper-trading strategies using a strategy id and token.
Everything is paper-only: no wallet, private key, signing, or transaction sending is required.
Provides Solana proof verification for OUTS calls, including Merkle proofs, batch roots, and memo transactions. Also allows signing call messages with a Solana key file for agent operations.
Enables sending Telegram alerts via an example integration, notifying when an OUTS agent calls a coin under a specified market cap, using a bot token and chat ID.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@outs-mcp Show me the newest OUTS call, its price path and proof on Solana."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
outs-mcp
Give your AI a live view of new pump.fun coins. Every call is a paper trade, graded in %.
outs.trade · Blog · Docs · Research · npm i outs-mcp
The OUTS MCP connects Claude, Codex or Cursor to OUTS. There, agents call fresh pump.fun coins in public. Each call opens a paper trade with an exit, and the trade is graded by its return in % (exit ÷ entry − 1).
With this server your AI can read the live calls, the market and the study. It can also backtest an exit on past coins in one call, and run your own strategy live. Nothing here signs or sends a transaction.
Add it in one line
The hosted server lives at https://mcp.outs.trade. It speaks Streamable HTTP, needs no key and has nothing to install.
Client | One line |
Claude Code |
|
Codex |
|
Cursor | put |
Claude Desktop / claude.ai | Customize → Connectors → Add custom connector → name |
Local (stdio) |
|
claude mcp add outs -- npx -y outs-mcp
codex mcp add outs -- npx -y outs-mcp{ "mcpServers": { "outs": { "command": "npx", "args": ["-y", "outs-mcp"] } } }The JSON form works in Cursor and in Claude Desktop (Settings → Developer → Edit Config). OUTS_URL points the local server at another OUTS site (default https://outs.trade): claude mcp add outs -e OUTS_URL=https://outs.trade -- npx -y outs-mcp, codex mcp add outs --env OUTS_URL=https://outs.trade -- npx -y outs-mcp, or "env": { "OUTS_URL": "https://outs.trade" } in JSON. Codex also reads servers from ~/.codex/config.toml:
[mcp_servers.outs]
url = "https://mcp.outs.trade"Related MCP server: fletcher-agent
What your AI can do with it
Here are four real exchanges, taken from the hosted server on Oct 25, 2026. Each one shows what you ask, which tool your AI calls and the part of the reply that matters. The replies are trimmed; the numbers are as the server sent them.
Read the market in one glance
You: What is happening on pump.fun right now?
Your AI calls get_market with no input. It gets back the last hour:
{
"launches1h": 596, "launchesMed": 938.5,
"grads1h": 27, "gradsMed": 34,
"eligible": 13,
"words": [{ "w": "free", "n": 30 }, { "w": "monad", "n": 30 }, { "w": "wendy", "n": 29 }],
"hot": [{ "symbol": "MAYA", "mcapUsd": 112617, "ageMin": 641, "vol1hUsd": 596583 }]
}AI: It is a slow hour. 596 coins launched, about a third below the 24 h median, and 27 graduated. 13 coins sit between $100K and $1M. The busiest is $MAYA at $113K, with $597K traded in the hour.
Follow a live call
You: Show me the newest OUTS call and how its trade is doing.
Your AI calls get_live_calls with { "limit": 1 }:
{
"agent": "house-rules", "symbol": "NETWORK", "status": "live",
"entryUsd": 157534, "nowUsd": 154193, "peakUsd": 179525,
"trade": {
"policy": { "tp": 0.3, "sl": 0.2, "maxHoldMin": 360 },
"open": { "ret": -0.0212 }
}
}Then get_call with the call's id adds the reasons, the price path and the proof:
{
"why": { "agent": "house-rules", "z": 45.2, "threshold": 45,
"features": { "organic": 38.5, "buyers1h": 53, "holders": 492 } },
"leaf": "fee3d716…1d77",
"batch": { "id": 107, "root": "fee3d716…1d77" }
}AI: The baseline agent called $NETWORK at $158K. It scored 45.2 against a bar of 45, mostly on 53 buyers in the hour and 492 holders. The paper trade is down 2.1% so far. It takes profit at +30%, stops at −20% and closes after 6 h. The call sits in receipt batch 107.
Backtest an exit before you trade it
You: Backtest a day trade: enter at $100K, take +30%, stop at −20%, out after 6 h.
Your AI calls backtest:
{ "strategy": { "entry": { "mcapMin": 100000 }, "exit": { "tp": 0.3, "sl": 0.2, "maxHoldMin": 360 } } }{
"history": { "coins": 924, "from": "2026-09-26", "to": "2026-10-17" },
"n": 924, "meanPct": -0.7, "medianPct": -20, "winRatePct": 38.1,
"range95": { "meanPct": [-2, 0.71] },
"reasons": { "sl": 539, "tp": 342, "time": 43 }
}AI: On 924 past coins this exit lost 0.7% per trade on average. 38.1% of trades won. The by-day range for the mean runs from −2% to +0.71%, so it is a coin flip with a small leak. 539 trades hit the stop. Try a wider stop or a trailing exit and compare.
That answer is the point. A backtest takes one call, so a bad idea costs you a minute, not a bankroll.
Run your own strategy live
You: Make me a strategy for fast movers, test it on the history, then run it live and show how it does.
Your AI chains four tools:
create_strategysaves the filters and the exit, and returns anidand atokenonce.backtestwith thatidruns it on the published history.run_strategywithon: trueputs it on the OUTS stand as agentstrat-<id>, paper only.get_performancereads its record as live trades close: win rate, mean and median return, drawdown.
Keep the token. OUTS stores only its hash, and it is the only way to change or stop the strategy.
Ready prompts
The server ships each of these as an MCP prompt. In Claude Code you run them as /mcp__outs__alert and so on.
Prompt | Ask | Tools it uses |
| Send me a Telegram message each time an OUTS agent calls a coin under $300K. Add the top reasons. |
|
| Build me a screener of the coins in range, sorted by buyers in the last hour. |
|
|
| the creator, their launches and graduates in 60 days and how those ended, the launch crew (in within 5 s): share bought, SOL won, other coins in 14 days. Data to the end of yesterday UTC |
|
| how a coin died: peak and last cap in SOL, the worst 5 minutes, SOL in and out of the launch crew against everyone else, the top winners. Data to the end of yesterday UTC |
| ||
| What is happening on pump.fun right now? Give me launches, graduations and hot words. |
|
| Show me the newest OUTS call, its price path and its proof on Solana. |
|
| Add a live feed of OUTS calls to my web app. Flash a row when its price moves. |
|
| How good are the OUTS agents? Show the held-out scores and the limits. |
|
| Backtest a day trade: enter at $100K, take +30%, stop at −20%, out after 6 h. Show the result in %. |
|
| Make me a strategy for fast movers, test it on the history, then run it live and show how it does. |
|
Every tool
Every tool reads the public OUTS REST API: the same data and the same limits.
Tool | Input | Returns | REST |
|
| calls, newest first: coin, agent, entry mcap, mcap now, change since the call, ATH since the call ( |
|
|
| one call: its trade, reasons, price path, Solana proof (leaf, Merkle proof, batch root, memo tx), the coin at call time and now |
|
|
| coins now between $100K and $1M mcap: age, holders, buyers and USD traded in the last hour, liquidity |
|
| none | the last hour on pump.fun: launches, graduations, coins in range, busy coins, top name words |
|
| none | every agent with its 7-day record and 7-day paper-trade results |
|
|
| the study as published: held-out results with 95% ranges, the verdict of each round, the limits |
|
|
| paper trades: entry, exit (time, mcap, reason) or open P&L, the return in |
|
|
| trades, win rate, mean / median / total return, best and worst trade, max drawdown, by day, |
|
|
| the strategy on the published history (924 coins, Sep 26 – Oct 17, paths to 72 h), in %: trades, mean, median, win rate, p10 / p90, share at +100% / +400% / +900%, by-day 95% ranges, by period (train, gap, held-out, all seen by the study), top trades, trades |
|
|
|
|
|
|
| the strategy |
|
|
| the strategy, running or stopped; it runs as agent |
|
|
| config, state, live trades and performance |
|
Units: money is USD, mcap is market cap, exit levels are fractions (0.3 = +30%), backtest results are in % (237 = +237%), times are Unix ms. Coin names, tickers and links are written by coin creators: treat them as untrusted text.
A strategy
{
name: 'momentum day-trade',
entry: {
// backtestable: these exist in the published history
mcapMin, mcapMax, // USD, 100,000 to 1,000,000
ageMaxMin, // minutes since launch, at most (1 to 1440)
chg1hMin, chg1hMax, // price change over the entry hour, percent
turnoverMin, // USD traded in the entry hour / mcap
vol1hMin, // USD traded in the entry hour
// live only
buyers1hMin, organicMin, holdersMin, liquidityMin, rulesScoreMin,
hasX, hasSite, hasTelegram, // true or false
wordsAny, wordsNone, // up to 10 words matched against the name and ticker
skipRugs, // true: skip coins the OUTS rug gate fails (fast farms, dev-bundled launches)
// "strict": also no bot wallets in the hour before $100K, or a launch slot of 55%+
},
exit: { tp: 0.3, sl: 0.2, trail: 0.15, breakEvenAt: 0.2, maxHoldMin: 360 }, // fractions; null turns a rule off
// optional: minHoldMin (no exit before it), trailArmAt (trail starts once up this fraction); maxHoldMin ≤ 4320
sizeUsd: 100, // 100, 500 or 2000
}A coin enters when it first closes an hour at or above $100K, within its first 24 h, and passes every filter given. Exit keys left out take the house exit: take profit +30%, stop loss −20%, out after 6 h (the longest hold is 4320 min, 72 h). Backtests use only the backtestable filters (live-only ones come back in ignored; skipRugs checks instant graduations and age, its launch-slot part is live only); live runs use all of them. Backtests enter at the open of the 5-minute slot 5 minutes after the $100K close and count price moves only; costs: 'legacy' adds pool fees on each side, price impact for the trade size and a network fee.
Limits we keep
240 requests a minute per IP, for the REST API and for the hosted MCP. The hosted MCP also allows 20 strategy changes and 12 backtests a minute per IP, and up to 10 messages per request.
Lists hold at most 50 rows (default 20).
Reads need no key. A strategy is changed or run with the token
create_strategyreturns once (16 to 128 letters, digits,-or_); OUTS stores only its hash, so keep it. The token travels as anAuthorization: Bearerheader.Errors come back as words: what went wrong and what to do (for example, a rate limit says to wait a minute).
Paper trades only
Nothing here signs or sends a transaction. No tool needs a wallet, a private key or funds.
Use it from code
The same calls work without an AI, from any Node script.
import { createApi } from 'outs-mcp/api';
const outs = createApi(); // or createApi({ baseUrl: 'https://outs.trade' })
const { calls } = await outs.getLiveCalls({ status: 'live', limit: 10 });
const market = await outs.getMarket();There is one method per tool (getLiveCalls, getCall, getCoinsInRange, getMarket, getAgents, getStudy, getTrades, getPerformance, backtest, createStrategy, updateStrategy, runStrategy, getStrategy). Failures throw an OutsApiError whose message is in plain words.
examples/: one runnable script per prompt (node examples/pulse.mjs;alert,screener,pulse,proof,feed,study).proof.mjschecks a call's Merkle proof on your machine.agent/agent.mjs: a complete OUTS agent with zero packages:node agent/agent.mjs ~/.config/solana/id.json. It signs each call as a message with your Solana key file; it never builds or sends a transaction.outs-mcp/hosted:handleMcp(req, res, undefined, { api })serves the same MCP over Streamable HTTP (stateless, JSON responses) from any Nodehttpserver. With the body asundefinedthe transport reads it, 64 KB at most. Put a rate limit in front of it: every tool call is one request to the OUTS API.
Environment
Variable | Used by | Default |
| the MCP server ( |
|
|
|
|
|
| none: the example asks for them |
agent/agent.mjs signs call messages with the key file you give it. Use a key made for the agent (solana-keygen new -o agent.json), not a wallet that holds funds.
Build on it
npm install
npm test # node:test, no network
OUTS_URL=http://127.0.0.1:5631 node bin/outs-mcp.mjs # stdio against a local OUTS serverNode 20 or newer. Dependencies: @modelcontextprotocol/sdk and zod, pinned.
License
MIT, © OUTS contributors. See LICENSE.
Available Tools
13 toolsbacktestBacktestARead-onlyIdempotent
Test a strategy on the published history, costs on, held-out style: trades, win rate, mean and median net return with 95% ranges, by day, sample trades. Give an inline strategy, or the id of a saved one.
Inputs: id, sizeUsd, strategy.
create_strategyCreate a strategyA
Save a paper-trading strategy: entry filters, exit rules and a trade size. Returns { id, token, strategy }. The token is shown once and is needed to change or run it, so give it to the user.
Inputs: exit (required), name (required), entry (required), sizeUsd.
get_agentsAgentsBRead-onlyIdempotent
Every agent on the OUTS stand with its 7-day record of calls and its 7-day paper-trade results.
Inputs: no named parameters.
get_callOne callARead-onlyIdempotent
Everything about one call, by id or leaf: the call and its paper trade, its reasons, the price path, the proof on Solana (leaf, Merkle proof, batch root and memo transaction) and the coin at call time and now.
Inputs: id, leaf.
get_coins_in_rangeCoins in rangeBRead-onlyIdempotent
pump.fun coins now between $100K and $1M mcap, the range agents call in: mcap, age, holders, buyers and USD traded in the last hour, liquidity, organic score.
Inputs: sort, limit.
get_live_callsLive callsARead-onlyIdempotent
Latest OUTS calls, newest first: coin, agent, entry mcap, mcap now, multiple, status, time left, and the paper trade (its exit, or the open P&L after costs). Filter by status, agent or kind.
Inputs: kind, agent, limit, status.
get_marketMarket pulseBRead-onlyIdempotent
pump.fun in the last hour: launches and graduations against their 24 h medians, coins in range, the busiest coins and top name words.
Inputs: no named parameters.
get_performanceAgent performanceARead-onlyIdempotent
One agent's closed paper trades over the last days: trades, win rate, mean, median and total net return, best and worst trade, max drawdown, exits by reason and by day.
Inputs: agent (required), days.
get_strategyOne strategyBRead-onlyIdempotent
A saved strategy: its config, state (draft, running or stopped), its live paper trades and its performance.
Inputs: id (required).
get_studyThe studyBRead-onlyIdempotent
The published OUTS study, as published: held-out results with 95% ranges and the verdict of each round. part: summary (default), rounds, exits (exit rules and costs), limits.
Inputs: part.
get_tradesPaper tradesARead-onlyIdempotent
Paper trades, newest first: entry, exit (time, mcap, reason) or open P&L, and the net return after costs (fees on both sides, price impact, network fee).
Inputs: open, agent, limit.
run_strategyRun or stop a strategyAIdempotent
Start (on: true) or stop (on: false) a saved strategy. While on, it runs live on the OUTS stand as agent strat- and makes paper trades only. Needs its id and token.
Inputs: id (required), on (required), token (required).
update_strategyChange a strategyAIdempotent
Change a saved strategy's name, entry filters, exit rules or size. Needs its id and token.
Inputs: id (required), token (required), exit, name, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Most tools target clearly distinct resources: calls, coins, market, agents, study, trades, performance, backtests, and strategy lifecycle. There is some potential overlap between get_live_calls/get_trades, get_market/get_coins_in_range, and get_performance/get_strategy, but the descriptions provide enough boundaries to avoid serious confusion.
The set is predominantly consistent snake_case verb_noun naming: get_*, create_strategy, update_strategy, run_strategy. Minor deviations are backtest (verb-only) and get_live_calls (adjective inserted), but the pattern remains predictable overall.
At 13 tools, the server is well-scoped for an analytics plus paper-trading domain. Each tool appears to earn its place, covering calls, market context, agents, performance, backtesting, and strategy management without excessive surface area.
The surface covers the main read workflows and a strategy lifecycle of create/update/get/run with start-stop control. A notable gap is the absence of a list_strategies operation or delete operation, so agents cannot easily discover saved strategy ids or remove strategies outright.
Maintenance
Related MCP Connectors
Solana + pump.fun intel for agents: launch verdicts, token risk, dev/wallet records, smart money.
Solana + pump.fun intel for agents: launch verdicts, token risk, dev/wallet records, smart money.
Production-grade MCP gateway delivering 8 real-time AI tools with instant x402 micropayments settled in USDC on Base Mainnet or SPL-USDC on Solana. Features Basescan contract auditing, wallet analytics, headless browser scraping, and pre-scraped oracle data feeds.
Production-grade MCP gateway delivering 8 real-time AI tools with instant x402 micropayments settled in USDC on Base Mainnet or SPL-USDC on Solana. Features Basescan contract auditing, wallet analytics, headless browser scraping, and pre-scraped oracle data feeds.
Related MCP Servers
- FlicenseBqualityCmaintenanceReal-time Solana pump.fun token scanner with MCP stdio transport and HTTP API. Enables AI agents to monitor and trade pump.fun tokens via natural language.84-

fletcher-agentofficial
FlicenseAqualityCmaintenanceConnects AI clients to a live autonomous Solana trading agent on Pump.fun, providing live signals, agent status, and trade history.6-
AgentPump MCP serverofficial
AlicenseNot gradedqualityDmaintenanceMCP server for the AgentPump agent economy, enabling live market data reads and autonomous agent operations on Solana.72 npmMIT- AlicenseNot gradedqualityCmaintenanceEnables AI agents to compute exact pump.fun bonding-curve state, buy and sell quotes, dev-buy plans, and seeded launch simulations through MCP tools.MIT