three.ws pump.fun MCP
Free pump.fun and Solana token discovery and on-chain analysis tools, by three.ws.
我该使用它吗
质量与安全性
发现(9)
- HIGH
- MEDIUM在 pumpfun_quote_swap 中
- LOW在 get_token_trades 中
- LOW在 get_trending_tokens 中
- LOW在 get_new_tokens 中
- LOW在 get_token_holders 中
- LOW在 kol_leaderboard 中
- LOW在 pumpfun_bot_status 中
- LOW在 sns_reverseLookup 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"threews-pumpfun": {
"url": "https://three.ws/api/pump-fun-mcp"
}
}
}远程端点
https://three.ws/api/pump-fun-mcpstreamable-http它能做什么
工具清单
工具(21)
🟢get_token_details(mint)
Full details for a specific pump.fun token by mint address.
输入模式
{
"type": "object",
"properties": {
"mint": {
"type": "string"
}
},
"required": [
"mint"
]
}🟢get_bonding_curve(mint, network)
Bonding curve analysis: real reserves, virtual reserves, and graduation progress (on-chain). Pre-graduation only: these reserves come from the pump program bonding-curve account, not from a PumpSwap pool. Pump renamed the quote-side fields on-chain (real_sol_reserves -> real_quote_reserves, virtual_sol_reserves -> virtual_quote_reserves) once a non-SOL quote asset became possible; the response keys below keep their original names and are still denominated in SOL, because the curve quote_mint is the SOL default on every coin created to date. Once complete=true the curve is retired and pricing moves to the PumpSwap pool, so use pumpfun_quote_swap from that point on.
输入模式
{
"type": "object",
"properties": {
"mint": {
"type": "string"
},
"network": {
"type": "string",
"enum": [
"mainnet",
"devnet"
],
"default": "mainnet"
}
},
"required": [
"mint"
]
}输出模式
{
"type": "object",
"properties": {
"mint": {
"type": "string"
},
"network": {
"type": "string"
},
"complete": {
"type": "boolean",
"description": "true once the curve has graduated"
},
"graduationPercent": {
"type": "number",
"description": "0–100 graduation progress"
},
"solReserves": {
"type": "string",
"description": "Real quote reserves in SOL (4-decimal string). On-chain field: real_quote_reserves."
},
"tokenReserves": {
"type": "string",
"description": "Real token reserves (raw base units)"
},
"virtualSolReserves": {
"type": "string",
"description": "Virtual quote reserves (lamports). On-chain field: virtual_quote_reserves (u64). Spot price = virtual_quote_reserves / virtual_token_reserves. Distinct from the identically-named PumpSwap Pool.virtual_quote_reserves (an i128), which applies only after graduation."
},
"virtualTokenReserves": {
"type": "string",
"description": "Virtual token reserves (raw base units)"
}
},
"required": [
"mint",
"network",
"complete",
"graduationPercent",
"solReserves",
"tokenReserves",
"virtualSolReserves",
"virtualTokenReserves"
],
"additionalProperties": true
}🟢get_token_trades(mint, limit)
Recent buy/sell history for a token.
输入模式
{
"type": "object",
"properties": {
"mint": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"default": 50
}
},
"required": [
"mint"
]
}🟢get_trending_tokens(limit)
Top pump.fun tokens by market cap.
输入模式
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
}
}
}🟢get_new_tokens(limit)
Most recently launched pump.fun tokens.
输入模式
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
}
}
}🟢get_token_holders(mint, limit, network)
Top holders of a token with concentration analysis (on-chain).
输入模式
{
"type": "object",
"properties": {
"mint": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10
},
"network": {
"type": "string",
"enum": [
"mainnet",
"devnet"
],
"default": "mainnet"
}
},
"required": [
"mint"
]
}🟢pumpfun_vanity_mint(suffix, prefix, caseSensitive, maxAttempts)
Generate a Solana keypair whose address ends/starts with a vanity pattern. Returns publicKey + secretKey (base58). Caller must save the secret key immediately — it is never stored. Hard timeout: 60 s.
输入模式
{
"type": "object",
"properties": {
"suffix": {
"type": "string",
"description": "Desired address suffix (case-insensitive by default)"
},
"prefix": {
"type": "string",
"description": "Desired address prefix (case-insensitive by default)"
},
"caseSensitive": {
"type": "boolean",
"default": false
},
"maxAttempts": {
"type": "integer",
"default": 5000000
}
}
}输出模式
{
"type": "object",
"properties": {
"publicKey": {
"type": "string",
"description": "Matched Solana address (base58)"
},
"secretKey": {
"type": "string",
"description": "Secret key (base58) — caller is sole custodian"
},
"attempts": {
"type": "integer",
"description": "Keypairs ground before the match"
},
"ms": {
"type": "number",
"description": "Wall-clock grind time in milliseconds"
}
},
"required": [
"publicKey",
"secretKey",
"attempts",
"ms"
],
"additionalProperties": true
}🟢pumpfun_watch_whales(mint, minUsd, durationMs)
Collect whale trades on a pump.fun token for a short window (max 10 s). Returns all trades whose USD value meets minUsd.
输入模式
{
"type": "object",
"properties": {
"mint": {
"type": "string",
"description": "SPL mint pubkey (base58)"
},
"minUsd": {
"type": "number",
"description": "Minimum trade value in USD (default 5000)"
},
"durationMs": {
"type": "number",
"description": "Collection window in ms (default 5000, max 10000)"
}
},
"required": [
"mint"
]
}🟢pumpfun_list_claims(creator, limit, network)
List recent pump.fun fee-claim events for a creator wallet (on-chain, no indexer needed). Returns signature, mint, lamports, and Unix timestamp for each claim.
输入模式
{
"type": "object",
"properties": {
"creator": {
"type": "string",
"description": "Creator wallet address (base58)"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
},
"network": {
"type": "string",
"enum": [
"mainnet",
"devnet"
],
"default": "mainnet"
}
},
"required": [
"creator"
]
}🟢pumpfun_watch_claims(creator, durationMs, network)
Return all pump.fun fee-claim events for a creator wallet within a look-back window (durationMs). Useful for batch collection after a delay.
输入模式
{
"type": "object",
"properties": {
"creator": {
"type": "string",
"description": "Creator wallet address (base58)"
},
"durationMs": {
"type": "number",
"description": "Look-back window in ms (default 300000 = 5 min, max 1800000)"
},
"network": {
"type": "string",
"enum": [
"mainnet",
"devnet"
],
"default": "mainnet"
}
},
"required": [
"creator"
]
}🟢pumpfun_first_claims(sinceMinutes, limit)
First-ever pump.fun creator fee claims in a time window: a cash-out signal. Returns creators who have never claimed before, with creator wallet, mint, lamports, and timestamp.
输入模式
{
"type": "object",
"properties": {
"sinceMinutes": {
"type": "integer",
"minimum": 1,
"maximum": 1440,
"default": 60,
"description": "How far back to look for new claimers (minutes)"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
}
}
}🟢sns_resolve(name)
Resolve a .sol Solana Name Service domain to its owner wallet address.
输入模式
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": ".sol domain name, e.g. \"bonfida.sol\""
}
},
"required": [
"name"
]
}输出模式
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The .sol domain that was resolved"
},
"address": {
"type": "string",
"description": "Owner wallet address (base58)"
}
},
"required": [
"name",
"address"
],
"additionalProperties": true
}🟢sns_reverseLookup(address)
Reverse-lookup a Solana wallet address to its primary .sol domain name.
输入模式
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Base58 Solana wallet address"
}
},
"required": [
"address"
]
}输出模式
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "The wallet address that was looked up"
},
"name": {
"type": "string",
"description": "Primary .sol domain for the address"
}
},
"required": [
"address",
"name"
],
"additionalProperties": true
}🟢social_cashtag_sentiment(posts)
Score social-post sentiment for a cashtag using a deterministic lexicon. Returns score (-1..1), positive/negative/neutral percentages, and example posts.
输入模式
{
"type": "object",
"properties": {
"posts": {
"type": "array",
"description": "Array of post objects. Each must have a text field; id, ts, and author are optional.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"ts": {
"type": "string"
},
"text": {
"type": "string"
},
"author": {
"type": "string"
}
},
"required": [
"text"
]
}
}
},
"required": [
"posts"
]
}输出模式
{
"type": "object",
"properties": {
"score": {
"type": "number",
"description": "Net sentiment, -1 (bearish) to 1 (bullish)"
},
"posPct": {
"type": "number",
"description": "Percentage of positive posts (0–100)"
},
"negPct": {
"type": "number",
"description": "Percentage of negative posts (0–100)"
},
"neuPct": {
"type": "number",
"description": "Percentage of neutral posts (0–100)"
},
"count": {
"type": "integer",
"description": "Number of posts scored"
},
"examples": {
"type": "object",
"properties": {
"pos": {
"type": "array",
"items": {
"type": "string"
}
},
"neg": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"pos",
"neg"
],
"additionalProperties": true
}
},
"required": [
"score",
"posPct",
"negPct",
"neuPct",
"count",
"examples"
],
"additionalProperties": true
}🟢kol_leaderboard(window, limit)
Top KOL traders ranked by P&L for a given time window. Returns wallet, pnlUsd, winRate, trades, rank.
输入模式
{
"type": "object",
"properties": {
"window": {
"type": "string",
"enum": [
"24h",
"7d",
"30d"
],
"default": "7d"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}🟢pumpfun_quote_swap(inputMint, outputMint, amountIn, slippageBps, network)
Read-only price quote for a pump.fun AMM (PumpSwap) swap. No signing or tx sending. One of inputMint/outputMint must be wSOL (So11111111111111111111111111111111111111112). Only GRADUATED coins have an AMM pool; for a coin still on its bonding curve use get_bonding_curve instead. Pricing runs on the pool effective quote reserves (quote vault balance + pool.virtual_quote_reserves); the base side is the raw base vault balance. Returns amountOut, priceImpactBps, route, expiresAtMs, plus the reserves the quote was computed from so the number can be reproduced.
输入模式
{
"type": "object",
"properties": {
"inputMint": {
"type": "string",
"description": "Input token mint (base58)."
},
"outputMint": {
"type": "string",
"description": "Output token mint (base58)."
},
"amountIn": {
"type": "number",
"description": "Input amount in raw base units (lamports for SOL)."
},
"slippageBps": {
"type": "number",
"description": "Slippage tolerance in basis points (default 100 = 1%)."
},
"network": {
"type": "string",
"enum": [
"mainnet",
"devnet"
],
"default": "mainnet"
}
},
"required": [
"inputMint",
"outputMint",
"amountIn"
]
}输出模式
{
"type": "object",
"properties": {
"amountOut": {
"type": "string",
"description": "Expected output amount in raw base units"
},
"priceImpactBps": {
"type": "number",
"description": "Price impact in basis points"
},
"route": {
"type": "string",
"description": "AMM pool address the quote routes through (base58)"
},
"expiresAtMs": {
"type": "number",
"description": "Epoch ms after which the quote is stale"
},
"base_reserve": {
"type": "string",
"description": "Raw base vault balance. Unchanged by the virtual-reserve rollout."
},
"quote_reserve": {
"type": "string",
"description": "Raw quote vault balance, before virtual reserves are added."
},
"virtual_quote_reserves": {
"type": "string",
"description": "Pool.virtual_quote_reserves. Quote-side liquidity the pool carries outside its vault. 0 on non-launchpad pools."
},
"effective_quote_reserve": {
"type": "string",
"description": "quote_reserve + virtual_quote_reserves. This is what the quote is priced against."
}
},
"required": [
"amountOut",
"priceImpactBps",
"route",
"expiresAtMs"
],
"additionalProperties": true
}🟢social_x_post_impact(postUrl, mint, windowMin, network)
Correlate an X (Twitter) post to a memecoin price impact. Fetches post metadata via oEmbed (no API key) and computes price delta from the pump.fun bonding curve in a ±windowMin window around the post.
输入模式
{
"type": "object",
"properties": {
"postUrl": {
"type": "string",
"description": "X post URL (e.g. https://x.com/user/status/123)"
},
"mint": {
"type": "string",
"description": "Solana token mint address (base58)"
},
"windowMin": {
"type": "integer",
"default": 30,
"description": "±window in minutes around the post time"
},
"network": {
"type": "string",
"enum": [
"mainnet",
"devnet"
],
"default": "mainnet"
}
},
"required": [
"postUrl",
"mint"
]
}🟢get_coin_intel(mint, network)
Full Coin Intelligence snapshot for a pump.fun mint. Returns every signal the engine recorded during the observation window: bundle vs organic verdict, bubblemaps-style cluster connectivity, smart-money presence (with wallet labels and win-rates), dev behaviour, category/classification, news-meme detection with the matching headline, risk flags, and a 0–100 quality score. Also returns the outcome if the coin is old enough to be labeled (graduated/rugged/ATH multiple). This is the single highest-signal read for a trade decision — call this before entering any position.
输入模式
{
"type": "object",
"properties": {
"mint": {
"type": "string",
"description": "Solana mint address (base58)."
},
"network": {
"type": "string",
"enum": [
"mainnet",
"devnet"
],
"default": "mainnet"
}
},
"required": [
"mint"
]
}输出模式
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"mint": {
"type": "string"
},
"symbol": {
"type": "string"
},
"name": {
"type": "string"
},
"quality_score": {
"type": "number",
"description": "0–100 composite quality."
},
"verdict": {
"type": "object",
"properties": {
"key": {
"type": "string",
"enum": [
"strong",
"watch",
"caution",
"avoid"
]
},
"label": {
"type": "string"
},
"tone": {
"type": "string"
}
}
},
"risk_flags": {
"type": "array",
"items": {
"type": "string"
}
},
"category": {
"type": "string"
},
"is_news_meme": {
"type": "boolean"
},
"news_headline": {
"type": "string",
"nullable": true
},
"organic_score": {
"type": "number",
"description": "0–1, organic-demand likelihood."
},
"bundle_score": {
"type": "number",
"description": "0–1, coordinated-launch likelihood."
},
"bubblemap_connectivity": {
"type": "number",
"nullable": true,
"description": "0–1 wallet-cluster share. null = enrichment not yet run."
},
"smart_money_count": {
"type": "integer",
"description": "Proven wallets (score≥65) in this coin."
},
"smart_money_score": {
"type": "number",
"nullable": true
},
"smart_money_notable": {
"type": "array",
"items": {
"type": "object"
}
},
"dev_buy_sol": {
"type": "number",
"nullable": true
},
"dev_sold": {
"type": "boolean"
},
"unique_buyers": {
"type": "integer"
},
"outcome": {
"type": "object",
"nullable": true,
"description": "Labeled outcome if available (graduated, ath_multiple, etc)."
},
"oracle": {
"type": "object",
"nullable": true,
"description": "Fused Oracle conviction score (null if the Oracle engine has not yet scored this coin). Call get_oracle_conviction for the full read including who's-in roster and narrative.",
"properties": {
"score": {
"type": "number",
"description": "0–100 fused Oracle score."
},
"tier": {
"type": "string",
"enum": [
"prime",
"strong",
"lean",
"watch",
"avoid"
]
},
"pillars": {
"type": "object",
"description": "Per-pillar scores: pedigree, structure, narrative, momentum (each 0–100)."
},
"badges": {
"type": "array",
"items": {
"type": "string"
}
},
"reasons": {
"type": "array",
"items": {
"type": "string"
},
"description": "Natural-language explanation of the score."
}
}
},
"oracle_url": {
"type": "string",
"description": "Oracle deep-link for the coin — opens the Oracle war-room drawer directly."
}
},
"required": [
"found"
],
"additionalProperties": true
}🟢get_oracle_conviction(mint, network)
Oracle conviction score for a pump.fun mint: the fused 0-100 score the Oracle engine produces by combining four intelligence pillars: pedigree (who bought it), structure (organic vs bundle, holder concentration, bubblemaps connectivity), narrative (category, meme virality, news hook), and momentum (timing, velocity). Returns the tier (prime ≥86 / strong ≥72 / lean ≥54 / watch ≥36 / avoid), the per-pillar breakdown, the natural-language reasons that drove the score, the full "who's in" trader roster with reputation labels and win-rates, and the narrative read (category, virality, tags). Call this when you need the highest-confidence trade signal; it synthesises everything get_coin_intel exposes into one actionable score. Pairs with get_coin_intel for raw signals.
输入模式
{
"type": "object",
"properties": {
"mint": {
"type": "string",
"description": "Solana mint address (base58)."
},
"network": {
"type": "string",
"enum": [
"mainnet",
"devnet"
],
"default": "mainnet"
}
},
"required": [
"mint"
]
}输出模式
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"mint": {
"type": "string"
},
"symbol": {
"type": "string"
},
"name": {
"type": "string"
},
"conviction": {
"type": "object",
"nullable": true,
"description": "Fused conviction verdict. null if the Oracle has not yet scored this coin.",
"properties": {
"score": {
"type": "number",
"description": "0–100 fused Oracle score."
},
"tier": {
"type": "string",
"enum": [
"prime",
"strong",
"lean",
"watch",
"avoid"
],
"description": "prime ≥86, strong ≥72, lean ≥54, watch ≥36, avoid <36."
},
"pillars": {
"type": "object",
"properties": {
"pedigree": {
"type": "number",
"description": "Smart-money pedigree pillar score (0–100, weight 34%)."
},
"structure": {
"type": "number",
"description": "Structure pillar score: organic/bundle/concentration/connectivity (0–100, weight 30%)."
},
"narrative": {
"type": "number",
"description": "Narrative pillar score: category fit, meme virality, news hook (0–100, weight 18%)."
},
"momentum": {
"type": "number",
"description": "Momentum pillar score: velocity, buy/sell ratio, timing entropy (0–100, weight 18%)."
}
}
},
"structure_cap": {
"type": "boolean",
"description": "true when structural flags capped the score below raw pillar math."
},
"badges": {
"type": "array",
"items": {
"type": "string"
},
"description": "Short human-readable badges attached to this coin, e.g. \"Smart money: 3 wallets\"."
},
"reasons": {
"type": "array",
"items": {
"type": "string"
},
"description": "Natural-language sentences explaining every signal that drove the score."
},
"scored_at": {
"type": "string",
"description": "ISO timestamp when the conviction was last computed."
}
}
},
"narrative": {
"type": "object",
"nullable": true,
"description": "Narrative classification for the coin.",
"properties": {
"category": {
"type": "string",
"description": "E.g. meme, ai, tech, culture, news, defi."
},
"narrative": {
"type": "string",
"description": "One-sentence description of the coin's story or hook."
},
"virality": {
"type": "number",
"nullable": true,
"description": "0–1 estimated virality of the narrative."
},
"confidence": {
"type": "number",
"nullable": true
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"source": {
"type": "string",
"description": "Classifier that produced the narrative read."
}
}
},
"whos_in": {
"type": "array",
"description": "Classified trader roster — every wallet that touched this coin, annotated with their reputation.",
"items": {
"type": "object",
"properties": {
"wallet": {
"type": "string"
},
"label": {
"type": "string",
"description": "Trader archetype: smart_money, kol, sniper, whale, early_degen, recycler, dca_buyer, dca_seller, bot, unproven."
},
"score": {
"type": "number",
"nullable": true,
"description": "Brain reputation score (0–100)."
},
"win_rate": {
"type": "number",
"nullable": true,
"description": "Historical win-rate (0–1)."
},
"early_win_rate": {
"type": "number",
"nullable": true,
"description": "Win-rate on early entries specifically."
},
"source": {
"type": "string",
"nullable": true,
"description": "\"brain\" (trained) or \"gmgn\" (seed corpus)."
},
"tag": {
"type": "string",
"nullable": true,
"description": "Social handle when known (from seed corpus)."
},
"buy_sol": {
"type": "number",
"description": "Total SOL bought."
},
"sell_sol": {
"type": "number",
"description": "Total SOL sold."
},
"is_creator": {
"type": "boolean"
},
"funder": {
"type": "string",
"nullable": true,
"description": "The wallet that funded this one (if identified)."
}
}
}
},
"outcome": {
"type": "object",
"nullable": true,
"description": "Labeled outcome if available.",
"properties": {
"outcome": {
"type": "string"
},
"graduated": {
"type": "boolean"
},
"rugged": {
"type": "boolean"
},
"ath_market_cap_usd": {
"type": "number",
"nullable": true
},
"ath_multiple": {
"type": "number",
"nullable": true
}
}
},
"url": {
"type": "string",
"description": "Oracle deep-link URL for this coin."
}
},
"required": [
"found"
],
"additionalProperties": true
}🟡pumpfun_upload_metadata(name, symbol, description, image_url, twitter, ...)
Upload coin metadata (name, symbol, description, image) to IPFS and get back a pump.fun-ready metadata URI. Call this before launching a coin — pass the returned uri to the launch-agent endpoint or the studio launch flow. Requires a valid bearer token (API key). Image may be a public HTTPS URL or a base64 data URI (max 10 MB). The returned uri is a permanent ipfs:// link; the call is idempotent for the same content.
输入模式
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Coin name (1–32 chars)."
},
"symbol": {
"type": "string",
"description": "Ticker symbol (1–10 chars, no $)."
},
"description": {
"type": "string",
"description": "Coin description (max 500 chars)."
},
"image_url": {
"type": "string",
"description": "Image for the coin icon. Public HTTPS URL or base64 data URI (data:image/png;base64,…). Square image, at least 400×400 px, under 5 MB."
},
"twitter": {
"type": "string",
"description": "Twitter/X handle or URL (optional)."
},
"telegram": {
"type": "string",
"description": "Telegram URL (optional)."
},
"website": {
"type": "string",
"description": "Website URL (optional)."
}
},
"required": [
"name",
"symbol",
"description",
"image_url"
]
}输出模式
{
"type": "object",
"properties": {
"uri": {
"type": "string",
"description": "ipfs:// URI ready for the pump.fun launch-agent `uri` field."
},
"cid": {
"type": "string",
"description": "IPFS CID of the metadata JSON."
},
"image_cid": {
"type": "string",
"description": "IPFS CID of the uploaded image."
},
"provider": {
"type": "string",
"description": "IPFS provider used."
}
},
"required": [
"uri",
"cid"
],
"additionalProperties": false
}🟢pumpfun_bot_status
Returns the configuration and health status of the pump.fun indexer backend. Always available — does not require PUMPFUN_BOT_URL.
输入模式
{
"type": "object",
"properties": {},
"required": []
}输出模式
{
"type": "object",
"properties": {
"configured": {
"type": "boolean",
"description": "true when PUMPFUN_BOT_URL is set on the server"
},
"healthy": {
"type": "boolean",
"description": "true when the indexer answered the health ping"
},
"latencyMs": {
"type": "number",
"description": "Round-trip ms of the health ping (configured backends only)"
},
"error": {
"type": "string",
"description": "Failure reason when healthy is false"
},
"message": {
"type": "string",
"description": "Human-readable note when the indexer is unconfigured"
}
},
"required": [
"configured",
"healthy"
],
"additionalProperties": true
}社区
证据